Azure Functions 2.x 이상에 대한 Azure Cosmos DB 출력 바인딩

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

설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.

Important

이 문서에서는 탭을 사용하여 여러 버전의 Node.js 프로그래밍 모델을 지원합니다. v4 모델은 일반적으로 사용 가능하며 JavaScript 및 TypeScript 개발자를 위해 보다 유연하고 직관적인 환경을 제공하도록 설계되었습니다. v4 모델의 작동 방식에 대한 자세한 내용은 Azure Functions Node.js 개발자 가이드를 참조하세요. v3과 v4의 차이점에 대해 자세히 알아보려면 마이그레이션 가이드를 참조하세요.

Azure Functions는 Python에 대해 두 가지 프로그래밍 모델을 지원합니다. 바인딩을 정의하는 방법은 선택한 프로그래밍 모델에 따라 달라집니다.

Python v2 프로그래밍 모델을 사용하면 Python 함수 코드에서 직접 데코레이터를 사용하여 바인딩을 정의할 수 있습니다. 자세한 내용은 Python 개발자 가이드참조하세요.

이 문서에서는 두 프로그래밍 모델을 모두 지원합니다.

C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다. 격리된 작업자 프로세스 함수에 대한 확장은 Microsoft.Azure.Functions.Worker.Extensions.* 네임스페이스를 사용합니다.
  • In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다. 이 모델의 변형에서는 주로 C# 포털 편집에 지원되는 C# 스크립팅을 사용하여 Functions를 실행할 수 있습니다. In Process 함수에 대한 확장은 Microsoft.Azure.WebJobs.Extensions.* 네임스페이스를 사용합니다.

Important

2026년 11월 10일에 In-process 모델에 대한 지원이 종료됩니다. 모든 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.

예시

달리 명시하지 않는 한 이 문서의 예제는 Azure Cosmos DB 확장의 버전 3.x를 대상으로 합니다. 확장 버전 4.x와 함께 사용하려면 속성 및 특성 이름의 containerconnection_string_settingconnection문자열 collection 을 .로 바꿔야 합니다.

다음 코드는 MyDocument 형식을 정의합니다.

public class MyDocument
{
    public string Id { get; set; }

    public string Text { get; set; }

    public int Number { get; set; }

    public bool Boolean { get; set; }
}

다음 예에서 반환 형식은 트리거 바인딩 매개 변수에서 수정된 문서 목록인 IReadOnlyList<T>입니다.

using System.Collections.Generic;
using System.Linq;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace SampleApp
{
    public class CosmosDBFunction
    {
        private readonly ILogger<CosmosDBFunction> _logger;

        public CosmosDBFunction(ILogger<CosmosDBFunction> logger)
        {
            _logger = logger;
        }

        //<docsnippet_exponential_backoff_retry_example>
        [Function(nameof(CosmosDBFunction))]
        [ExponentialBackoffRetry(5, "00:00:04", "00:15:00")]
        [CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", Connection = "CosmosDBConnection", CreateIfNotExists = true)]
        public object Run(
            [CosmosDBTrigger(
                "%CosmosDb%",
                "%CosmosContainerIn%",
                Connection = "CosmosDBConnection",
                LeaseContainerName = "leases",
                CreateLeaseContainerIfNotExists = true)] IReadOnlyList<MyDocument> input,
            FunctionContext context)
        {
            if (input != null && input.Any())
            {
                foreach (var doc in input)
                {
                    _logger.LogInformation("Doc Id: {id}", doc.Id);
                }

                // Cosmos Output
                return input.Select(p => new { id = p.Id });
            }

            return null;
        }
        //</docsnippet_exponential_backoff_retry_example>
    }

큐 트리거, 반환 값을 통해 데이터베이스에 메시지 저장

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

@FunctionName("getItem")
@CosmosDBOutput(name = "database",
  databaseName = "ToDoList",
  collectionName = "Items",
  connectionStringSetting = "AzureCosmosDBConnection")
public String cosmosDbQueryById(
    @QueueTrigger(name = "msg",
      queueName = "myqueue-items",
      connection = "AzureWebJobsStorage")
    String message,
    final ExecutionContext context)  {
     return "{ id: \"" + System.currentTimeMillis() + "\", Description: " + message + " }";
   }

HTTP 트리거, 반환 값을 통해 데이터베이스에 문서 하나 저장

다음 예제에서는 시그니처에 @CosmosDBOutput이 주석으로 지정되고 String 형식의 반환 값을 갖는 Java 함수를 보여줍니다. 함수에서 반환된 JSON 문서는 해당 Azure Cosmos DB 컬렉션에 자동으로 기록됩니다.

    @FunctionName("WriteOneDoc")
    @CosmosDBOutput(name = "database",
      databaseName = "ToDoList",
      collectionName = "Items",
      connectionStringSetting = "Cosmos_DB_Connection_String")
    public String run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Generate random ID
        final int id = Math.abs(new Random().nextInt());

        // Generate document
        final String jsonDocument = "{\"id\":\"" + id + "\", " +
                                    "\"description\": \"" + name + "\"}";

        context.getLogger().info("Document to be saved: " + jsonDocument);

        return jsonDocument;
    }

HTTP 트리거, OutputBinding을 통해 하나의 문서를 데이터베이스에 저장

다음 예제에서는 OutputBinding<T> 출력 매개 변수를 통해 Azure Cosmos DB에 문서를 쓰는 Java 함수를 보여줍니다. 이 예제에서는 함수 서명이 outputItem 아니라 매개 변수에 주석을 추가 @CosmosDBOutput해야 합니다. OutputBinding<T>을 사용하면 JSON 또는 XML 문서와 같은 함수 호출자에 다른 값을 반환하도록 허용하면서 함수가 바인딩을 활용하여 Azure Cosmos DB에 문서를 쓸 수 있습니다.

    @FunctionName("WriteOneDocOutputBinding")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBOutput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            OutputBinding<String> outputItem,
            final ExecutionContext context) {

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Generate random ID
        final int id = Math.abs(new Random().nextInt());

        // Generate document
        final String jsonDocument = "{\"id\":\"" + id + "\", " +
                                    "\"description\": \"" + name + "\"}";

        context.getLogger().info("Document to be saved: " + jsonDocument);

        // Set outputItem's value to the JSON document to be saved
        outputItem.setValue(jsonDocument);

        // return a different document to the browser or calling client.
        return request.createResponseBuilder(HttpStatus.OK)
                      .body("Document created successfully.")
                      .build();
    }

