다음을 통해 공유


스토리지 이벤트에 대한 응답으로 파이프라인을 실행하는 트리거 만들기

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 Azure Data Factory 또는 Azure Synapse Analytics 파이프라인에서 만들 수 있는 스토리지 이벤트 트리거에 대해 설명합니다.

이벤트 기반 아키텍처는 프로덕션, 검색, 소비 및 이벤트에 대한 응답이 포함된 일반적인 데이터 통합 패턴입니다. 데이터 통합 시나리오에서는 고객이 Azure Blob Storage 계정의 파일 도착 또는 삭제와 같은 Azure Storage 계정의 이벤트에서 트리거되는 파이프라인을 트리거해야 하는 경우가 많습니다. Data Factory 및 Azure Synapse Analytics 파이프라인은 기본적으로 Azure Event Grid와 통합되어 해당 이벤트에서 파이프라인을 트리거할 수 있습니다.

스토리지 이벤트 트리거 고려 사항

스토리지 이벤트 트리거를 사용하는 경우 다음 사항을 고려합니다.

  • 이 문서에서 설명하는 통합은 Azure Event Grid에 따라 달라집니다. 구독이 Event Grid 리소스 공급자에 등록되어 있는지 확인합니다. 자세한 내용은 리소스 공급자 및 형식을 참조하세요. Microsoft.EventGrid/eventSubscriptions/ 작업을 수행할 수 있어야 합니다. 이 작업은 EventGrid EventSubscription Contributor 기본 제공 역할의 일부입니다.
  • Azure Synapse Analytics에서 이 기능을 사용하는 경우 구독도 Data Factory 리소스 공급자에 등록해야 합니다. 그렇지 않으면 "이벤트 구독을 만들지 못했습니다”라는 오류가 표시됩니다.
  • Blob 스토리지 계정이 프라이빗 엔드포인트 뒤에 있고 공용 네트워크 액세스를 차단하는 경우 Blob 스토리지에서 Event Grid로 통신할 수 있도록 네트워크 규칙을 구성해야 합니다. 스토리지 설명서에 따라 Event Grid와 같은 신뢰할 수 있는 Azure 서비스에 스토리지 액세스 권한을 부여하거나 Event Grid 설명서에 따라 VNet 주소 공간에 매핑되는 Event Grid에 대한 프라이빗 엔드포인트를 구성할 수 있습니다.
  • 스토리지 이벤트 트리거는 현재 Azure Data Lake Storage Gen2 및 범용 버전 2 스토리지 계정만 지원합니다. SFTP(보안 파일 전송 프로토콜) Storage 이벤트로 작업하는 경우 필터링 섹션에서도 SFTP Data API를 지정해야 합니다. Event Grid 제한으로 인해 Data Factory는 스토리지 계정당 최대 500개의 스토리지 이벤트 트리거를 지원합니다.
  • 새 스토리지 이벤트 트리거를 만들거나 기존 스토리지 이벤트 트리거를 수정하려면, 서비스에 로그인하고 스토리지 이벤트 트리거를 게시하는 데 사용된 Azure 계정에서 스토리지 계정에 적절한 역할 기반 액세스 제어(Azure RBAC) 권한을 보유하고 있어야 합니다. 다른 권한은 필요하지 않습니다. Azure Data Factory 및 Azure Synapse Analytics의 서비스 주체에게는 스토리지 계정 또는 Event Grid에 대한 특별 권한이 필요하지 않습니다. 액세스 제어에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하세요.
  • 스토리지 계정에 Azure Resource Manager 잠금을 적용한 경우 Blob 트리거가 Blob을 만들거나 삭제하는 기능에 영향을 줄 수 있습니다. ReadOnly 잠금은 생성 및 삭제를 모두 방지하는 반면 DoNotDelete 잠금은 삭제를 방지합니다. 트리거와 관련된 문제를 방지하려면 이러한 제한 사항을 고려해야 합니다.
  • 파일 도착 트리거는 데이터 흐름 싱크의 트리거 메커니즘으로 권장되지 않습니다. 데이터 흐름은 데이터 처리가 완료되기 전에 실수로 파일 도착 이벤트를 트리거할 수 있는 대상 폴더에서 다양한 파일 이름 바꾸기 및 파티션 파일 섞기 작업을 수행합니다.

UI로 트리거 만들기

