다음을 통해 공유


Azure Functions 1.x에 대한 Azure Cosmos DB 바인딩

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

참고 항목

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

이 바인딩의 이름은 원래 DocumentDB입니다. Azure Functions 버전 1.x에서 트리거만 Azure Cosmos DB로 이름이 바뀌었습니다. 입력 바인딩, 출력 바인딩 및 NuGet 패키지는 DocumentDB 이름을 유지합니다.

참고 항목

Azure Cosmos DB 바인딩은 SQL API에서만 사용할 수 있습니다. 다른 모든 Azure Cosmos DB API의 경우 Azure Cosmos DB for MongoDB, Azure Cosmos DB for Apache Cassandra, Azure Cosmos DB for Apache Gremlin, Azure Cosmos DB for Table을 비롯해 API에 정적 클라이언트를 사용하여 함수에서 데이터베이스에 액세스해야 합니다.

패키지 - Functions 1.x

Functions 버전 1.x에 대한 Azure Cosmos DB 바인딩은 Microsoft.Azure.WebJobs.Extensions.DocumentDB NuGet 패키지 버전 1.x에서 제공됩니다. 바인딩에 대한 소스 코드는 azure-webjobs-sdk-extensions GitHub 리포지토리에 있습니다.

다음 표에서는 각 개발 환경에서 출력 바인딩에 대한 지원을 추가하는 방법을 나열합니다.

개발 환경 Functions 1.x에서 지원을 추가하려면
로컬 개발: C# 클래스 라이브러리 패키지 설치
로컬 개발: C# 스크립트, JavaScript, F# 자동
포털 개발 자동

트리거

Azure Cosmos DB 트리거는 Azure Cosmos DB 변경 피드를 사용하여 파티션에 대한 삽입 및 업데이트를 수신 대기합니다. 변경 피드는 삭제가 아닌 삽입 및 업데이트를 게시합니다.

트리거 - 예제

다음 예제에서는 지정한 데이터베이스 및 컬렉션에서 삽입 또는 업데이트가 있을 때 호출되는 In Process C# 함수를 보여줍니다.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;

namespace CosmosDBSamplesV1
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            TraceWriter log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.Info($"Documents modified: {documents.Count}");
                log.Info($"First document Id: {documents[0].Id}");
            }
        }
    }
}

트리거 - 특성

In Process C# 클래스 라이브러리의 경우 CosmosDBTrigger 특성을 사용합니다.

