다음을 통해 공유


스토리지의 Event Grid 이벤트에서 일괄 처리 엔드포인트 실행

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

Event Grid는 다양한 Azure 서비스 및 애플리케이션에서 이벤트를 쉽게 관리하는 데 사용할 수 있는 완전 관리형 서비스입니다. 이 서비스는 이벤트 기반 및 서버리스 애플리케이션을 빌드하는 방법을 간소화합니다. 이 자습서에서는 스토리지 계정에서 파일을 만드는 즉시 처리하도록 일괄 처리 엔드포인트의 작업을 트리거하는 방법을 보여 줍니다. 아키텍처는 논리 앱 워크플로를 사용하여 해당 이벤트를 구독하고 엔드포인트를 트리거합니다.

다음 다이어그램은 이 솔루션의 아키텍처를 보여줍니다.

개념 다이어그램은 이 아키텍처의 구성 요소를 보여 줍니다.

다음 단계에서는 이 솔루션의 개략적인 단계를 설명합니다.

  1. 특정 스토리지 계정 에서 새 Blob을 만들면 파일 생성 이벤트가 트리거됩니다.

  2. 이벤트는 Event Grid로 전송되어 모든 구독자에게 처리됩니다.

  3. 논리 앱 워크플로는 해당 이벤트를 구독하고 수신 대기합니다.

    스토리지 계정에는 여러 데이터 자산이 포함될 수 있으므로 스토리지 계정의 특정 폴더에서 발생하는 이벤트에만 반응하도록 이벤트 필터링이 적용됩니다. 필요한 경우 파일 확장자를 기반으로 추가 필터링을 수행할 수 있습니다.

  4. 논리 앱 워크플로가 트리거되고 다음 작업을 수행합니다.

    1. 서비스 주체의 자격 증명을 사용하여 일괄 처리 엔드포인트를 호출하는 권한 부여 토큰을 가져옵니다.

    2. 새로 만든 파일을 입력으로 사용하여 일괄 처리 엔드포인트(기본 배포)를 트리거합니다.

  5. 일괄 처리 엔드포인트는 파일을 처리하기 위해 만든 작업의 이름을 반환합니다.

Important

Event Grid와 연결하여 일괄 처리 엔드포인트를 호출하는 논리 앱 워크플로를 사용하는 경우 스토리지 계정에서 만든 각 Blob 파일하나의 작업을 생성합니다. 일괄 처리 엔드포인트는 파일 수준에서 작업을 배포하므로 병렬 처리가 발생하지 않습니다. 대신 일괄 처리 엔드포인트의 기능을 사용하여 동일한 컴퓨팅 클러스터에서 여러 작업을 실행합니다. 자동 방식으로 전체 폴더에서 작업을 실행해야 하는 경우 Azure Data Factory에서 일괄 처리 엔드포인트 호출로 전환하는 것이 좋습니다.

필수 조건

  • 일괄 처리 엔드포인트로 올바르게 배포된 모델이 있습니다. 필요한 경우 파이프라인 구성 요소 배포를 사용하도록 이 아키텍처를 확장할 수 있습니다 .

  • 일괄 처리 배포는 라는 batch-cluster컴퓨팅 클러스터에서 실행됩니다.

  • 만드는 논리 앱은 REST를 사용하여 Azure Machine Learning 일괄 처리 엔드포인트와 통신합니다.

    일괄 처리 엔드포인트에 REST API를 사용하는 방법에 대한 자세한 내용은 일괄 처리 엔드포인트에 대한 작업 및 입력 데이터 만들기를 참조 하세요.

일괄 처리 엔드포인트에 대해 인증

Azure Logic Apps는 HTTP 작업을 사용하여 일괄 처리 엔드포인트의 REST API를 호출할 수 있습니다. 일괄 처리 엔드포인트는 권한 부여를 위해 Microsoft Entra ID를 지원하므로 API에 대한 요청에는 적절한 인증 처리가 필요합니다.

