다음을 통해 공유


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

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

지원되는 컴퓨팅 서비스

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

  • Azure App Service
  • Azure Container Apps
  • Azure 기능
  • AKS(Azure Kubernetes Service)
  • Azure Spring Apps

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

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

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

이 표는 표에 있는 클라이언트 유형과 인증 방법의 모든 조합이 지원됨을 나타냅니다. 모든 클라이언트 유형은 어느 인증 방법으로나 서비스 커넥터를 사용하여 Azure Cosmos DB for Table에 연결할 수 있습니다.

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

아래 연결 세부 정보를 사용하여 컴퓨팅 서비스를 Azure Cosmos DB for Table에 연결합니다. 아래의 각 예제에서 자리 표시자 텍스트 <account-name>, <table-name>, <account-key>, <resource-group-name>, <subscription-ID>, <client-ID>, <client-secret>, <tenant-id>를 고유의 정보로 바꿉니다. 명명 규칙에 대한 자세한 내용은 서비스 커넥터 내부 문서를 확인하세요.

시스템 할당 관리 ID

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

샘플 코드

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

  1. 종속성을 설치합니다.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for Table에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

사용자 할당 관리 ID

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 연결 문자열을 가져올 URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<table-name>/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://<table-name>.documents.azure.com:443/

샘플 코드

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

  1. 종속성을 설치합니다.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for Table에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

Connection string

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_CONNECTIONSTRING Azure Cosmos DB for Table 연결 문자열 DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

Warning

사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명된 인증 흐름은 다른 흐름에는 없는 위험을 전달하며, 애플리케이션에서 매우 높은 신뢰 수준을 요구합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.

샘플 코드

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

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

    dotnet add package Azure.Data.Tables
    
  2. 서비스 커넥터에서 추가한 환경 변수에서 연결 문자열을 가져옵니다.

    using Azure.Data.Tables;
    using System; 
    
    TableServiceClient tableServiceClient = new TableServiceClient(Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING"));
    

서비스 사용자

기본 환경 변수 이름 설명 예제 값
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 연결 문자열을 가져올 URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<table-name>/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://<table-name>.documents.azure.com:443/

샘플 코드

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

  1. 종속성을 설치합니다.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. 클라이언트 라이브러리 Azure.Identity를 사용하여 관리 ID 또는 서비스 주체에 대한 액세스 토큰을 가져옵니다. 액세스 토큰 및 AZURE_COSMOS_LISTCONNECTIONSTRINGURL을 사용하여 연결 문자열을 가져옵니다. 서비스 커넥터에서 추가한 환경 변수에서 연결 정보를 가져와 Azure Cosmos DB for Table에 연결합니다. 아래 코드를 사용하는 경우 사용하려는 인증 유형에 대한 코드 조각 부분의 주석 처리를 제거합니다.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

다음 단계

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