HTTP 트리거, OutputBinding을 통해 데이터베이스에 여러 문서 저장

다음 예제에서는 OutputBinding<T> 출력 매개 변수를 통해 Azure Cosmos DB에 여러 문서를 쓰는 Java 함수를 보여줍니다. 이 예제 outputItem 에서 매개 변수는 함수 서명이 아닌 주석으로 주석을 추가 @CosmosDBOutput합니다. 출력 매개 변수 outputItem 에는 템플릿 매개 변수 형식으로 개체 목록이 ToDoItem 있습니다. OutputBinding<T>을 사용하면 JSON 또는 XML 문서와 같은 함수 호출자에 다른 값을 반환하도록 허용하면서 함수가 바인딩을 활용하여 Azure Cosmos DB에 문서를 쓸 수 있습니다.

    @FunctionName("WriteMultipleDocsOutputBinding")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBOutput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            OutputBinding<List<ToDoItem>> outputItem,
            final ExecutionContext context) {

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Generate documents
        List<ToDoItem> items = new ArrayList<>();

        for (int i = 0; i < 5; i ++) {
          // Generate random ID
          final int id = Math.abs(new Random().nextInt());

          // Create ToDoItem
          ToDoItem item = new ToDoItem(String.valueOf(id), name);

          items.add(item);
        }

        // Set outputItem's value to the list of POJOs to be saved
        outputItem.setValue(items);
        context.getLogger().info("Document to be saved: " + items);

        // return a different document to the browser or calling client.
        return request.createResponseBuilder(HttpStatus.OK)
                      .body("Documents created successfully.")
                      .build();
    }

Java 함수 런타임 라이브러리에서 Azure Cosmos DB에 작성될 매개 변수에 대한 @CosmosDBOutput 주석을 사용합니다. 주석 매개 변수 형식은 네이 T 티브 Java 형식 또는 POJO인 형식이어야 합니다OutputBinding<T>.

다음 예제에서는 다음 형식으로 JSON을 수신하는 큐에 대해 트리거된 스토리지 큐 TypeScript 함수를 보여 줍니다.

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

이 함수는 각 레코드에 대해 다음과 같은 형식의 Azure Cosmos DB 문서를 만듭니다.

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

TypeScript 코드는 다음과 같습니다.

import { app, InvocationContext, output } from '@azure/functions';

interface MyQueueItem {
    name: string;
    employeeId: string;
    address: string;
}

interface MyCosmosItem {
    id: string;
    name: string;
    employeeId: string;
    address: string;
}

export async function storageQueueTrigger1(queueItem: MyQueueItem, context: InvocationContext): Promise<MyCosmosItem> {
    return {
        id: `${queueItem.name}-${queueItem.employeeId}`,
        name: queueItem.name,
        employeeId: queueItem.employeeId,
        address: queueItem.address,
    };
}