이 자습서에서는 이 시나리오에서 인증 및 일괄 처리 엔드포인트와의 상호 작용에 서비스 주체를 사용합니다.

  1. Microsoft Entra ID를 사용하여 애플리케이션을 등록하고 서비스 주체를 만들어 서비스 주체를 만듭니다.

  2. 옵션 3: 새 클라이언트 암호를 만들어 인증에 사용할 비밀을 만듭니다.

  3. 생성된 클라이언트 비밀 값을 한 번만 저장해야 합니다.

  4. 애플리케이션의 개요 창에 client ID 저장하고 tenant id 저장해야 합니다.

  5. 액세스 권한을 부여하여 서비스 주체에게 작업 영역에 대한 액세스 권한을 부여합니다. 이 예제에서는 서비스 주체에 다음이 필요합니다.

    • 작업 영역에서 일괄 처리 배포를 읽고 작업을 수행할 수 있는 권한
    • 데이터 저장소에서 읽고 쓸 수 있는 권한

데이터 액세스 사용

배포 작업에 보내려는 입력 데이터를 나타내기 위해 이 자습서에서는 Event Grid에서 제공하는 클라우드 URI를 사용합니다. Batch 엔드포인트는 컴퓨팅의 ID를 사용하여 데이터를 탑재하는 동시에 탑재된 데이터를 읽기 위해 작업의 ID를 유지합니다. 따라서 사용자가 할당한 관리 ID를 컴퓨팅 클러스터에 할당하고 클러스터에 기본 데이터를 탑재할 수 있는 액세스 권한이 있는지 확인해야 합니다. 데이터 액세스를 보장하려면 다음 단계를 수행합니다.

  1. 관리 ID 리소스 만들기:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. 만든 관리 ID를 사용하도록 컴퓨팅 클러스터를 업데이트합니다.

    참고 항목

    이 예제에서는 엔드포인트의 기본 배포에 사용되는 명명된 cpu-cluster 컴퓨팅 클러스터가 있다고 가정합니다.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. Azure Portal에서 관리 ID에 데이터를 읽을 수 있는 올바른 권한이 있는지 확인합니다.

    스토리지 서비스에 액세스하려면 스토리지 계정에 대한 스토리지 Blob 데이터 판독기 이상의 액세스 권한이 있어야 합니다. 스토리지 계정 소유자만 Azure Portal을 통해 액세스 수준을 변경할 수 있습니다.

논리 앱 만들기

  1. Azure Portal의 Azure 홈페이지에서 리소스 만들기를 선택합니다.

  2. Azure Marketplace 메뉴에서 통합>논리 앱을 선택합니다.

    통합 및 논리 앱에 대해 선택한 옵션이 있는 Azure Marketplace 메뉴를 보여 주는 스크린샷

  3. 논리 앱 만들기 창의 기본 탭에서 논리 앱 리소스에 대한 다음 정보를 제공합니다.

    속성 필요함 Description
    구독 <Azure-subscription-name> Azure 구독 이름. 이 예에서는 종량제를 사용합니다.
    리소스 그룹 LA-TravelTime-RG 논리 앱 리소스 및 관련 리소스를 만드는 Azure 리소스 그룹입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호((, )), 마침표(.)만 포함할 수 있습니다.
    이름 LA-TravelTime 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호((, )) 및 마침표(.)만 포함할 수 있는 논리 앱 리소스 이름입니다.

    Azure Portal, 논리 앱 만들기 창 및 새 논리 앱 리소스에 대한 정보를 보여 주는 스크린샷.

  4. 선택을 계속하기 전에 계획 섹션으로 이동합니다. 계획 유형의 경우 소비를 선택하여 다중 테넌트 Azure Logic Apps에서 실행되는 소비 논리 앱 워크플로에 대한 설정만 표시합니다.

    Important

    프라이빗 링크 사용 작업 영역의 경우 프라이빗 네트워킹 구성을 허용하는 Azure Logic Apps에 대한 표준 계획을 사용해야 합니다.

    플랜 유형 속성은 사용할 청구 모델도 지정합니다.

    플랜 유형 설명
    Standard 이 논리 앱 유형은 기본 선택이며 단일 테넌트 Azure Logic Apps에서 실행되며 표준 가격 책정 모델을 사용합니다.
    소비 이 논리 앱 유형은 글로벌 다중 테넌트 Azure Logic Apps에서 실행되며 소비 가격 책정 모델을 사용합니다.
  5. 이제 다음 선택을 계속합니다.

    속성 필요함 설명
    지역 미국 서부 앱 정보를 저장할 Azure 데이터 센터 지역입니다. 이 예제에서는 Azure 미국 서부 지역에 샘플 논리 앱을 배포합니다.

    참고: 구독이 통합 서비스 환경과 연결된 경우 이 목록에 해당 환경이 포함됩니다.
    로그 분석 사용 문제 이 옵션은 사용량 논리 앱 유형을 선택한 경우에만 나타나고 적용됩니다. 진단 로깅을 사용하도록 설정하려는 경우에만 이 옵션을 변경합니다. 이 자습서에서는 기본 선택을 유지합니다.
  6. 완료되면 검토 + 만들기를 선택합니다. Azure에서 논리 앱 리소스에 대한 정보의 유효성을 검사한 후 만들기를 선택합니다.

  7. Azure가 앱을 배포한 후 리소스로 이동을 선택합니다.

    Azure에서 논리 앱에 대한 워크플로 디자이너를 엽니다.

