Azure Logic Apps의 워크플로에서 Azure Blob Storage에 연결
적용 대상: Azure Logic Apps(사용량 + 표준)
이 방법 가이드에서는 Azure Blob Storage 커넥터를 사용하여 Azure Logic Apps의 워크플로에서 Azure Blob Storage 계정 및 컨테이너에 액세스하는 방법을 보여 줍니다. 이 커넥터는 워크플로에서 BLOB 작업에 사용할 수 있는 트리거 및 작업을 제공합니다. 그런 다음, 스토리지 컨테이너 또는 다른 시스템의 이벤트에 의해 트리거될 때 실행되는 자동화된 워크플로를 만들고, 스토리지 컨테이너의 데이터로 하는 작업을 실행할 수 있습니다. 예를 들어 Azure Storage 계정에 Blob으로 저장된 파일에 액세스하고 관리할 수 있습니다.
논리 앱(사용량) 및 논리 앱(표준) 리소스 종류의 워크플로에서 Azure Blob Storage에 연결할 수 있습니다. 다중 테넌트 Azure Logic Apps 및 단일 테넌트 Azure Logic Apps에서 논리 앱 워크플로와 함께 커넥터를 사용할 수 있습니다. 논리 앱(표준)을 사용하면 Azure Blob기본 제공 커넥터 작업 또는 Azure Blob Storage 관리형 커넥터 작업을 사용할 수 있습니다.
커넥터 기술 참조
Azure Blob Storage 커넥터는 논리 앱 유형 및 호스트 환경에 여러 버전이 있습니다.
논리 앱 | 환경 | 커넥터 버전 |
---|---|---|
소비 | 다중 테넌트 Azure Logic Apps | 런타임>공유 아래 커넥터 갤러리에 나타나는 관리되는 커넥터입니다. 자세한 내용은 다음 설명서를 검토하세요. - Azure Blob Storage 관리형 커넥터 참조 - Azure Logic Apps의 관리형 커넥터 |
Standard | 단일 테넌트 Azure Logic Apps 및 App Service Environment v3(Windows 플랜만 해당) | 관리형 커넥터(Azure 호스트된)는 런타임>공유 아래의 커넥터 갤러리에 표시되며, 기본 제공 커넥터는 서비스 공급자 기반으로 런타임>앱 내 아래의 커넥터 갤러리에 표시됩니다. 기본 제공 버전은 다음과 같은 차이점이 있습니다. - 기본 제공 버전은 연결 문자열만 필요한 Azure Storage 계정에 직접 연결합니다. - 기본 제공 버전은 Azure 가상 네트워크에 직접 액세스할 수 있습니다. 자세한 내용은 다음 설명서를 검토하세요. - Azure Blob Storage 관리형 커넥터 참조 - Azure Blob 기본 제공 커넥터 참조 - Azure Logic Apps의 기본 제공 커넥터 |
제한 사항
Azure Blob Storage 관리형 커넥터 작업은 50MB 이하의 파일을 읽거나 쓸 수 있습니다. 50MB보다 큰 최대 1024MB 크기의 파일을 처리하기 위해 Azure Blob Storage 작업은 메시지 청크를 지원합니다. Blob 콘텐츠 가져오기라는 Blob Storage 작업은 청크를 암시적으로 사용합니다.
Azure Blob Storage 관리되는 및 기본 제공 트리거는 청크를 지원하지 않지만 기본 제공 트리거는 50MB 이상의 파일을 처리할 수 있습니다. 그러나 관리되는 트리거가 파일 콘텐츠를 요청할 때 50MB 이하의 파일만 선택합니다. 50MB보다 큰 파일을 가져오려면 다음 패턴을 따릅니다.
Blob이 추가되거나 수정된 경우(속성만)와 같이 파일 속성을 반환하는 Blob 트리거를 사용합니다.
전체 파일을 읽고 청크를 암시적으로 사용하는 Blob 콘텐츠 가져오기라고 하는 Azure Blob Storage 관리형 커넥터 작업을 사용하여 트리거를 따릅니다.
Azure Blob Storage 트리거 제한
- 관리되는 커넥터 트리거는 폴링 가상 폴더에서 30,000개의 Blob으로 제한됩니다.
- 기본 제공 커넥터 트리거는 전체 폴링 컨테이너에서 10,000개의 Blob으로 제한됩니다.
제한을 초과하면 새 Blob에서 워크플로를 트리거하지 못할 수 있으므로 트리거를 건너뜁니다.
필수 조건
Azure 계정 및 구독 Azure 구독이 없는 경우 체험 Azure 계정에 등록합니다.
Azure Storage 계정에 액세스하려는 논리 앱 워크플로 Azure Blob 트리거를 사용하여 워크플로를 시작하려면 빈 워크플로로 시작해야 합니다. 워크플로에서 Azure Blob 작업을 사용하려면 트리거를 사용하여 워크플로를 시작합니다.
Blob 트리거 추가
사용량 논리 앱 워크플로는 Azure Blob Storage 관리형 커넥터만 사용할 수 있습니다. 그러나 표준 논리 앱 워크플로는 Azure Blob Storage 관리형 커넥터와 Azure Blob 기본 제공 커넥터를 사용할 수 있습니다. 두 커넥터 버전 모두 하나의 Blob 트리거만 제공하지만, 사용량 또는 표준 워크플로 중에 무엇을 사용하는지에 따라 트리거 이름은 다음과 같이 다릅니다.
논리 앱 | 커넥터 버전 | 트리거 이름 | 설명 |
---|---|---|---|
소비 | 관리 커넥터만 | Blob이 추가되거나 수정될 때(속성만) | 스토리지 컨테이너의 루트 폴더에서 Blob의 속성이 추가되거나 업데이트될 때 트리거가 실행됩니다. 관리형 트리거를 설정하면 관리형 버전은 스토리지 컨테이너의 기존 Blob을 무시합니다. |
Standard | - 기본 제공 커넥터 - 관리형 커넥터 |
- 기본 제공: Blob이 추가되거나 업데이트될 때 - 관리형: Blob이 추가되거나 수정될 때(속성만) |
- 기본 제공: 스토리지 컨테이너에서 Blob이 추가되거나 업데이트될 때 트리거가 실행되고, 루트 폴더뿐만 아니라 스토리지 컨테이너의 폴더가 중첩될 때 트리거가 실행됩니다. 기본 제공 트리거를 설정하면 기본 제공 버전은 스토리지 컨테이너의 모든 기존 Blob을 처리합니다. - 관리형: 스토리지 컨테이너의 루트 폴더에서 Blob의 속성이 추가되거나 업데이트될 때 트리거가 실행됩니다. 관리형 트리거를 설정하면 관리형 버전은 스토리지 컨테이너의 기존 Blob을 무시합니다. |
다음 단계에서는 Azure Portal을 사용합니다. 그러나 적절한 Azure Logic Apps 확장이 있으면 다음 도구를 사용하여 논리 앱 워크플로를 만들 수도 있습니다.
소비 논리 앱 워크플로: Visual Studio Code
표준 논리 앱 워크플로: Visual Studio Code
Azure Portal의 디자이너에서 사용량 논리 앱과 빈 워크플로를 엽니다.
디자이너의 검색 상자에서 표준을 선택한 다음, 다음 일반 단계에 따라 원하는 Azure Blob Storage 관리형 트리거를 추가합니다.
이 예제에서는 Blob이 추가되거나 수정될 때(속성만)라는 트리거를 계속 사용합니다.
메시지가 표시되면 스토리지 계정에 연결하기 위한 다음 정보를 입력합니다. 완료되면 만들기를 선택합니다.
속성 필수 설명 연결 이름 예 연결 이름 인증 유형 예 스토리지 계정의 인증 유형. 자세한 내용은 인증을 지원하는 트리거 및 작업에 대한 인증 유형 - 액세스 및 데이터 보안을 참조하세요. 예를 들어 이 연결은 액세스 키 인증을 사용하고 다음 속성 값과 함께 스토리지 계정에 대한 액세스 키 값을 제공합니다.
속성 필요함 값 설명 Azure Storage 계정 이름 예, 하지만 액세스 키 인증에만 해당 <storage-account-name> Blob 컨테이너가 있는 Azure Storage 계정의 이름입니다.
참고: 스토리지 계정 이름을 찾으려면 Azure Portal에서 스토리지 계정 리소스를 엽니다. 리소스 메뉴의 보안 + 네트워킹에서 액세스 키를 선택합니다. 스토리지 계정 이름에서 이름을 복사하여 저장합니다.Azure Storage 계정 액세스 키 예,
하지만 액세스 키 인증에만 해당<storage-account-access-key> Azure 스토리지 계정의 액세스 키
참고: 액세스 키를 찾으려면 Azure Portal에서 스토리지 계정 리소스를 엽니다. 리소스 메뉴의 보안 + 네트워킹에서 액세스 키>key1>표시를 선택합니다. 기본 키 값을 복사하여 저장합니다.트리거 정보 상자가 나타나면 필요한 정보를 입력합니다.
컨테이너 속성 값에서 폴더 아이콘을 선택하고 Blob 컨테이너를 찾습니다. 또는 /<container-name> 구문을 사용하여 경로를 수동으로 입력합니다. 예를 들면 다음과 같습니다.
이 트리거에 사용할 수 있는 다른 속성을 추가하려면 새 매개 변수 목록 추가를 열고 원하는 속성을 선택합니다.
자세한 내용은 Azure Blob Storage 관리형 커넥터 트리거 속성을 검토하세요.
워크플로에 필요한 다른 작업을 추가합니다.
완료되면 워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.
Blob 작업 추가
사용량 논리 앱 워크플로는 Azure Blob Storage 관리형 커넥터만 사용할 수 있습니다. 그러나 표준 논리 앱 워크플로는 Azure Blob Storage 관리형 커넥터와 Azure Blob 기본 제공 커넥터를 사용할 수 있습니다. 각 버전에는 이름이 다른 여러 작업이 있습니다. 예를 들어 관리형 커넥터 버전과 기본 제공 커넥터 버전에는 각각 파일 메타데이터를 가져오고 파일 콘텐츠를 가져오는 고유한 작업이 있습니다.
관리형 커넥터 작업: 이러한 작업은 사용량 또는 표준 워크플로에서 실행됩니다.
기본 제공 커넥터 작업: 이러한 작업은 표준 워크플로에서만 실행됩니다.
다음 단계에서는 Azure Portal을 사용하지만 적절한 Azure Logic Apps 확장을 사용하면 다음 도구를 사용하여 논리 앱 워크플로를 빌드할 수도 있습니다.
- 사용 워크플로: Visual Studio Code
- 표준 워크플로: Visual Studio Code
Azure Portal에서 디자이너를 통해 사용량 논리 앱 및 워크플로를 엽니다.
워크플로가 비어 있는 경우 시나리오에 필요한 트리거를 추가합니다.
이 예제에서는 되풀이 트리거를 사용합니다.
디자이너에서 다음 일반 단계에 따라 원하는 Azure Blob Storage 관리되는 작업을 찾아 추가합니다.
이 예제에서는 Blob 콘텐츠 가져오기라는 작업을 계속 사용합니다.
메시지가 표시되면 다음 연결 정보를 입력합니다. 완료되면 만들기를 선택합니다.
속성 필수 설명 연결 이름 예 연결 이름 인증 유형 예 스토리지 계정의 인증 유형. 자세한 내용은 인증을 지원하는 트리거 및 작업에 대한 인증 유형 - 액세스 및 데이터 보안을 참조하세요. 예를 들어 이 연결은 액세스 키 인증을 사용하고 다음 속성 값과 함께 스토리지 계정에 대한 액세스 키 값을 제공합니다.
속성 필요함 값 설명 Azure Storage 계정 이름 예,
하지만 액세스 키 인증에만 해당<storage-account-name> Blob 컨테이너가 있는 Azure Storage 계정의 이름입니다.
참고: 스토리지 계정 이름을 찾으려면 Azure Portal에서 스토리지 계정 리소스를 엽니다. 리소스 메뉴의 보안 + 네트워킹에서 액세스 키를 선택합니다. 스토리지 계정 이름에서 이름을 복사하여 저장합니다.Azure Storage 계정 액세스 키 예,
하지만 액세스 키 인증에만 해당<storage-account-access-key> Azure 스토리지 계정의 액세스 키
참고: 액세스 키를 찾으려면 Azure Portal에서 스토리지 계정 리소스를 엽니다. 리소스 메뉴의 보안 + 네트워킹에서 액세스 키>key1>표시를 선택합니다. 기본 키 값을 복사하여 저장합니다.작업 정보 상자에서 필요한 정보를 입력합니다.
예를 들어 Blob 콘텐츠 가져오기 작업에서 스토리지 계정 이름을 입력합니다. Blob 속성 값에서 폴더 아이콘을 선택하고 스토리지 컨테이너 또는 폴더를 찾습니다. 또는 경로를 수동으로 입력합니다.
작업 Blob 경로 구문 루트 폴더의 특정 Blob에서 콘텐츠를 가져옵니다. /<container-name>/<blob-name> 하위 폴더의 특정 Blob에서 콘텐츠를 가져옵니다. /<container-name>/<subfolder>/<blob-name> 다음 예제에서는 루트 폴더의 Blob에서 콘텐츠를 가져오는 작업 설정을 보여줍니다.
다음 예제에서는 하위 폴더의 Blob에서 콘텐츠를 가져오는 작업 설정을 보여줍니다.
워크플로에 필요한 다른 작업을 추가합니다.
완료되면 워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.
방화벽 뒤의 스토리지 계정에 액세스
방화벽과 방화벽 규칙으로 액세스를 제한하여 Azure Storage 계정에 네트워크 보안을 추가할 수 있습니다. 그러나 이 설정은 스토리지 계정에 액세스해야 하는 Azure와 기타 Microsoft 서비스에 문제를 만듭니다. 데이터 센터의 로컬 통신은 내부 IP 주소를 추상화하므로, IP 주소를 통한 트래픽만 허용하면 방화벽 간 통신을 허용하기에 충분하지 않을 수 있습니다. 사용하는 Azure Blob Storage 커넥터에 따라 다음 옵션을 사용할 수 있습니다.
사용량 논리 앱에서 Azure Blob Storage 관리형 커넥터를 사용하여 방화벽 뒤에 있는 스토리지 계정에 액세스하려면 다음 설명서를 참조하세요.
표준 논리 앱을 사용하여 방화벽 뒤에 있는 스토리지 계정에 액세스하려면 다음 설명서를 검토하세요.
Azure Blob Storage 기본 제공 커넥터: 가상 네트워크 통합을 통해 스토리지 계정에 액세스
Azure Blob Storage 관리 커넥터: 다른 지역의 스토리지 계정에 액세스
다른 지역의 스토리지 계정에 액세스
관리 ID 인증을 사용하지 않으면 논리 앱 리소스와 스토리지 계정이 동일한 지역에 있을 때 논리 앱 워크플로가 방화벽 뒤에 있는 스토리지 계정에 직접 액세스할 수 없습니다. 해결 방법은 논리 앱 리소스를 스토리지 계정과 다른 지역에 배치하는 것입니다. 그런 다음, 해당 지역의 관리형 커넥터의 아웃바운드 IP 주소에 대한 액세스 권한을 부여합니다.
참고 항목
이 솔루션은 Azure Table Storage 커넥터와 Azure Queue Storage 커넥터에는 적용되지 않습니다. 그 대신 Table Storage 또는 Queue Storage에 액세스하려면 기본 제공 HTTP 트리거와 작업을 사용합니다.
스토리지 계정 방화벽에 아웃바운드 IP 주소를 추가하려면 다음 단계를 따릅니다.
논리 앱 리소스의 지역에 대한 관리형 커넥터 아웃바운드 IP 주소를 확인합니다.
Azure Portal에서 스토리지 계정 리소스를 찾아 엽니다.
스토리지 계정 탐색 메뉴의 보안 + 네트워킹에서 네트워킹을 선택합니다.
신뢰할 수 있는 가상 네트워크를 통해 스토리지 계정에 액세스
논리 앱과 스토리지 계정이 같은 지역에 있습니다.
프라이빗 엔드포인트를 만들어서 스토리지 계정을 Azure 가상 네트워크에 배치한 다음, 해당 가상 네트워크를 신뢰할 수 있는 가상 네트워크 목록에 추가하면 됩니다. 신뢰할 수 있는 가상 네트워크를 통해 스토리지 계정에 대한 액세스 권한을 논리 앱에 부여하려면 가상 네트워크의 리소스에 연결할 수 있는 표준 논리 앱을 만들어야 합니다.
논리 앱과 스토리지 계정이 다른 지역에 있습니다.
액세스를 위해 스토리지 계정에 프라이빗 엔드포인트를 만듭니다.
가상 네트워크 통합을 통해 스토리지 계정에 액세스
논리 앱과 스토리지 계정이 같은 지역에 있습니다.
프라이빗 엔드포인트를 만들어서 스토리지 계정을 Azure 가상 네트워크에 배치한 다음, 해당 가상 네트워크를 신뢰할 수 있는 가상 네트워크 목록에 추가하면 됩니다. 논리 앱이 스토리지 계정에 액세스할 수 있게 하려면 가상 네트워크의 리소스에 연결할 수 있도록 가상 네트워크 통합을 사용하여 아웃바운드 트래픽을 설정해야 합니다. 그런 다음, 스토리지 계정의 신뢰할 수 있는 가상 네트워크 목록에 가상 네트워크를 추가하면 됩니다.
논리 앱과 스토리지 계정이 다른 지역에 있습니다.
액세스를 위해 스토리지 계정에 프라이빗 엔드포인트를 만듭니다.
시스템 관리 ID를 사용하여 동일한 지역에 있는 Blob Storage에 액세스
아무 지역의 Azure Blob Storage에 연결하려면 인증에 관리 ID를 사용하면 됩니다. 방화벽을 통한 스토리지 계정에 대한 액세스 권한을 관리 ID와 같은 Microsoft 신뢰할 수 있는 서비스에 부여하는 예외를 만들 수 있습니다.
참고 항목
이 솔루션은 표준 논리 앱에는 적용되지 않습니다. 표준 논리 앱에서 시스템이 할당한 관리 ID를 사용하는 경우에도 Azure Blob Storage 관리 커넥터는 동일한 지역의 스토리지 계정에 연결할 수 없습니다.
논리 앱에서 관리 ID를 사용하여 Blob Storage에 액세스하려면 다음 단계를 따릅니다.
참고 항목
이 솔루션에는 다음과 같은 제한이 있습니다.
스토리지 계정 연결을 인증하려면 시스템이 할당한 관리 ID를 설정해야 합니다. 사용자가 할당한 관리 ID는 작동하지 않습니다.
스토리지 계정 액세스 구성
예외 및 관리 ID 지원을 설정하려면 먼저 스토리지 계정에 대한 적절한 액세스를 구성합니다.
Azure Portal에서 스토리지 계정 리소스를 찾아 엽니다.
스토리지 계정 탐색 메뉴의 보안 + 네트워킹에서 네트워킹을 선택합니다.
참고 항목
워크플로에서 스토리지 계정에 연결하려고 할 때 403 금지됨 오류가 표시되는 경우 여러 가지 원인이 있습니다. 추가 단계를 진행하기 전에 다음 해결 방법을 시도합니다. 먼저 신뢰할 수 있는 Microsoft 서비스가 이 스토리지 계정에 액세스할 수 있도록 허용을 사용하지 않도록 설정하고 변경 내용을 저장합니다. 그런 다음, 설정을 다시 사용하도록 설정하고 변경 내용을 다시 저장합니다.
논리 앱에 대한 역할 할당 만들기
다음으로, 논리 앱 리소스에서 관리 ID 지원을 사용하도록 설정합니다.
다음 단계는 다중 테넌트 환경의 사용량 논리 앱과 단일 테넌트 환경의 표준 논리 앱에서 똑같이 적용됩니다.
Azure Portal에서 논리 앱 리소스를 엽니다.
논리 앱 리소스 탐색 메뉴의 설정에서 ID를 선택합니다.
시스템 할당 창에서 상태를 켬으로 설정하고, 아직 사용하도록 설정하지 않은 경우 저장을 선택하고 변경 내용을 확인합니다. 권한에서 Azure 역할 할당을 선택합니다.
Azure 역할 할당 창에서 역할 할당 추가를 선택합니다.
역할 할당 추가 창에서 다음 값을 사용하여 새 역할 할당을 설정합니다.
속성 값 설명 범위 <resource-scope> 역할 할당을 적용할 리소스 세트입니다. 이 예제에서는 Storage를 선택합니다. 구독 <Azure-subscription> 스토리지 계정의 Azure 구독입니다. 리소스 <storage-account-name> 논리 앱 워크플로에서 액세스하려는 스토리지 계정의 이름입니다. 역할 <role-to-assign> 워크플로가 리소스를 사용해야 하는 시나리오에서 필요한 역할입니다. 이 예제에서는 Blob 컨테이너와 날짜에 대한 읽기, 쓰기 및 삭제 액세스를 허용하는 Storage Blob 데이터 기여자가 필요합니다. 권한 세부 정보를 보려면 드롭다운 메뉴에서 역할 옆에 있는 정보 아이콘을 마우스로 가리킵니다. 모두 마쳤으면 저장을 선택하여 역할 할당 만들기를 완료합니다.
논리 앱에서 관리 ID 지원을 사용하도록 설정
이제 다음 단계를 완료합니다.
빈 워크플로가 있는 경우 Azure Blob Storage 커넥터 트리거를 추가합니다. 그렇지 않으면 Azure Blob Storage 커넥터 작업을 추가합니다. 기존 연결을 사용하지 말고 트리거 또는 작업에 대한 새 연결을 만들어야 합니다.
관리 ID를 사용하도록 인증 유형을 설정해야 합니다.
트리거 또는 작업을 구성한 후에는 워크플로를 저장하고 트리거 또는 작업을 테스트할 수 있습니다.
스토리지 계정 액세스 문제 해결
"이 요청에는 이 작업을 수행할 수 있는 권한이 없습니다."
다음 오류는 논리 앱과 스토리지 계정이 동일한 지역에 있을 때 발생하는 것으로 보고된 대표적인 문제입니다. 그러나 방화벽 뒤의 스토리지 계정에 액세스 섹션에 설명된 대로 이 제한을 해결하는 옵션이 있습니다.
{ "status": 403, "message": "This request is not authorized to perform this operation.\\r\\nclientRequestId: a3da2269-7120-44b4-9fe5-ede7a9b0fbb8", "error": { "message": "This request is not authorized to perform this operation." }, "source": "azureblob-ase.azconn-ase.p.azurewebsites.net" }
Application Insights 오류
404 및 409 오류
표준 워크플로에서 스토리지 컨테이너에 Blob을 추가하는 Azure Blob 기본 제공 작업을 사용하는 경우 실패한 요청에 대한 Application Insights에서 404 및 409 오류가 표시될 수 있습니다. 커넥터가 Blob을 추가하기 전에 Blob 파일이 있는지 확인하기 때문에 이러한 오류가 발생합니다. 파일이 없으면 이 오류가 발생합니다. 이러한 오류가 발생해도 기본 제공 작업은 Blob을 성공적으로 추가합니다.