Azure Cosmos DB for NoSQL と Service Connector を統合する

このページでは、サポートされている認証方法とクライアントを示し、Service Connector を使用して Azure Cosmos DB for NoSQL を他のクラウド サービスに接続するために使用できるサンプル コードを示します。 Service Connector を使用しなくても、他のプログラミング言語で Azure Cosmos DB for NoSQL に接続できる場合があります。 このページには、サービス接続を作成するときに取得する既定の環境変数の名前と値 (つまり、Spring Boot 構成) も示されています。

サポートされているコンピューティング サービス

Service Connector を使用して、次のコンピューティング サービスを Azure Cosmos DB for NoSQL に接続できます。

  • Azure App Service
  • Azure Functions
  • Azure Container Apps
  • Azure Spring Apps

サポートされている認証の種類とクライアントの種類

次の表は、Service Connector を使用してコンピューティング サービスを Azure Cosmos DB for NoSQL に接続するためにサポートされているクライアントの種類と認証方法の組み合わせを示しています。 "はい" は組み合わせがサポートされていることを示し、"いいえ" はサポートされていないことを示します。

クライアント タイプ システム割り当てマネージド ID ユーザー割り当てマネージド ID シークレット/接続文字列 サービス プリンシパル
.NET はい イエス イエス はい
Java はい イエス イエス はい
Java - Spring Boot はい イエス イエス はい
Node.js はい イエス イエス はい
Python はい イエス イエス はい
Go はい イエス イエス はい
なし 有効 イエス イエス はい

この表は、表内のクライアント・タイプと認証方法のすべての組み合わせがサポートされていることを示しています。 すべてのクライアントの種類では、任意の認証方法を使用して、Service Connector を使用して Azure Cosmos DB for NoSQL に接続できます。

デフォルトの環境変数名またはアプリケーション プロパティとサンプル コード

以下の接続の詳細を使用して、コンピューティング サービスを Azure Cosmos DB for NoSQL に接続します。 以下の各例では、プレースホルダーのテキスト <database-server><database-name><account-key><resource-group-name><subscription-ID><client-ID><SQL-server><client-secret><tenant-id>、および<access-key> を実際の情報に置き換えます。 名前付け規則の詳細については、Service Connector の内部の記事を参照してください。

システム割り当てマネージド ID

SpringBoot クライアントの種類

認証の種類としてシステム割り当てマネージド ID を使用することは、Spring Cloud Azure バージョン 4.0 以降でのみ使用できます。

既定の環境変数名 説明 例値
spring.cloud.azure.cosmos.credential.managed-identity-enabled マネージド ID を有効にするかどうか true
spring.cloud.azure.cosmos.database データベース https://management.azure.com/.default
spring.cloud.azure.cosmos.endpoint リソース エンドポイント https://<database-server>.documents.azure.com:443/

その他のクライアントの種類

既定の環境変数名 説明 例値
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 接続文字列を取得するための URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE マネージド ID の範囲 https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT リソース エンドポイント https://<database-server>.documents.azure.com:443/

サンプル コード

システム割り当て ID を使用して Azure Cosmos DB for NoSQL に接続するには、以下の手順とコードを参照してください。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Azure.Identity NuGet パッケージ を使用して認証し、Service Connector によって追加された環境変数からエンドポイント URL を取得します。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

ユーザー割り当てマネージド ID

SpringBoot クライアントの種類

認証の種類としてユーザー割り当てマネージド ID を使用することは、Spring Cloud Azure バージョン 4.0 以降でのみ使用できます。

既定の環境変数名 説明 例値
spring.cloud.azure.cosmos.credential.managed-identity-enabled マネージド ID を有効にするかどうか true
spring.cloud.azure.cosmos.database データベース https://management.azure.com/.default
spring.cloud.azure.cosmos.endpoint リソース エンドポイント https://<database-server>.documents.azure.com:443/
spring.cloud.azure.cosmos.credential.client-id クライアント ID <client-ID>

その他のクライアントの種類

既定の環境変数名 説明 例値
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 接続文字列を取得するための URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/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://<database-server>.documents.azure.com:443/

サンプル コード

ユーザー割り当て ID を使用して Azure Cosmos DB for NoSQL に接続するには、以下の手順とコードを参照してください。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Azure.Identity NuGet パッケージ を使用して認証し、Service Connector によって追加された環境変数からエンドポイント URL を取得します。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

接続文字列

SpringBoot クライアントの種類

既定の環境変数名 説明 例値
azure.cosmos.key Spring Cloud Azure バージョン 4.0 より前のデータベースのアクセス キー <access-key>
azure.cosmos.database 4.0 より前の Spring Cloud Azure バージョンのデータベース <database-name>
azure.cosmos.uri 4.0 より前の Spring Cloud Azure バージョンのデータベース URI https://<database-server>.documents.azure.com:443/
spring.cloud.azure.cosmos.key 4.0 を超える Spring Cloud Azure バージョンのデータベースのアクセス キー <access-key>
spring.cloud.azure.cosmos.database 4.0 を超える Spring Cloud Azure バージョンのデータベース <database-name>
spring.cloud.azure.cosmos.endpoint 4.0 を超える Spring Cloud Azure バージョンのデータベース URI https://<database-server>.documents.azure.com:443/

その他のクライアントの種類

既定の環境変数名 説明 例値
AZURE_COSMOS_CONNECTIONSTRING Azure Cosmos DB for NoSQL の接続文字列 AccountEndpoint=https://<database-server>.documents.azure.com:443/;AccountKey=<account-key>

サンプル コード

接続文字列を使用して Azure Cosmos DB for NoSQL に接続するには、以下の手順とコードを参照してください。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.Cosmos
    
  2. Service Connector によって追加された環境変数から接続文字列を取得します。

    using Microsoft.Azure.Cosmos;
    using System; 
    
    // Create a new instance of CosmosClient using a connection string
    using CosmosClient client = new(
        connectionString: Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING")!
    );
    

サービス プリンシパル

SpringBoot クライアントの種類

既定の環境変数名 説明 例値
spring.cloud.azure.cosmos.credential.client-id クライアント ID <client-ID>
spring.cloud.azure.cosmos.credential.client-secret クライアント シークレット <client-secret>
spring.cloud.azure.cosmos.profile.tenant-id テナント ID <tenant-ID>
spring.cloud.azure.cosmos.database データベース <database-name>
spring.cloud.azure.cosmos.endpoint リソース エンドポイント https://<database-server>.documents.azure.com:443/

その他のクライアントの種類

既定の環境変数名 説明 例値
AZURE_COSMOS_LISTCONNECTIONSTRINGURL 接続文字列を取得するための URL https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/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://<database-server>.documents.azure.com:443/

サンプル コード

サービス プリンシパルを使用して Azure Cosmos DB for NoSQL に接続するには、以下の手順とコードを参照してください。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Azure.Identity NuGet パッケージ を使用して認証し、Service Connector によって追加された環境変数からエンドポイント URL を取得します。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

次のステップ

Service Connector の詳細については、以下のチュートリアルに従ってください。