워크플로 매개 변수 구성

이 논리 앱 워크플로는 매개 변수를 사용하여 일괄 처리 배포를 실행하는 데 필요한 특정 정보를 저장합니다.

  1. 워크플로 디자이너 도구 모음에서 매개 변수를 선택합니다.

    스크린샷은 워크플로에 필요한 매개 변수를 정의하기 위한 매개 변수 창을 보여줍니다.

  2. 매개 변수 창에서 매개 변수 만들기를 선택하고 만들 각 매개 변수에 대한 다음 정보를 제공합니다.

    일괄 처리 엔드포인트에 대한 인증에 구성된 값을 사용합니다.

    매개 변수 이름 설명 샘플 값
    tenant_id 엔드포인트가 배포되는 테넌트 ID입니다. 00000000-0000-0000-00000000
    client_id 엔드포인트를 호출하는 데 사용되는 서비스 주체의 클라이언트 ID입니다. 00000000-0000-0000-00000000
    client_secret 엔드포인트를 호출하는 데 사용되는 서비스 주체의 클라이언트 암호입니다. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri 엔드포인트 채점 URI입니다.

    중요: 이 URI는 실행하려는 엔드포인트용입니다. 엔드포인트에는 기본 배포가 구성되어 있어야 합니다.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    다음 예제에서는 샘플 매개 변수를 보여줍니다.

    스크린샷은 디자이너에서 하나의 매개 변수를 추가하는 방법을 보여줍니다.

    자세한 내용은 Azure Logic Apps에서 워크플로 입력에 대한 환경 간 매개 변수 만들기를 참조 하세요.

트리거 추가

스토리지 계정의 특정 폴더(데이터 자산)에 새 파일을 만들 때마다 논리 앱 워크플로를 트리거하려고 합니다. 논리 앱은 이벤트의 정보를 사용하여 일괄 처리 엔드포인트를 호출하고 처리할 특정 파일을 전달합니다.

  1. 워크플로 디자이너에서 다음 일반 단계에 따라 리소스 이벤트가 발생할 때라는 Event Grid 트리거를 추가합니다.

  2. 연결 정보 상자에서 사용할 인증 유형을 선택한 다음 로그인을 선택합니다.

  3. 트리거 상자에서 다음 정보를 제공합니다.

    속성 설명
    리소스 종류 Microsoft.Storage.StorageAccounts 이벤트를 내보내는 리소스 유형
    구독 구독 이름 스토리지 계정에 대한 구독입니다.
    리소스 이름 스토리지 계정 이름 파일이 생성되는 스토리지 계정의 이름입니다.
    이벤트 유형 항목 Microsoft.Storage.BlobCreated 이벤트 유형입니다.
  4. 고급 매개 변수 목록에서 접두사 필터를 선택하고 다음 값을 제공합니다.

    /blobServices/default/containers/<container-name>/blobs/<path-to-data-folder>

    Important

    접두사 필터 속성을 사용하면 표시된 특정 경로에 Blob이 만들어지는 경우에만 Event Grid에서 워크플로에 알릴 수 있습니다. 이 경우 선택한 스토리지 계정에 있는 컨테이너>< 이름 내의 path-to-data-folder로< 지정된 폴더>의 일부 외부 프로세스에서 파일이 만들어지는 것으로 가정합니다. 데이터 위치와 일치하도록 이 매개 변수를 구성합니다. 그렇지 않으면 스토리지 계정의 모든 위치에서 생성된 파일에 대해 이벤트가 발생합니다. 자세한 내용은 Event Grid에 대한 이벤트 필터링을 참조 하세요.

    다음 예제에서는 트리거가 표시되는 방법을 보여 줍니다.

    논리 앱의 트리거 활동 스크린샷

