Azure Functions용 Azure Tables 바인딩

Azure Functions는 트리거 및 바인딩을 통해 Azure Tables와 통합됩니다. Azure Tables와 통합하면 Azure Cosmos DB for TableAzure Table Storage를 사용하여 데이터를 읽고 쓰는 함수를 빌드할 수 있습니다.

작업 Type
함수에서 테이블 데이터 읽기 입력 바인딩
함수가 테이블 데이터를 쓸 수 있도록 허용 출력 바인딩

확장 설치

설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.

Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.

확장 설치 프로세스는 확장 버전에 따라 다릅니다.

이 버전에는 비밀 대신 ID를 사용하여 연결하는 기능이 도입되었습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.

이 버전을 사용하면 .에서 Azure.Data.Tables형식에 바인딩할 수 있습니다. 또한 Azure Cosmos DB for Table을 사용하는 기능을 소개합니다.

이 확장은 Blob에 대한 확장 버전 5.x 이상을 사용하여 프로젝트에 Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet 패키지를 설치하여 사용할 수 있습니다.

.NET CLI 사용:

# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0

# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0

참고 항목

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 . 그런 다음 해당 대리자의 본문 내에서 개체를 호출 ConfigureTablesExtension() 합니다.

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore

번들 설치

Azure Tables 바인딩은 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# 함수는 런타임에서 격리된 프로세스에서 실행됩니다.

모드 및 버전에 대한 바인딩 형식 세부 정보를 보려면 버전을 선택합니다.

격리된 작업자 프로세스는 아래 표에 따라 매개 변수 형식을 지원합니다. Azure.Data.Tables의 형식에 대한 바인딩 지원은 미리 보기 상태입니다.

Azure Tables 입력 바인딩

단일 테이블 엔터티로 작업할 때 Azure Tables 입력 바인딩은 다음 형식에 바인딩될 수 있습니다.

Type 설명
ITableEntity를 구현하는 JSON 직렬화 가능 형식 함수는 엔터티를 POCO(Plain-Old CLR 개체) 형식으로 역직렬화하려고 시도합니다. 형식은 ITableEntity를 구현하거나 문자열 RowKey 속성과 문자열 PartitionKey 속성을 가져야 합니다.
TableEntity1 사전과 유사한 형식의 엔터티입니다.

쿼리에서 여러 엔터티로 작업할 때 Azure Tables 입력 바인딩은 다음 형식에 바인딩될 수 있습니다.

Type 설명
IEnumerable<T> 여기서 TITableEntity를 구현합니다. 쿼리에서 반환된 항목의 열거형입니다. 각 엔터티는 하나의 엔터티를 나타냅니다. T 형식은 ITableEntity를 구현하거나 문자열 RowKey 속성과 문자열 PartitionKey 속성을 가져야 합니다.
TableClient1 테이블에 연결된 클라이언트. 이는 테이블 처리에 대한 대부분의 제어를 제공하며 연결에 충분한 권한이 있는 경우 테이블에 쓰는 데 사용할 수 있습니다.

1 이러한 형식을 사용하려면 Microsoft.Azure.Functions.Worker.Extensions.Tables 1.2.0 이상SDK 형식 바인딩에 대한 공통 종속성을 참조해야 합니다.

Azure Tables 출력 바인딩

함수가 단일 엔터티에 쓰도록 하려는 경우 Azure Tables 출력 바인딩은 다음 형식에 바인딩될 수 있습니다.

Type 설명
[ITableEntity]를 구현하는 JSON 직렬화 가능 형식 함수는 POCO(Plain Old CLR Object) 형식을 엔터티로 직렬화하려고 시도합니다. 형식은 [ITableEntity]를 구현하거나 문자열 RowKey 속성과 문자열 PartitionKey 속성을 가져야 합니다.

함수가 여러 엔터티에 쓰도록 하려는 경우 Azure Tables 출력 바인딩은 다음 형식에 바인딩될 수 있습니다.

Type 설명
T[] 여기서 T는 단일 엔터티 형식 중 하나입니다. 여러 엔터티를 포함하는 배열입니다. 각 엔터티는 하나의 엔터티를 나타냅니다.

다른 출력 시나리오의 경우 Azure.Data.Tables에서 직접 형식을 만들고 사용합니다.

다음 단계