app.storageQueue('storageQueueTrigger1', {
    queueName: 'inputqueue',
    connection: 'MyStorageConnectionAppSetting',
    return: output.cosmosDB({
        databaseName: 'MyDatabase',
        collectionName: 'MyCollection',
        createIfNotExists: true,
        connectionStringSetting: 'MyAccount_COSMOSDB',
    }),
    handler: storageQueueTrigger1,
});

여러 문서를 출력하려면 단일 개체 대신 배열을 반환합니다. 예시:

return [
    {
        id: 'John Henry-123456',
        name: 'John Henry',
        employeeId: '123456',
        address: 'A town nearby',
    },
    {
        id: 'John Doe-123457',
        name: 'John Doe',
        employeeId: '123457',
        address: 'A town far away',
    },
];

다음 예제에서는 다음 형식으로 JSON을 수신하는 큐에 대해 트리거된 스토리지 큐 TypeScript 함수를 보여 줍니다.

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

이 함수는 각 레코드에 대해 다음과 같은 형식의 Azure Cosmos DB 문서를 만듭니다.

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

JavaScript 코드는 다음과 같습니다.

const { app, output } = require('@azure/functions');

const cosmosOutput = output.cosmosDB({
    databaseName: 'MyDatabase',
    collectionName: 'MyCollection',
    createIfNotExists: true,
    connectionStringSetting: 'MyAccount_COSMOSDB',
});

app.storageQueue('storageQueueTrigger1', {
    queueName: 'inputqueue',
    connection: 'MyStorageConnectionAppSetting',
    return: cosmosOutput,
    handler: (queueItem, context) => {
        return {
            id: `${queueItem.name}-${queueItem.employeeId}`,
            name: queueItem.name,
            employeeId: queueItem.employeeId,
            address: queueItem.address,
        };
    },
});

여러 문서를 출력하려면 단일 개체 대신 배열을 반환합니다. 예시:

return [
    {
        id: 'John Henry-123456',
        name: 'John Henry',
        employeeId: '123456',
        address: 'A town nearby',
    },
    {
        id: 'John Doe-123457',
        name: 'John Doe',
        employeeId: '123457',
        address: 'A town far away',
    },
];

다음 예제에서는 출력 바인딩을 사용하여 Azure Cosmos DB에 데이터를 쓰는 방법을 보여 줍니다. 바인딩은 함수의 구성 파일(functions.json)에 선언되고 큐 메시지에서 데이터를 가져와 Azure Cosmos DB 문서에 기록합니다.

{ 
  "name": "EmployeeDocument",
  "type": "cosmosDB",
  "databaseName": "MyDatabase",
  "collectionName": "MyCollection",
  "createIfNotExists": true,
  "connectionStringSetting": "MyStorageConnectionAppSetting",
  "direction": "out" 
} 

run.ps1 파일에서, 함수에서 반환된 개체는 데이터베이스에 유지되는 EmployeeDocument 개체에 매핑됩니다.

param($QueueItem, $TriggerMetadata) 

Push-OutputBinding -Name EmployeeDocument -Value @{ 
    id = $QueueItem.name + '-' + $QueueItem.employeeId 
    name = $QueueItem.name 
    employeeId = $QueueItem.employeeId 
    address = $QueueItem.address 
} 

다음 예제에서는 함수의 출력으로 Azure Cosmos DB 데이터베이스에 문서를 작성하는 방법을 보여줍니다. 이 예제는 v1 또는 v2 Python 프로그래밍 모델을 사용하는지 여부에 따라 달라집니다.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.route()
@app.cosmos_db_output(arg_name="documents", 
                      database_name="DB_NAME",
                      collection_name="COLLECTION_NAME",
                      create_if_not_exists=True,
                      connection_string_setting="CONNECTION_SETTING")
def main(req: func.HttpRequest, documents: func.Out[func.Document]) -> func.HttpResponse:
    request_body = req.get_body()
    documents.set(func.Document.from_json(request_body))
    return 'OK'

특성

In Process격리된 작업자 프로세스 C# 라이브러리는 모두 특성을 사용하여 함수를 정의합니다. 대신 C# 스크립트는 C# 스크립팅 가이드에 설명된 대로 function.json 구성 파일을 사용합니다.