작업 구성

  1. 리소스 이벤트가 트리거되면 다음 일반 단계에 따라 HTTP 작업을 추가합니다. 작업의 이름을 권한 부여로 바꿉니다.

  2. 권한 부여 작업에서 다음 정보를 제공합니다.

    속성 주의
    방법 POST HTTP 메서드
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') 이 식을 입력하려면 URI 상자 내에서 선택합니다. 표시되는 옵션에서 식 편집기(수식 아이콘)를 선택합니다.
    헤더 값이 application/x-www-form-urlencodedContent-Type
    본문 concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') 이 식을 입력하려면 본문 상자 내에서 선택합니다. 표시되는 옵션에서 식 편집기(수식 아이콘)를 선택합니다.

    다음 예제에서는 샘플 권한 부여 작업을 보여 줍니다.

    스크린샷은 논리 앱 워크플로의 샘플 권한 부여 작업을 보여줍니다.

  3. 권한 부여 작업에서 다른 HTTP 작업을 추가하고 제목 이름을 Invoke로 바꿉니다.

  4. 호출 작업에서 다음 정보를 제공합니다.

    속성 주의
    방법 POST HTTP 메서드
    URI endpoint_uri URI 상자 내에서 선택한 다음 매개 변수 아래에서 endpoint_uri 선택합니다.
    헤더 값이 application/jsonContent-Type
    헤더 값이 concat('Bearer ', body('Authorize')['access_token'])Authorization 이 식을 입력하려면 머리글 상자 내에서 선택합니다. 표시되는 옵션에서 식 편집기(수식 아이콘)를 선택합니다.
  5. 본문 상자 내부를 선택하고 표시되는 옵션에서 식 편집기(수식 아이콘)를 선택하여 다음 식을 입력합니다.

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    이전 페이로드는 모델 배포해당합니다. 파이프라인 구성 요소 배포사용하는 경우 파이프라인의 입력에 대한 기대에 따라 형식을 조정합니다. REST 호출에서 입력을 구성하는 방법에 대한 자세한 내용은 REST(일괄 처리 엔드포인트)에 대한 작업 및 입력 데이터 만들기를 참조하세요.

    다음 예제에서는 샘플 호출 작업을 보여 줍니다.

    스크린샷은 논리 앱 워크플로의 샘플 호출 작업을 보여줍니다.

    참고 항목

    호출 작업은 일괄 처리 작업을 트리거하지만 작업이 완료될 때까지 기다리지 않습니다. 기본적으로 Azure Logic Apps는 장기 실행 애플리케이션에 대해 설정되지 않습니다. 작업이 완료될 때까지 기다려야 하는 경우 Azure Data Factory에서 일괄 처리 엔드포인트 실행으로 전환하는 것이 좋습니다.

  6. 완료되면 워크플로를 저장합니다.

    논리 앱 워크플로를 실행할 준비가 되었으며 지정된 경로 아래에 새 파일이 생성될 때마다 자동으로 트리거됩니다.

  7. 앱이 이벤트를 성공적으로 수신했는지 확인하려면 앱의 실행 기록을 확인합니다.

    스크린샷은 논리 앱 워크플로에 대한 실행 기록을 보여줍니다.

다음 단계