이 섹션에서는 Azure Data Factory 및 Azure Synapse Analytics 파이프라인 UI(사용자 인터페이스) 내에서 스토리지 이벤트 트리거를 만드는 방법을 살펴봅니다.

  1. Data Factory의 편집 탭 또는 Azure Synapse Analytics의 통합 탭으로 전환합니다.

  2. 메뉴에서 트리거를 선택한 다음, 새로 만들기/편집을 선택합니다.

  3. 트리거 추가 페이지에서 트리거 선택, + 새로 만들기를 차례로 선택합니다.

  4. 트리거 유형 스토리지 이벤트를 선택합니다.

  5. Azure 구독 드롭다운 목록에서 또는 스토리지 계정 리소스 ID를 수동으로 사용하여 스토리지 계정을 선택합니다. 이벤트가 발생하길 원하는 컨테이너를 선택하세요. 컨테이너 선택은 필수이지만 모든 컨테이너를 선택하면 많은 이벤트가 발생할 수 있습니다.

  6. Blob path begins withBlob path begins with 속성을 사용하면 이벤트를 수신할 컨테이너, 폴더 및 Blob 이름을 지정할 수 있습니다. 스토리지 이벤트 트리거를 사용하려면 하나 이상의 이러한 속성을 정의해야 합니다. 이 문서의 뒷부분에 있는 예제와 같이 Blob path begins withBlob path begins with 속성 모두에 다양한 패턴을 사용할 수 있습니다.

    • Blob path begins with: Blob 경로는 폴더 경로로 시작해야 합니다. 유효한 값은 2018/2018/april/shoes.csv이고 컨테이너를 선택하지 않으면 이 필드를 선택할 수 없습니다.
    • Blob path begins with: Blob 경로는 파일 이름 또는 확장명으로 끝나야 합니다. 유효한 값은 shoes.csv.csv이고 컨테이너 및 폴더 이름은 지정된 경우 /blobs/ 세그먼트로 구분해야 합니다. 예를 들어 이름이 orders인 컨테이너는 /orders/blobs/2018/april/shoes.csv 값을 가질 수 있습니다. 컨테이너의 폴더를 지정하려면 선행 / 문자를 생략합니다. 예를 들어 april/shoes.csv은(는) 모든 컨테이너에서 이름이 april인 폴더에 있는 이름이 shoes.csv인 모든 파일에 대해 이벤트를 트리거합니다.

    Blob path begins withBlob path ends with은(는) 스토리지 이벤트 트리거에서 허용되는 유일한 패턴 일치입니다. 다른 유형의 와일드카드 일치는 트리거 유형에 대해 지원되지 않습니다.

  7. 트리거가 Blob 생성 이벤트, Blob 삭제 이벤트 또는 둘 다에 응답할지 선택합니다. 지정된 스토리지 위치에서 각각의 이벤트는 트리거와 연결된 Data Factory 및 Azure Synapse Analytics 파이프라인을 트리거합니다.

    스토리지 이벤트 트리거 만들기 페이지를 보여 주는 스크린샷.

  8. 트리거가 0바이트인 Blob을 무시할지 여부를 선택합니다.

  9. 트리거를 구성한 후 다음: 데이터 미리 보기를 선택합니다. 이 화면에는 스토리지 이벤트 트리거 구성과 일치하는 기존 Blob이 표시됩니다. 특정 필터가 있는지 확인합니다. 너무 광범위한 필터를 구성하면 많은 생성되거나 삭제된 파일에 대한 일치를 수행하므로 비용에 상당한 영향을 미칠 수 있습니다. 필터 조건이 확인되면 마침을 선택합니다.

    스토리지 이벤트 트리거 미리 보기 페이지를 보여 주는 스크린샷.

  10. 파이프라인을 이 트리거에 연결하려면 파이프라인 캔버스로 이동하고 트리거>새로 만들기/편집을 선택합니다. 측면 창이 나타나면 트리거 선택 드롭다운 목록을 선택하고 만든 트리거를 선택합니다. 다음: 데이터 미리 보기를 선택하여 구성이 올바른지 확인합니다. 그런 다음 다음을 선택하여 데이터 미리 보기가 올바른지 확인합니다.

  11. 파이프라인에 매개 변수가 있는 경우 트리거 실행 매개 변수 측 탐색에서 지정할 수 있습니다. 스토리지 이벤트 트리거는 Blob의 폴더 경로와 파일 이름을 @triggerBody().folderPath@triggerBody().fileName 속성에 캡처합니다. 파이프라인에서 이러한 속성 값을 사용하려면 속성을 파이프라인 매개 변수에 매핑해야 합니다. 속성을 매개 변수에 매핑한 후 파이프라인 전체에서 @pipeline().parameters.parameterName 식을 통해 트리거가 캡처한 값에 액세스할 수 있습니다. 자세한 설명은 파이프라인의 참조 트리거 메타데이터를 참조하세요.

    파이프라인 매개 변수에 대한 스토리지 이벤트 트리거 매핑 속성을 보여주는 스크린샷.

    위의 예제에서 트리거는 컨테이너 샘플 데이터의 폴더 이벤트 테스트에서 .csv로 끝나는 Blob 경로를 만들 때 발생하도록 구성됩니다. folderPathfileName 속성은 새 Blob의 위치를 캡처합니다. 예를 들어 MoviesDB.csv가 sample-data/event-testing 경로에 추가된 경우 @triggerBody().folderPath 값은 sample-data/event-testing, @triggerBody().fileName 값은 moviesDB.csv이(가) 됩니다. 이 값은 예제에서 sourceFoldersourceFile 파이프라인 매개 변수에 매핑되며 파이프라인 전체에서 각각 @pipeline().parameters.sourceFolder@pipeline().parameters.sourceFile로 사용될 수 있습니다.

  12. 완료되면 마침을 선택합니다.