특성의 생성자는 데이터베이스 이름과 컬렉션 이름을 사용합니다. 이러한 설정 및 구성할 수 있는 기타 속성에 대한 자세한 내용은 트리거 - 구성을 참조하세요. CosmosDBTrigger 다음은 메서드 서명의 특성 예제입니다.

    [FunctionName("DocumentUpdates")]
    public static void Run(
        [CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
    IReadOnlyList<Document> documents,
        TraceWriter log)
    {
        ...
    }

전체 예제는 트리거 - C# 예제를 참조하세요.

트리거 - 구성

다음 표에서는 function.json 파일 및 CosmosDBTrigger 특성에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 특성 속성 설명
type 해당 없음 cosmosDBTrigger로 설정해야 합니다.
direction 해당 없음 in로 설정해야 합니다. 이 매개 변수는 사용자가 Azure Portal에서 트리거를 만들 때 자동으로 설정됩니다.
이름 해당 없음 변경 사항이 포함된 문서 목록을 나타내는 함수 코드에 사용되는 변수 이름.
connectionStringSetting ConnectionStringSetting 모니터링 중인 Azure Cosmos DB 계정에 연결하는 데 사용되는 연결 문자열 포함하는 앱 설정의 이름입니다.
databaseName DatabaseName 모니터링 중인 컬렉션이 있는 Azure Cosmos DB 데이터베이스의 이름입니다.
collectionName CollectionName 모니터링할 컬렉션의 이름입니다.
leaseConnectionStringSetting LeaseConnectionStringSetting (선택 사항) 임대 컬렉션을 보유하는 서비스에 대한 연결 문자열 포함하는 앱 설정의 이름입니다. 설정하지 않으면 connectionStringSetting 값이 사용됩니다. 이 매개 변수는 포털에서 바인딩이 생성될 때 자동으로 설정됩니다. 임대 컬렉션에 대한 연결 문자열 쓰기 권한이 있어야 합니다.
leaseDatabaseName LeaseDatabaseName (선택 사항) 임대를 저장하는 데 사용되는 컬렉션을 보유하는 데이터베이스의 이름입니다. 설정하지 않으면 databaseName 설정 값이 사용됩니다. 이 매개 변수는 포털에서 바인딩이 생성될 때 자동으로 설정됩니다.
leaseCollectionName LeaseCollectionName (선택 사항) 임대를 저장하는 데 사용되는 컬렉션의 이름입니다. 설정하지 않으면 leases 값이 사용됩니다.
createLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExists (선택 사항) true로 설정하면 임대 컬렉션이 없는 경우 자동으로 임대 컬렉션이 생성됩니다. 기본값은 false입니다.
leasesCollectionThroughput LeasesCollectionThroughput (선택 사항) 임대 컬렉션이 생성될 때 할당할 요청 단위의 양을 정의합니다. 이 설정은 다음과 같이 true설정된 경우에만 사용됩니다createLeaseCollectionIfNotExists. 이 매개 변수는 포털을 사용하여 바인딩이 생성될 때 자동으로 설정됩니다.
leaseCollectionPrefix LeaseCollectionPrefix (선택 사항) 설정하면 이 함수에 대한 임대 컬렉션에 생성된 임대에 접두사를 추가하여, 서로 다른 접두사를 사용하여 두 별도의 Azure Functions가 동일한 임대 컬렉션을 효과적으로 공유할 수 있도록 합니다.
feedPollDelay FeedPollDelay (선택 사항) 설정하면 현재 변경 내용이 모두 드레이닝된 후 피드의 새 변경 내용에 대한 파티션 폴링 사이의 지연 시간을 밀리초 단위로 정의합니다. 기본값은 5000(5초)입니다.
leaseAcquireInterval LeaseAcquireInterval (선택 사항) 설정하면 파티션이 알려진 호스트 인스턴스 간에 균등하게 배포되는지를 계산하는 태스크를 시작하는 간격을 밀리초로 정의합니다. 기본값은 13000(13초)입니다.
leaseExpirationInterval LeaseExpirationInterval (선택 사항) 설정하면 파티션을 나타내는 임대에 대한 임대 기간인 간격을 밀리초로 정의합니다. 이 간격 내에서 임대를 갱신하지 않으면 기간이 만료되어 다른 인스턴스로 파티션 소유권이 이동합니다. 기본값은 60000(60초)입니다.
leaseRenewInterval LeaseRenewInterval (선택 사항) 설정하면 인스턴스가 현재 보유한 파티션의 모든 임대에 대한 갱신 간격을 밀리초로 정의합니다. 기본값은 17000(17초)입니다.
checkpointFrequency CheckpointFrequency (선택 사항) 설정하면 임대 검사점 사이의 간격을 밀리초 단위로 정의합니다. 기본값은 항상 각 함수 호출 이후입니다.
maxItemsPerInvocation MaxItemsPerInvocation (선택 사항) 설정하면 함수 호출당 수신되는 최대 항목 양을 사용자 지정합니다.
startFromBeginning StartFromBeginning (선택 사항) 설정하면 트리거에 현재 시간 대신 컬렉션 기록의 시작 부분에서 변경 내용 읽기를 시작하도록 지시합니다. 이는 트리거가 처음 시작될 때만 작동하며, 후속 실행에서와 같이 검사점이 이미 저장되어 있습니다. 이미 만든 임대가 있는 경우로 설정 true 해도 아무런 효과가 없습니다.

로컬에서 개발하는 경우 Values 컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.

트리거 - 사용량

트리거에는 파티션에 임대를 저장하는 데 사용할 보조 컬렉션이 필요합니다. 모니터링 중인 컬렉션과 임대를 포함하는 컬렉션을 모두 트리거가 작동하려면 사용할 수 있어야 합니다.

Important

동일한 컬렉션에 Azure Cosmos DB 트리거를 사용하도록 여러 함수가 구성된 경우 각 함수는 전용 임대 컬렉션을 사용하거나 각 함수에 다른 LeaseCollectionPrefix를 지정해야 합니다. 그렇지 않으면 함수 중 하나만 트리거됩니다. 접두사에 대한 자세한 내용은 구성 섹션참조하세요.

트리거는 문서가 업데이트되었는지 삽입되었는지 여부를 나타내지 않으며 문서 자체를 제공합니다. 업데이트 및 삽입을 다르게 처리해야 하는 경우 삽입 또는 업데이트에 대한 타임스탬프 필드를 구현하여 이 작업을 수행할 수 있습니다.

입력

Azure Cosmos DB 입력 바인딩은 SQL API를 사용하여 하나 이상의 Azure Cosmos DB 문서를 검색하고, 함수의 입력 매개 변수에 전달합니다. 문서 ID 또는 쿼리 매개 변수는 함수를 호출하는 트리거를 기반으로 결정할 수 있습니다.

입력 - 예제

이 섹션에는 다음 예제가 포함되어 있습니다.

예제는 간단한 ToDoItem 형식을 참조합니다.

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

큐 트리거, JSON에서 ID 조회

다음 예제에서는 단일 문서를 검색하는 C# 함수를 보여줍니다. 함수는 JSON 개체를 포함하는 큐 메시지에 의해 트리거됩니다. 큐 트리거는 JSON을 조회할 ID를 포함하는 개체 ToDoItemLookup로 구문 분석합니다. ID는 지정된 데이터베이스 및 컬렉션에서 ToDoItem 문서를 검색하는 데 사용됩니다.

namespace CosmosDBSamplesV1
{
    public class ToDoItemLookup
    {
        public string ToDoItemId { get; set; }
    }
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromJSON
    {
        [FunctionName("DocByIdFromJSON")]
        public static void Run(
            [QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{ToDoItemId}")]ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId}");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
        }
    }
}

HTTP 트리거, 쿼리 문자열에서 ID 조회

다음 예제에서는 단일 문서를 검색하는 C# 함수를 보여줍니다. 함수는 조회할 ID를 지정하기 위해 쿼리 문자열을 사용하는 HTTP 요청에 의해 트리거됩니다. ID는 지정된 데이터베이스 및 컬렉션에서 ToDoItem 문서를 검색하는 데 사용됩니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromQueryString
    {
        [FunctionName("DocByIdFromQueryString")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{Query.id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

HTTP 트리거, 경로 데이터에서 ID 조회

다음 예제에서는 단일 문서를 검색하는 C# 함수를 보여줍니다. 함수는 조회할 ID를 지정하기 위해 경로 데이터를 사용하는 HTTP 요청에 의해 트리거됩니다. ID는 지정된 데이터베이스 및 컬렉션에서 ToDoItem 문서를 검색하는 데 사용됩니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteData
    {
        [FunctionName("DocByIdFromRouteData")]
        public static HttpResponseMessage Run(
            [HttpTrigger(
                AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

입력 예제 건너뛰기

HTTP 트리거, SqlQuery를 사용하여 경로 데이터에서 ID 조회

다음 예제에서는 단일 문서를 검색하는 C# 함수를 보여줍니다. 함수는 조회할 ID를 지정하기 위해 경로 데이터를 사용하는 HTTP 요청에 의해 트리거됩니다. ID는 지정된 데이터베이스 및 컬렉션에서 ToDoItem 문서를 검색하는 데 사용됩니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteDataUsingSqlQuery
    {
        [FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems2/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "select * from ToDoItems r where r.id = {id}")] IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

입력 예제 건너뛰기

HTTP 트리거, 여러 문서 가져오기, SqlQuery 사용

다음 예제에서는 문서 목록을 검색하는 C# 함수를 보여 줍니다. 함수는 HTTP 요청에 의해 트리거됩니다. 쿼리는 SqlQuery 특성 속성에 지정됩니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocsBySqlQuery
    {
        [FunctionName("DocsBySqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
                IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

입력 예제 건너뛰기

HTTP 트리거, DocumentClient를 사용하여 여러 문서 가져오기(C#)

다음 예제에서는 문서 목록을 검색하는 C# 함수를 보여 줍니다. 함수는 HTTP 요청에 의해 트리거됩니다. 코드를 Azure Cosmos DB 바인딩에 의해 제공된 DocumentClient 인스턴스를 사용하여 문서 목록을 읽습니다. DocumentClient 인스턴스는 쓰기 작업에 사용될 수도 있습니다.

using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class DocsByUsingDocumentClient
    {
        [FunctionName("DocsByUsingDocumentClient")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
            string searchterm = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
                .Value;

            if (searchterm == null)
            {
                return req.CreateResponse(HttpStatusCode.NotFound);
            }

            log.Info($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
            IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
                .Where(p => p.Description.Contains(searchterm))
                .AsDocumentQuery();

            while (query.HasMoreResults)
            {
                foreach (ToDoItem result in await query.ExecuteNextAsync())
                {
                    log.Info(result.Description);
                }
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

입력 - 특성

In Process C# 클래스 라이브러리에서 DocumentDB 특성을 사용합니다.

특성의 생성자는 데이터베이스 이름과 컬렉션 이름을 사용합니다. 이러한 설정 및 구성할 수 있는 기타 속성에 대한 자세한 내용은 다음 구성 섹션을 참조하세요.

입력 - 구성

다음 표에서는 function.json 파일 및 DocumentDB 특성에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 특성 속성 설명
type 해당 없음 documentdb로 설정해야 합니다.
direction 해당 없음 in로 설정해야 합니다.
이름 해당 없음 함수에서 문서를 나타내는 바인딩 매개 변수의 이름입니다.
databaseName DatabaseName 문서를 포함하는 데이터베이스입니다.
collectionName CollectionName 문서를 포함하는 컬렉션의 이름입니다.
id ID 검색할 문서의 ID입니다. 이 속성은 바인딩 식을 지원합니다. IDsqlQuery 속성을 모두 설정하지 마세요. 둘 중 하나를 설정하지 않으면 전체 컬렉션이 검색됩니다.
sqlQuery SqlQuery 여러 문서를 검색하는 데 사용되는 Azure Cosmos DB SQL 쿼리입니다. 이 속성은 런타임 바인딩을 지원합니다(예: SELECT * FROM c where c.departmentId = {departmentId}). IDsqlQuery 속성을 모두 설정하지 마세요. 둘 중 하나를 설정하지 않으면 전체 컬렉션이 검색됩니다.
connection ConnectionStringSetting Azure Cosmos DB 연결 문자열 포함하는 앱 설정의 이름입니다.
partitionKey PartitionKey 조회를 위한 파티션 키 값을 지정합니다. 바인딩 매개 변수가 포함될 수 있습니다.

로컬에서 개발하는 경우 Values 컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.

입력 - 사용

함수가 성공적으로 종료되면 명명된 입력 매개 변수를 통해 입력 문서에 변경한 내용이 자동으로 유지됩니다.

출력

Azure Cosmos DB 출력 바인딩을 사용하면 Azure Cosmos DB 데이터베이스에 SQL API를 사용하여 새 문서를 작성할 수 있습니다.

출력 - 예제

이 섹션에는 다음 예제가 포함되어 있습니다.

  • 큐 트리거, 하나의 문서 쓰기
  • 큐 트리거, IAsyncCollector를 사용하여 문서 쓰기

예제는 간단한 ToDoItem 형식을 참조합니다.

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

큐 트리거, 하나의 문서 쓰기

다음 예제에서는 Queue storage의 메시지에 제공된 데이터를 사용하여 문서를 데이터베이스에 추가하는 C# 함수를 보여 줍니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;

namespace CosmosDBSamplesV1
{
    public static class WriteOneDoc
    {
        [FunctionName("WriteOneDoc")]
        public static void Run(
            [QueueTrigger("todoqueueforwrite")] string queueMessage,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
            TraceWriter log)
        {
            document = new { Description = queueMessage, id = Guid.NewGuid() };

            log.Info($"C# Queue trigger function inserted one row");
            log.Info($"Description={queueMessage}");
        }
    }
}

큐 트리거, IAsyncCollector를 사용하여 문서 쓰기

다음 예제에서는 큐 메시지 JSON에 제공된 데이터를 사용하여 문서 컬렉션을 데이터베이스에 추가하는 C# 함수를 보여줍니다.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class WriteDocsIAsyncCollector
    {
        [FunctionName("WriteDocsIAsyncCollector")]
        public static async Task Run(
            [QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]
                IAsyncCollector<ToDoItem> toDoItemsOut,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

            foreach (ToDoItem toDoItem in toDoItemsIn)
            {
                log.Info($"Description={toDoItem.Description}");
                await toDoItemsOut.AddAsync(toDoItem);
            }
        }
    }
}

출력 - 특성

In Process C# 클래스 라이브러리에서 DocumentDB 특성을 사용합니다.

특성의 생성자는 데이터베이스 이름과 컬렉션 이름을 사용합니다. 이러한 설정 및 구성할 수 있는 기타 속성에 대한 자세한 내용은 출력 - 구성을 참조하세요. DocumentDB 다음은 메서드 서명의 특성 예제입니다.

    [FunctionName("QueueToDocDB")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
        [DocumentDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
    {
        ...
    }

전체 예제는 출력을 참조하세요.

출력 - 구성

다음 표에서는 function.json 파일 및 DocumentDB 특성에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 특성 속성 설명
type 해당 없음 documentdb로 설정해야 합니다.
direction 해당 없음 out로 설정해야 합니다.
이름 해당 없음 함수에서 문서를 나타내는 바인딩 매개 변수의 이름입니다.
databaseName DatabaseName 문서가 만들어지는 컬렉션을 포함하는 데이터베이스입니다.
collectionName CollectionName 문서가 만들어진 컬렉션의 이름입니다.
createIfNotExists CreateIfNotExists 컬렉션이 없을 때 생성되는지 여부를 나타내는 부울 값입니다. 새 컬렉션이 예약된 처리량으로 생성되므로 비용에 영향을 주므로 기본값은 false 입니다. 자세한 내용은 가격 책정 페이지를 참조하십시오.
partitionKey PartitionKey true이면 CreateIfNotExists 만든 컬렉션에 대한 파티션 키 경로를 정의합니다.
collectionThroughput CollectionThroughput true이면 CreateIfNotExists 만든 컬렉션의 처리량을 정의합니다.
connection ConnectionStringSetting Azure Cosmos DB 연결 문자열 포함하는 앱 설정의 이름입니다.

로컬에서 개발하는 경우 Values 컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.

출력 - 사용

기본적으로 함수의 출력 매개 변수에 쓸 때 데이터베이스에 문서가 만들어집니다. 이 문서에는 자동으로 생성된 GUID가 문서 ID로 있습니다. 출력 매개 변수에 전달되는 JSON 개체에 id 속성을 지정하여 출력 문서의 문서 ID를 지정할 수 있습니다.

참고 항목

기존 문서의 ID를 지정하면 새 출력 문서에서 덮어씁니다.

예외 및 반환 코드

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

다음 단계