다음을 통해 공유


Azure Functions 2.x 이상에 대한 Azure Cosmos DB 트리거 및 바인딩 개요

이 문서 집합에서는 Azure Functions 2.x 이상에서 Azure Cosmos DB 바인딩을 사용하는 방법을 설명합니다. Azure Functions는 Azure Cosmos DB에 대한 트리거, 입력 및 출력 바인딩을 지원합니다.

작업 Type
Azure Cosmos DB 문서를 만들거나 수정할 때 함수 실행 트리거
Azure Cosmos DB 문서 읽기 입력 바인딩
Azure Cosmos DB 문서에 변경 내용 저장 출력 바인딩

참고 항목

이 참조는 Azure Functions 버전 2.x 이상에 대한 것입니다. Functions 1.x에서 이러한 바인딩을 사용하는 방법에 대한 내용은 Azure Functions 1.x에 대한 Azure Cosmos DB 바인딩을 참조하세요.

이 바인딩의 이름은 원래 DocumentDB입니다. Azure Functions 버전 2.x 이상에서는 트리거, 바인딩 및 패키지의 이름이 모두 Azure Cosmos DB로 지정됩니다.

지원되는 API

Azure Cosmos DB 바인딩은 Azure Cosmos DB for NoSQL에서만 사용할 수 있습니다. Azure Cosmos DB for Table에 대한 지원은 확장 5.x부터 Table 스토리지 바인딩을 사용하여 제공됩니다. 다른 모든 Azure Cosmos DB API의 경우 Azure Cosmos DB for MongoDB, Azure Cosmos DB for CassandraAzure Cosmos DB for Apache Gremlin을 비롯해 API에 정적 클라이언트를 사용하여 함수에서 데이터베이스에 액세스해야 합니다.

확장 설치

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

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

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

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

NuGet 패키지, 버전 4.x를 설치하여 프로젝트에 확장을 추가합니다.

F#을 사용하여 애플리케이션을 작성하는 경우 앱 시작 구성의 일부로 이 확장을 구성해야 합니다. 호출 ConfigureFunctionsWorkerDefaults() 에서 매개 ConfigureFunctionsWebApplication()변수를 사용하는 대리자를 추가합니다 IFunctionsWorkerApplication . 그런 다음 해당 대리자의 본문 내에서 개체를 호출 ConfigureCosmosDBExtension() 합니다.

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

번들 설치

Azure Cosmos DB 바인딩 확장은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 바인딩 버전을 변경하거나 번들이 아직 설치되지 않은 경우 이 번들을 수정해야 할 수 있습니다. 자세한 내용은 확장 번들을 참조하세요.

Azure Cosmos DB SDK의 스키마 변경으로 인해 Azure Cosmos DB 확장 버전 4.x에는 Java 함수용 azure-functions-java-library V3.0.0이 필요합니다.

이 번들 버전에는 비밀 대신 ID를 사용하여 연결하는 기능을 도입하는 Azure Cosmos DB 바인딩 확장 버전 4.x가 포함되어 있습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.

host.json 파일에서 다음 코드를 추가하거나 교체하여 미리 보기 확장 번들 v4에서 이 버전의 확장을 추가할 수 있습니다.

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.0.0, 5.0.0)"
  }
}

자세한 내용은 확장 업데이트를 참조하세요.

바인딩 형식

.NET에 지원되는 바인딩 형식은 확장 버전과 C# 실행 모드에 따라 달라지며 다음 중 하나일 수 있습니다.

격리된 작업자 프로세스 클래스 라이브러리 컴파일된 C# 함수는 런타임에서 격리된 프로세스에서 실행됩니다.

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

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

Cosmos DB 트리거

함수가 단일 문서를 처리하도록 하려는 경우 Cosmos DB 트리거는 다음 형식에 바인딩할 수 있습니다.

