Azure Functions의 Azure Blob Storage 바인딩 개요
Azure Functions는 트리거 및 바인딩을 통해 Azure Storage와 통합됩니다. Blob Storage와 통합하면 Blob 데이터의 변경 내용과 읽기 및 쓰기 값에 대응하는 함수를 빌드할 수 있습니다.
작업 | Type |
---|---|
Blob Storage 데이터 변경 시 함수 실행 | 트리거 |
함수에서 Blob Storage 데이터 읽기 | 입력 바인딩 |
함수가 Blob Storage 데이터를 쓸 수 있도록 허용 | 출력 바인딩 |
확장 설치
설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.
Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.
확장 기능의 기능은 확장 버전에 따라 다릅니다.
이 버전에는 비밀 대신 ID를 사용하여 연결하는 기능이 도입되었습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.
이 버전을 사용하면 Azure.Storage.Blobs의 형식에 바인딩할 수 있습니다. 이러한 새로운 형식이 WindowsAzure.Storage
및 Microsoft.Azure.Storage
와 어떻게 다른지 그리고 Azure.Storage.Blobs 마이그레이션 가이드에서 이러한 형식으로 마이그레이션하는 방법에 대해 자세히 알아봅니다.
Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs NuGet 패키지 버전 5.x 이상을 설치하여 프로젝트에 확장을 추가합니다.
.NET CLI 사용:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
참고 항목
Azure Blob, Azure Queues 및 Azure Tables는 이제 별도의 확장을 사용하고 개별적으로 참조됩니다. 예를 들어 .NET 격리된 프로세스 앱의 세 가지 서비스 모두에 대해 트리거와 바인딩을 사용하려면 프로젝트에 다음 패키지를 추가해야 합니다.
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
- Microsoft.Azure.Functions.Worker.Extensions.Tables
이전에는 확장이 Microsoft.Azure.Functions.Worker.Extensions.Storage, 버전 4.x로 함께 제공되었습니다. 이 동일한 패키지에는 Blob 및 큐에 대해서만 분할 패키지를 참조하는 5.x 버전도 있습니다. 따라서 이전 버전에서 패키지 참조를 업그레이드할 때 새로운 Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet 패키지를 추가로 참조해야 할 수 있습니다. 또한 이러한 새로운 분할 패키지를 참조할 때 결합된 스토리지 패키지의 이전 버전을 참조하고 있지 않은지 확인합니다. 이렇게 하면 동일한 바인딩의 두 정의에서 충돌이 발생하기 때문입니다.
F#을 사용하여 애플리케이션을 작성하는 경우 앱 시작 구성의 일부로 이 확장을 구성해야 합니다. 호출 ConfigureFunctionsWorkerDefaults()
에서 매개 ConfigureFunctionsWebApplication()
변수를 사용하는 대리자를 추가합니다 IFunctionsWorkerApplication
. 그런 다음 해당 대리자의 본문 내에서 개체를 호출 ConfigureBlobStorageExtension()
합니다.
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureBlobStorageExtension() |> ignore
) |> ignore
번들 설치
Blob Storage 바인딩은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 바인딩 버전을 변경하거나 번들이 아직 설치되지 않은 경우 이 번들을 수정해야 할 수 있습니다. 자세한 내용은 확장 번들을 참조하세요.
이 버전에는 비밀 대신 ID를 사용하여 연결하는 기능이 도입되었습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.
host.json
파일에서 다음 코드를 추가하거나 교체하여 확장 번들 v3에서 이 버전의 확장을 추가할 수 있습니다.
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
자세한 내용은 확장 업데이트를 참조하세요.
바인딩 형식
.NET에 지원되는 바인딩 형식은 확장 버전과 C# 실행 모드에 따라 달라지며 다음 중 하나일 수 있습니다.
격리된 작업자 프로세스 클래스 라이브러리 컴파일된 C# 함수는 런타임에서 격리된 프로세스에서 실행됩니다.
모드 및 버전에 대한 바인딩 형식 세부 정보를 보려면 버전을 선택합니다.
격리된 작업자 프로세스는 아래 표에 따라 매개 변수 형식을 지원합니다.
Blob 트리거
Blob 트리거는 다음 형식에 바인딩될 수 있습니다.
Type | 설명 |
---|---|
string |
Blob 콘텐츠를 문자열로 지정입니다. Blob 콘텐츠가 간단한 텍스트인 경우에 사용합니다. |
byte[] |
Blob 콘텐츠의 바이트입니다. |
JSON 직렬화 가능 형식 | Blob에 JSON 데이터가 포함된 경우 Functions는 JSON 데이터를 POCO(일반 CLR 개체) 형식으로 역직렬화하려고 합니다. |
스트림1 | Blob 콘텐츠의 입력 스트림입니다. |
BlobClient1, BlockBlobClient1, PageBlobClient1, AppendBlobClient1, BlobBaseClient1 |
Blob에 연결된 클라이언트입니다. 이 형식 집합은 Blob 처리에 대한 대부분의 제어를 제공하며 연결에 충분한 권한이 있는 경우 Blob에 다시 쓰는 데 사용할 수 있습니다. |
1 이러한 형식을 사용하려면 Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 이상 및 SDK 형식 바인딩에 대한 일반적인 종속성을 참조해야 합니다.
Blob 입력 바인딩
함수가 단일 blob을 처리하도록 하려는 경우 blob 입력 바인딩은 다음 형식에 바인딩될 수 있습니다.
Type | 설명 |
---|---|
string |
Blob 콘텐츠를 문자열로 지정입니다. Blob 콘텐츠가 간단한 텍스트인 경우에 사용합니다. |
byte[] |
Blob 콘텐츠의 바이트입니다. |
JSON 직렬화 가능 형식 | Blob에 JSON 데이터가 포함된 경우 Functions는 JSON 데이터를 POCO(일반 CLR 개체) 형식으로 역직렬화하려고 합니다. |
스트림1 | Blob 콘텐츠의 입력 스트림입니다. |
BlobClient1, BlockBlobClient1, PageBlobClient1, AppendBlobClient1, BlobBaseClient1 |
Blob에 연결된 클라이언트입니다. 이 형식 집합은 Blob 처리에 대한 대부분의 제어를 제공하며 연결에 충분한 권한이 있는 경우 Blob에 다시 쓰는 데 사용할 수 있습니다. |
함수가 컨테이너의 여러 Blob을 처리하도록 하려는 경우 Blob 입력 바인딩을 다음 형식에 바인딩할 수 있습니다.
Type | 설명 |
---|---|
T[] 또는 List<T> 여기서 T 는 단일 blob 입력 바인딩 형식 중 하나입니다. |
여러 blob의 배열 또는 목록입니다. 각 항목은 컨테이너의 하나의 Blob을 나타냅니다. IEnumerable<T> 와 같이 이러한 형식으로 구현된 모든 인터페이스에 바인딩할 수도 있습니다. |
BlobContainerClient1 | 컨테이너에 연결된 클라이언트입니다. 이 형식은 컨테이너 처리에 대한 대부분의 제어를 제공하며 연결에 충분한 권한이 있는 경우 컨테이너에 쓰는 데 사용할 수 있습니다. |
1 이러한 형식을 사용하려면 Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 이상 및 SDK 형식 바인딩에 대한 일반적인 종속성을 참조해야 합니다.
Blob 출력 바인딩
함수가 단일 Blob에 쓰도록 하려는 경우 Blob 출력 바인딩을 다음 형식에 바인딩할 수 있습니다.
Type | 설명 |
---|---|
string |
Blob 콘텐츠를 문자열로 지정입니다. Blob 콘텐츠가 간단한 텍스트인 경우에 사용합니다. |
byte[] |
Blob 콘텐츠의 바이트입니다. |
JSON 직렬화 가능 형식 | JSON Blob의 콘텐츠를 나타내는 개체입니다. Functions는 POCO(Plain Old CLR Object) 형식을 JSON 데이터로 직렬화하려고 시도합니다. |
함수가 여러 Blob에 쓰도록 하려는 경우 Blob 출력 바인딩을 다음 형식에 바인딩할 수 있습니다.
Type | 설명 |
---|---|
T[] 여기서 T 는 단일 Blob 출력 바인딩 형식 중 하나입니다. |
여러 Blob에 대한 콘텐츠를 포함하는 배열입니다. 각 항목은 하나의 Blob의 콘텐츠를 나타냅니다. |
다른 출력 시나리오의 경우 Azure.Storage.Blobs의 다른 형식과 함께 BlobClient 또는 BlobContainerClient를 직접 만들고 사용합니다. 종속성 주입을 사용하여 Azure SDK에서 클라이언트 형식을 만드는 예제는 Azure 클라이언트 등록을 참조하세요.
host.json 설정
이 섹션에서는 이 바인딩을 사용하는 함수에 사용할 수 있는 함수 앱 구성 설정을 설명합니다. 이 설정은 확장 버전 5.0.0 이상을 사용할 때만 적용됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x 이상 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions용 host.json 참조를 참조하세요.
참고 항목
이 섹션은 5.0.0 이전의 확장 버전에는 적용되지 않습니다. 이러한 이전 버전의 경우 Blob에 대한 함수 앱 전체 구성 설정이 없습니다.
{
"version": "2.0",
"extensions": {
"blobs": {
"maxDegreeOfParallelism": 4,
"poisonBlobThreshold": 1
}
}
}
속성 | 기본값 | 설명 |
---|---|---|
maxDegreeOfParallelism | 8 * (사용 가능한 코어 수) | 지정된 함수 앱의 모든 Blob 트리거 함수에 허용되는 동시 호출의 정수 수입니다. 허용되는 최소값은 1입니다. |
poisonBlobThreshold | 5 | 메시지를 포이즌 큐로 이동하기 전에 메시지 처리를 시도하는 정수 횟수입니다. 허용되는 최소값은 1입니다. |