你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用服务连接器集成 Azure Cosmos DB for NoSQL

此页面显示了支持的身份验证方法和客户端,还演示了可用于使用服务连接器将 Azure Cosmos DB for NoSQL 连接到其他云服务的示例代码。 即使不使用服务连接器,你可能仍然能够使用其他编程语言连接到 Azure Cosmos DB for NoSQL。 此页面还显示了你在创建服务连接时获得的默认环境变量名称和值(或 Spring Boot 配置)。

受支持的计算服务

服务连接器可用于将以下计算服务连接到 Azure Cosmos DB for NoSQL:

  • Azure 应用程序服务
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes 服务 (AKS)
  • Azure Spring Apps

受支持的身份验证类型和客户端类型

下表显示了使用服务连接器将计算服务连接到 Azure Cosmos DB for NoSQL 时支持的客户端类型和身份验证方法的组合。 “是”表示支持该组合,“否”表示不支持该组合。

客户端类型 系统分配的托管标识 用户分配的托管标识 机密/连接字符串 服务主体
.NET
Java
Java - Spring Boot
Node.js
Python
Go

此表支持表中客户端类型和身份验证方法的所有组合都受到支持。 所有客户端类型都可通过服务连接器使用任何身份验证方法连接到 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> 替换为你自己的信息。 有关命名约定的详细信息,请参阅服务连接器内部一文。

系统分配的托管标识

SpringBoot 客户端类型

使用系统分配的托管标识作为身份验证类型仅适用于 Spring Cloud Azure 4.0 或更高版本。

默认环境变量名称 说明 示例值
spring.cloud.azure.cosmos.credential.managed-identity-enabled 是否要启用托管标识 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 托管标识范围 https://management.azure.com/.default
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 包进行身份验证,并从服务连接器添加的环境变量中获取终结点 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 客户端类型

使用用户分配的托管标识作为身份验证类型仅适用于 Spring Cloud Azure 4.0 或更高版本。

默认环境变量名称 说明 示例值
spring.cloud.azure.cosmos.credential.managed-identity-enabled 是否要启用托管标识 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 托管标识范围 https://management.azure.com/.default
AZURE_COSMOS_CLIENTID 客户端 ID <client-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 包进行身份验证,并从服务连接器添加的环境变量中获取终结点 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
    );
    

连接字符串

警告

Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。

SpringBoot 客户端类型

默认环境变量名称 说明 示例值
azure.cosmos.key 适用于版本 4.0 以下 Spring Cloud Azure 的数据库的访问密钥 <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. 从服务连接器添加的环境变量中获取连接字符串。

    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 托管标识范围 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 包进行身份验证,并从服务连接器添加的环境变量中获取终结点 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
    );
    

后续步骤

参考下面列出的教程来详细了解服务连接器。