JSON 스키마

다음 표는 스토리지 이벤트 트리거와 관련된 스키마 요소의 개요를 제공합니다.

JSON 요소 설명 Type 허용된 값 필수
scope 스토리지 계정의 Azure Resource Manager 리소스 ID입니다. 문자열 Azure Resource Manager ID 예.
events 이 트리거를 발생시키는 이벤트 유형입니다. 배열 Microsoft.Storage.BlobCreated, Microsoft.Storage.BlobDeleted 예, 이러한 값의 조합입니다.
blobPathBeginsWith Blob 경로는 발생시킬 트리거에 제공된 패턴으로 시작해야 합니다. 예를 들어 /records/blobs/december/records 컨테이너 아래의 december 폴더에서 Blob에 대한 트리거만을 시작합니다. 문자열 blobPathBeginsWith 또는 blobPathEndsWith 속성 중 하나 이상에 대한 값을 제공합니다.
blobPathEndsWith Blob 경로는 발생시킬 트리거에 제공된 패턴으로 끝나야 합니다. 예를 들어 december/boxes.csvdecember 폴더에서 boxes라는 이름의 Blob에 대한 트리거만을 시작합니다. 문자열 blobPathBeginsWith 또는 blobPathEndsWith 속성 중 하나 이상에 대한 값을 제공합니다.
ignoreEmptyBlobs 0 바이트 Blob이 파이프라인 실행을 트리거하는지 여부입니다. 이 매개 변수는 기본적으로 true로 설정됩니다. Boolean true 또는 false 아니요.

스토리지 이벤트 트리거의 예제

이 섹션에는 스토리지 이벤트 트리거 설정의 예제가 제공됩니다.

Important

다음 예제에 표시된 대로 컨테이너 및 폴더, 컨테이너 및 파일, 컨테이너, 폴더 및 파일을 지정할 때마다 경로의 /blobs/ 세그먼트를 포함해야 합니다. blobPathBeginsWith의 경우 UI는 트리거 JSON에서 폴더와 컨테이너 이름 사이에 /blobs/을(를) 자동으로 추가합니다.

속성 예제 설명
Blob path begins with /containername/ 컨테이너에서 모든 Blob에 대한 이벤트를 받습니다.
Blob path begins with /containername/blobs/foldername/ containername 컨테이너 및 foldername 폴더에서 모든 Blob에 대한 이벤트를 받습니다.
Blob path begins with /containername/blobs/foldername/subfoldername/ 하위 폴더를 참조할 수도 있습니다.
Blob path begins with /containername/blobs/foldername/file.txt containername 컨테이너 아래의 foldername 폴더에서 file.txt라는 Blob에 대한 이벤트를 받습니다.
Blob path ends with file.txt 모든 경로에서 file.txt라는 Blob에 대한 이벤트를 받습니다.
Blob path ends with /containername/blobs/file.txt containername 컨테이너 아래에서 file.txt(이)라는 이름의 Blob에 대한 이벤트를 받습니다.
Blob path ends with foldername/file.txt 모든 컨테이너 아래의 foldername 폴더에서 file.txt(이)라는 이름의 Blob에 대한 이벤트를 받습니다.

역할 기반 액세스 제어

Data Factory 및 Azure Synapse Analytics 파이프라인은 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 Blob 이벤트에 연결된 파이프라인의 수신 대기를 위한 무단 액세스, 업데이트를 위한 구독, 트리거가 엄격히 금지되도록 합니다.

  • 새 스토리지 이벤트 트리거를 만들거나 기존 스토리지 이벤트 트리거를 업데이트하려면, 서비스에 로그인한 Azure 계정에서 관련 스토리지 계정에 적절한 액세스 권한을 보유하고 있어야 합니다. 그렇지 않으면 작업이 실패하고 “액세스가 거부됨”이라는 메시지가 나타납니다.
  • Data Factory 및 Azure Synapse Analytics에서는 Event Grid에 대한 특별 권한이 필요하지 않고, 작업의 Data Factory 또는 Azure Synapse Analytics 서비스 주체에게 특별 RBAC 권한을 할당할 필요가 없습니다.