특성 속성 설명
Connection 모니터링 중인 Azure Cosmos DB 계정에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 자세한 내용은 연결을 참조하세요.
DatabaseName 컨테이너가 모니터링되는 Azure Cosmos DB 데이터베이스의 이름입니다.
ContainerName 모니터링되는 컨테이너의 이름입니다.
CreateIfNotExists 컨테이너가 존재하지 않을 때 만들어지는지 여부를 나타내는 부울 값입니다. 예약된 처리량으로 새 컨테이너가 만들어지고 비용에 영향을 미치므로 기본값은 false입니다. 자세한 내용은 가격 책정 페이지를 참조하십시오.
PartitionKey CreateIfNotExists이 true이면 만들어진 컨테이너의 파티션 키 경로를 정의합니다. 바인딩 매개 변수가 포함될 수 있습니다.
ContainerThroughput CreateIfNotExists가 true이면 만들어진 컨테이너의 처리량을 정의합니다.
PreferredLocations (선택 사항) Azure Cosmos DB 서비스에서 지역 복제된 데이터베이스 계정에 대한 기본 위치(지역)를 정의합니다. 값은 쉼표로 구분해야 합니다. 예들 들어 East US,South Central US,North Europe입니다.

데코레이터

Python v2 프로그래밍 모델에만 적용됩니다.

데코레이터를 사용하여 정의된 Python v2 함수의 경우 다음 속성은 cosmos_db_output다음과 같습니다.

속성 설명
arg_name 변경 사항이 포함된 문서 목록을 나타내는 함수 코드에 사용되는 변수 이름.
database_name 모니터링 중인 컬렉션이 있는 Azure Cosmos DB 데이터베이스의 이름입니다.
collection_name 모니터링 중인 Azure Cosmos DB 컬렉션의 이름입니다.
create_if_not_exists 데이터베이스 및 컬렉션이 없는 경우 생성해야 하는지 여부를 나타내는 부울 값입니다.
connection_string_setting 모니터링되는 Azure Cosmos DB의 연결 문자열.

function.json 사용하여 정의된 Python 함수는 구성 섹션을 참조하세요.

주석

Java 함수 런타임 라이브러리에서 Azure Cosmos DB에 작성될 매개 변수에 대한 @CosmosDBOutput 주석을 사용합니다. 주석은 다음 속정을 지원합니다.

구성

Python v1 프로그래밍 모델에만 적용됩니다.

다음 표에서는 output.cosmosDB() 메서드에 전달된 options 개체에 설정할 수 있는 속성에 대해 설명합니다. type, directionname 속성은 v4 모델에 적용되지 않습니다.

다음 표에서는 확장 버전에 따라 속성이 다른 function.json 파일에서 설정한 바인딩 구성 속성을 설명합니다.

function.json 속성 설명
connection 모니터링 중인 Azure Cosmos DB 계정에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 자세한 내용은 연결을 참조하세요.
databaseName 컨테이너가 모니터링되는 Azure Cosmos DB 데이터베이스의 이름입니다.
containerName 모니터링되는 컨테이너의 이름입니다.
createIfNotExists 컨테이너가 존재하지 않을 때 만들어지는지 여부를 나타내는 부울 값입니다. 예약된 처리량으로 새 컨테이너가 만들어지고 비용에 영향을 미치므로 기본값은 false입니다. 자세한 내용은 가격 책정 페이지를 참조하십시오.
partitionKey createIfNotExists이 true이면 만들어진 컨테이너의 파티션 키 경로를 정의합니다. 바인딩 매개 변수가 포함될 수 있습니다.
containerThroughput createIfNotExists가 true이면 만들어진 컨테이너의 처리량을 정의합니다.
preferredLocations (선택 사항) Azure Cosmos DB 서비스에서 지역 복제된 데이터베이스 계정에 대한 기본 위치(지역)를 정의합니다. 값은 쉼표로 구분해야 합니다. 예들 들어 East US,South Central US,North Europe입니다.

전체 예제는 예제 섹션을 참조하세요.

사용

기본적으로 함수의 출력 매개 변수에 쓸 때 데이터베이스에 문서가 만들어집니다. 출력 매개 변수에 전달된 JSON 개체의 속성을 지정하여 id 출력 문서의 문서 ID를 지정해야 합니다.

참고 항목

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

Cosmor DB 출력 바인딩에서 지원하는 매개 변수 형식은 Functions 런타임 버전, 확장 패키지 버전 및 사용된 C# 형식에 따라 다릅니다.

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

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

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

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

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

연결

connectionStringSetting/connectionleaseConnectionStringSetting/leaseConnection 속성은 앱이 Azure Cosmos DB에 연결해야 하는 방법을 지정하는 환경 구성에 대한 참조입니다. 다음을 지정할 수 있습니다.

  • 연결 문자열이 포함된 애플리케이션 설정의 이름
  • 함께 ID 기반 연결을 정의하는 여러 애플리케이션 설정에 대한 공유 접두사의 이름입니다. 이 옵션은 확장 버전 4.x 이상connectionleaseConnection 버전에만 사용할 수 있습니다.

