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.StorageMicrosoft.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, 버전 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에서 직접 형식을 만들고 사용합니다.

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입니다.

다음 단계