서비스 커넥터와 Azure Cosmos DB for MongoDB 통합

이 페이지에는 지원되는 인증 방법 및 클라이언트가 표시되며, 서비스 커넥터를 사용하여 Azure Cosmos DB for MongoDB를 다른 클라우드 서비스에 연결하는 데 사용할 수 있는 샘플 코드가 표시됩니다. 서비스 커넥터를 사용하지 않고 다른 프로그래밍 언어로 Azure Cosmos DB for MongoDB에 계속 연결할 수 있습니다. 이 페이지에서는 서비스 연결을 만들 때 가져오는 기본 환경 변수 이름과 값(또는 Spring Boot 구성)도 보여 줍니다.

지원되는 컴퓨팅 서비스

서비스 커넥터를 사용하여 다음 컴퓨팅 서비스를 Azure Cosmos DB for MongoDB에 연결할 수 있습니다.

  • Azure App Service
  • Azure 기능
  • Azure Container Apps
  • Azure Spring Apps

지원되는 인증 유형 및 클라이언트 유형

아래 표에서는 서비스 커넥터를 사용하여 컴퓨팅 서비스를 Azure Cosmos DB for MongoDB에 연결하는 데 지원되는 클라이언트 유형 및 인증 방법의 조합을 보여 줍니다. "예"는 조합이 지원됨을 나타내고 "아니오"는 지원되지 않음을 나타냅니다.

클라이언트 유형 시스템 할당 관리 ID 사용자 할당 관리 ID 비밀/연결 문자열 서비스 사용자
.NET
Java
Java - Spring Boot 아니요 없음 아니요
Node.JS
Python
Go
없음

이 표는 비밀/연결 문자열 메서드만 지원하는 Java - Spring Boot 클라이언트 유형을 제외하고 표에 클라이언트 유형과 인증 방법의 모든 조합이 지원됨을 나타냅니다. 다른 모든 클라이언트 유형은 인증 방법을 사용하여 서비스 커넥터를 통해 Azure Cosmos DB for MongoDB에 연결할 수 있습니다.

기본 환경 변수 이름 또는 애플리케이션 속성과 샘플 코드

아래의 연결 세부 정보를 사용하여 컴퓨팅 서비스를 Azure Cosmos DB에 연결합니다. 이 페이지에서는 서비스 연결을 만들 때 가져오는 기본 환경 변수 이름과 값(또는 Spring Boot 구성)도 보여 줍니다. 아래의 각 예에서 개체 자리 표시자 텍스트 <mongo-db-admin-user>, <password>, <Azure-Cosmos-DB-API-for-MongoDB-account>, <subscription-ID>, <resource-group-name>, <client-secret><tenant-id>를 고유의 정보로 바꿉니다. 명명 규칙에 대한 자세한 내용은 서비스 커넥터 내부 문서를 참조하세요.

시스템 할당 관리 ID

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 연결 문자열을 가져올 URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE 관리 ID 범위 https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT 리소스 엔드포인트 https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

샘플 코드

시스템이 할당한 관리 ID를 사용하여 Azure Cosmos DB for MongoDB에 연결하려면 아래 단계 및 코드를 참조하세요.

  1. 종속성 설치

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for MongoDB에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

사용자 할당 관리 ID

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 연결 문자열을 가져올 URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE 관리 ID 범위 https://management.azure.com/.default
AZURE_COSMOS_CLIENTID 클라이언트 ID <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT 리소스 엔드포인트 https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

샘플 코드

사용자가 할당한 관리 ID를 사용하여 Azure Cosmos DB for MongoDB에 연결하려면 아래 단계 및 코드를 참조하세요.

  1. 종속성 설치

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for MongoDB에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Connection string

SpringBoot 클라이언트 유형

기본 환경 변수 이름 설명 예제 값
spring.data.mongodb.database 데이터베이스 <database-name>
spring.data.mongodb.uri 데이터베이스 URI mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

기타 클라이언트 유형

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_CONNECTIONSTRING MongoDB API 연결 문자열 mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

샘플 코드

연결 문자열을 사용하여 Azure Cosmos DB for MongoDB에 연결하려면 아래 단계 및 코드를 참조하세요.

  1. 종속성을 설치합니다.

    dotnet add package MongoDb.Driver
    
  2. 서비스 커넥터에서 추가한 환경 변수에서 연결 문자열을 가져와 Azure Cosmos DB for MongoDB에 연결합니다.

    using MongoDB.Driver;
    
    var connectionString = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING");
    var client = new MongoClient(connectionString);
    

서비스 사용자

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 연결 문자열을 가져올 URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE 관리 ID 범위 https://management.azure.com/.default
AZURE_COSMOS_CLIENTID 클라이언트 ID <client-ID>
AZURE_COSMOS_CLIENTSECRET 클라이언트 암호 <client-secret>
AZURE_COSMOS_TENANTID 테넌트 ID <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT 리소스 엔드포인트 https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

샘플 코드

서비스 주체를 사용하여 Azure Cosmos DB for MongoDB에 연결하려면 아래 단계 및 코드를 참조하세요.

  1. 종속성 설치

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for MongoDB에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

다음 단계

서비스 커넥터에 대해 자세히 알아보려면 아래 나열된 자습서를 따르세요.