다음 RBAC 설정은 스토리지 이벤트 트리거에 대해 작동합니다.

  • 스토리지 계정에 대한 소유자 역할
  • 스토리지 계정에 대한 기여자 역할
  • Microsoft.EventGrid/EventSubscriptions/Write 스토리지 계정에 대한 권한 /subscriptions/####/resourceGroups/####/providers/Microsoft.Storage/storageAccounts/storageAccountName

특별한 사항

  • 예를 들어 개발 환경에서 데이터 팩터리를 작성하는 경우 로그인한 Azure 계정에는 위의 권한이 있어야 합니다.
  • 연속 통합 및 지속적인 업데이트를 통해 게시하는 경우 Azure Resource Manager 템플릿을 테스트 또는 프로덕션 팩터리에 게시하는 데 사용되는 계정에는 위의 권한이 있어야 합니다.

서비스가 두 가지 약속을 어떻게 이행하는지 이해하려면 한 걸음 뒤로 물러서서 현장 뒤에서 살짝 엿보도록 하겠습니다. Data Factory/Azure Synapse Analytics, Storage, Event Grid 간의 통합을 위한 대략적인 워크플로는 다음과 같습니다.

새 스토리지 이벤트 트리거 만들기

이 대략적인 워크플로에서는 Data Factory를 Event Grid와 상호 작용하여 스토리지 이벤트 트리거를 만드는 방법에 대해 설명합니다. 데이터 흐름은 Azure Synapse Analytics에서 동일하며, Azure Synapse Analytics 파이프라인은 다음 다이어그램에서 Data Factory의 역할을 수행합니다.

스토리지 이벤트 트리거 만들기의 워크플로를 보여 주는 다이어그램.

워크플로에서 눈에 띄는 두 가지 설명은 다음과 같습니다.

  • Data Factory 및 Azure Synapse Analytics는 스토리지 계정과 직접 접촉하지 않습니다. 구독을 만드는 요청은 대신 Event Grid에 의해 릴레이되고 처리됩니다. 이 단계에서는 서비스에 스토리지 계정에 액세스할 수 있는 권한이 필요하지 않습니다.
  • 서비스 내에서 액세스를 제어하고 권한을 확인합니다. 서비스에서 스토리지 이벤트에 대한 구독 요청을 보내기 전에 사용자 권한을 확인합니다. 구체적으로 말하면, Azure 계정에 로그인하여 스토리지 이벤트 트리거를 만드는 경우 관련 스토리지 계정에 대한 적절한 액세스 권한이 있는지 확인합니다. 권한 검사에 실패하는 경우 트리거 생성도 실패합니다.

스토리지 이벤트에서 파이프라인 실행 트리거

이 대략적인 워크플로는 스토리지 이벤트에서 Event Grid를 통해 파이프라인 실행을 트리거하는 방법을 설명합니다. Azure Synapse Analytics의 경우 데이터 흐름은 동일하며, Azure Synapse Analytics 파이프라인은 다음 다이어그램에서 Data Factory의 역할을 수행합니다.

파이프라인 실행을 트리거하는 스토리지 이벤트의 워크플로를 보여 주는 다이어그램.

서비스 내에서 파이프라인을 트리거하는 이벤트와 관련된 워크플로에서는 주목할 만한 설명선이 세 가지 있습니다.

  • Event Grid는 스토리지에서 시스템에 메시지를 표시할 때 가능한 한 빨리 메시지를 릴레이하는 푸시 모델을 사용합니다. 이 방법은 풀 시스템이 사용되는 Kafka와 같은 메시징 시스템과 다릅니다.

  • 이벤트 트리거는 들어오는 메시지에 대한 활성 수신기 역할을 하며 연결된 파이프라인을 적절하게 트리거합니다.

  • 스토리지 이벤트 트리거 자체는 스토리지 계정에 대한 직접 연결을 사용하지 않습니다.

    • 스토리지 계정에서 데이터를 처리하기 위해 파이프라인 내에 복사 작업 또는 다른 활동이 있는 경우 서비스에서 연결된 서비스에 저장된 자격 증명을 사용하여 스토리지 계정과 직접 연결합니다. 연결된 서비스가 적절하게 설정되었는지 확인합니다.
    • 파이프라인에서 스토리지 계정에 대한 참조를 사용하지 않는 경우 스토리지 계정에 액세스하기 위해 서비스에 권한을 부여할 필요가 없습니다.