구성된 값이 단일 설정에 대해 정확히 일치하고 다른 설정에 대해 접두사가 일치하는 경우 정확한 일치가 사용됩니다.

Connection string

데이터베이스 계정에 대한 연결 문자열은 바인딩 구성의 연결 속성에 지정된 값과 일치하는 이름으로 애플리케이션 설정에 저장해야 합니다.

ID 기반 연결

버전 4.x 이상을 사용하는 경우 비밀과 함께 연결 문자열 사용하는 대신 앱에서 Microsoft Entra ID사용하도록 할 수 있습니다. 이렇게 하려면 트리거 및 바인딩 구성의 연결 속성에 매핑되는 공통 접두사 아래에 설정을 정의합니다.

이 모드에서 확장에는 다음 속성이 필요합니다.

속성 환경 변수 템플릿 설명 예제 값
계정 엔드포인트 <CONNECTION_NAME_PREFIX>__accountEndpoint Azure Cosmos DB 계정 엔드포인트 URI. https://<database_account_name>.documents.azure.com:443/

연결을 사용자 지정하기 위해 추가 속성을 설정할 수 있습니다. ID 기반 연결의 공통 속성을 참조하세요.

Azure Functions 서비스에서 호스트되는 경우 ID 기반 연결에 관리 ID가 사용됩니다. 사용자가 할당한 ID는 credentialclientID 속성을 사용하여 지정할 수 있지만 기본적으로 시스템 할당 ID가 사용됩니다. 리소스 ID를 사용하여 사용자가 할당한 ID를 구성하는 것은 지원되지 않습니다. 로컬 개발과 같은 다른 컨텍스트에서 실행할 때 사용자 지정할 수 있지만 대신 개발자 ID가 사용됩니다. ID 기반 연결을 사용하여 로컬 개발을 참조하세요.

ID에 권한 부여

사용되는 모든 ID에는 의도한 작업을 수행할 수 있는 권한이 있어야 합니다. 대부분 Azure 서비스의 경우 이는 해당 권한을 제공하는 기본 제공 또는 사용자 지정 역할을 사용하여 Azure RBAC에서 역할을 할당해야 함을 의미합니다.

Important

일부 사용 권한은 모든 컨텍스트에 필요하지 않은 대상 서비스에 의해 노출될 수 있습니다. 가능한 경우 최소 권한 원칙을 준수하여 ID에 필요한 권한만 부여하세요. 예를 들어 앱이 데이터 원본에서 읽을 수만 있으면 되는 경우 읽기 권한만 있는 역할을 사용합니다. 읽기 작업에 대한 과도한 권한이 될 수 있으므로 해당 서비스에 쓰기도 허용하는 역할을 할당하는 것은 부적절합니다. 마찬가지로 역할 할당이 읽어야 하는 리소스에 대해서만 범위가 할당되도록 할 수 있습니다.

Cosmos DB는 데이터 작업에 Azure RBAC를 사용하지 않습니다. 대신 유사한 개념으로 빌드되는 Cosmos DB 기본 제공 RBAC 시스템을 사용합니다. 런타임에 데이터베이스 계정에 대한 액세스를 제공하는 역할 할당을 만들어야 합니다. 소유자와 같은 Azure RBAC 관리 역할로는 충분하지 않습니다. 다음 표에는 Azure Cosmos DB 확장을 정상 작동할 때 권장되는 기본 제공 역할이 나와 있습니다. 작성하는 코드에 따라 애플리케이션에 추가 권한이 필요할 수 있습니다.

바인딩 유형 예제 기본 제공 역할1
트리거2 Cosmos DB 기본 제공 데이터 기여자
입력 바인딩 Cosmos DB 기본 제공 데이터 판독기
출력 바인딩 Cosmos DB 기본 제공 데이터 기여자

1 이 역할은 Azure RBAC 역할 할당에서 사용할 수 없습니다. 이 역할을 할당하는 방법에 대한 자세한 내용은 Cosmos DB 기본 제공 RBAC 시스템 설명서를 참조하세요.

2 ID를 사용하는 경우 Cosmos DB는 컨테이너 만들기를 관리 작업으로 처리합니다. 트리거에 대한 데이터 평면 작업으로 사용할 수 없습니다. 함수를 설정하기 전에 트리거에 필요한 컨테이너(임대 컨테이너 포함)를 만들어야 합니다.

예외 및 반환 코드

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

다음 단계