Type 설명
JSON 직렬화 가능 형식 함수는 Cosmos DB 변경 피드에서 문서의 JSON 데이터를 POCO(일반 CLR 개체) 형식으로 역직렬화하려고 합니다.

함수가 문서 일괄 처리를 처리하도록 하려는 경우 Cosmos DB 트리거는 다음 형식에 바인딩할 수 있습니다.

Type 설명
IEnumerable<T>여기서 T는 JSON 직렬화 가능 형식입니다. 일괄 처리에 포함된 엔터티의 열거형입니다. 각 항목은 Cosmos DB 변경 피드의 하나의 문서를 나타냅니다.

Cosmos DB 입력 바인딩

함수가 단일 문서를 처리하도록 하려면 Cosmos DB 입력 바인딩을 다음 형식에 바인딩할 수 있습니다.

Type 설명
JSON 직렬화 가능 형식 함수는 문서의 JSON 데이터를 POCO(일반 오래된 CLR 개체) 형식으로 역직렬화하려고 시도합니다.

함수가 쿼리에서 여러 문서를 처리하도록 하려면 Cosmos DB 입력 바인딩이 다음 형식에 바인딩할 수 있습니다.

Type 설명
IEnumerable<T>여기서 T는 JSON 직렬화 가능 형식입니다. 쿼리에서 반환된 항목의 열거형입니다. 각 항목은 하나의 문서를 나타냅니다.
CosmosClient1 Cosmos DB 계정에 연결된 클라이언트입니다.
데이터베이스1 Cosmos DB 데이터베이스에 연결된 클라이언트입니다.
컨테이너1 Cosmos DB 컨테이너에 연결된 클라이언트입니다.

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

Cosmos DB 출력 바인딩

함수가 단일 문서에 쓰도록 하려면 Cosmos DB 출력 바인딩이 다음 형식에 바인딩할 수 있습니다.

Type 설명
JSON 직렬화 가능 형식 문서의 JSON 콘텐츠를 나타내는 개체입니다. Functions는 POCO(Plain Old CLR Object) 형식을 JSON 데이터로 직렬화하려고 시도합니다.

함수가 여러 문서에 쓰도록 하려면 Cosmos DB 출력 바인딩이 다음 형식에 바인딩할 수 있습니다.

Type 설명
T[]여기T는 JSON 직렬화 가능 형식입니다. 여러 문서를 포함하는 배열입니다. 각 항목은 하나의 문서를 나타냅니다.

다른 출력 시나리오의 경우 Microsoft.Azure.Cosmos의 다른 형식과 함께 CosmosClient를 직접 만들고 사용합니다. 종속성 주입을 사용하여 Azure SDK에서 클라이언트 형식을 만드는 예제는 Azure 클라이언트 등록을 참조하세요.

예외 및 반환 코드

바인딩 참조
Azure Cosmos DB Azure Cosmos DB에 대한 HTTP 상태 코드

host.json 설정

이 섹션에서는 버전 2.x 이상에서 이 바인딩에 사용할 수 있는 구성 설정에 대해 설명합니다. host.json 파일의 설정은 함수 앱 인스턴스의 모든 함수에 적용됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x 이상 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions용 host.json 참조를 참조하세요.

{
    "version": "2.0",
    "extensions": {
        "cosmosDB": {
            "connectionMode": "Gateway",
            "userAgentSuffix": "MyDesiredUserAgentStamp"
        }
    }
}
속성 기본값 설명
connectionMode Gateway Azure Cosmos DB 서비스에 연결할 때 해당 함수에 의해 사용되는 연결 모드입니다. 옵션은 DirectGateway입니다.
userAgentSuffix 해당 없음 서비스에 대한 트리거 또는 바인딩에 의해 수행된 모든 요청에 지정된 문자열 값을 추가합니다. 이렇게 하면 특정 함수 앱을 기반으로 하고 User Agent로 필터링하여 Azure Monitor에서 작업을 더 쉽게 추적할 수 있습니다.

다음 단계