Udostępnij za pośrednictwem


Integrowanie usługi Azure Cosmos DB dla bazy danych MongoDB z usługą Połączenie or

Na tej stronie przedstawiono obsługiwane metody uwierzytelniania i klientów oraz pokazano przykładowy kod, za pomocą którego można połączyć usługę Azure Cosmos DB dla bazy danych MongoDB z innymi usługami w chmurze przy użyciu usługi Service Połączenie or. Nadal możesz nawiązać połączenie z usługą Azure Cosmos DB dla bazy danych MongoDB w innych językach programowania bez korzystania z usługi Połączenie or. Na tej stronie są również wyświetlane domyślne nazwy zmiennych środowiskowych i wartości (lub konfiguracja platformy Spring Boot) podczas tworzenia połączenia z usługą.

Obsługiwane usługi obliczeniowe

Usługa Połączenie or może służyć do łączenia następujących usług obliczeniowych z usługą Azure Cosmos DB dla bazy danych MongoDB:

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

Obsługiwane typy uwierzytelniania i typy klientów

W poniższej tabeli pokazano, które kombinacje typów klientów i metod uwierzytelniania są obsługiwane do łączenia usługi obliczeniowej z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu usługi Service Połączenie or. Wartość "Tak" wskazuje, że kombinacja jest obsługiwana, a wartość "Nie" wskazuje, że nie jest obsługiwana.

Typ klienta Tożsamość zarządzana przypisana przez system Tożsamość zarządzana przypisana przez użytkownika Wpis tajny/parametry połączenia Jednostka usługi
.NET Tak Tak Tak Tak
Java Tak Tak Tak Tak
Java — Spring Boot Nie Nie. Tak Nie.
Node.js Tak Tak Tak Tak
Python Tak Tak Tak Tak
Go Tak Tak Tak Tak
None Tak Tak Tak Tak

Ta tabela wskazuje, że obsługiwane są wszystkie kombinacje typów klientów i metod uwierzytelniania w tabeli, z wyjątkiem typu klienta Java — Spring Boot, który obsługuje tylko metodę Secret /parametry połączenia. Wszystkie inne typy klientów mogą używać dowolnej metody uwierzytelniania do nawiązywania połączenia z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu Połączenie or usługi.

Domyślne nazwy zmiennych środowiskowych lub właściwości aplikacji i przykładowy kod

Użyj poniższych szczegółów połączenia, aby połączyć usługi obliczeniowe z usługą Azure Cosmos DB. Ta strona zawiera również domyślne nazwy zmiennych środowiskowych i wartości (lub konfigurację platformy Spring Boot) uzyskaną podczas tworzenia połączenia z usługą, a także przykładowy kod. Dla każdego z poniższych przykładów zastąp tekst <mongo-db-admin-user>zastępczy , , <password>, <Azure-Cosmos-DB-API-for-MongoDB-account><resource-group-name><subscription-ID>, <client-secret>, i <tenant-id> własnymi informacjami. Aby uzyskać więcej informacji na temat konwencji nazewnictwa, zapoznaj się z artykułem Service Połączenie or internals (Usługi Połączenie or internals).

Tożsamość zarządzana przypisana przez system

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu tożsamości zarządzanej przypisanej przez system.

  1. Instalowanie zależności

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez usługę Połączenie or i połącz się z usługą Azure Cosmos DB for MongoDB. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.

    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 according to the authentication type.
    // 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);
    

Tożsamość zarządzana przypisana przez użytkownika

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Identyfikator klienta <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.

  1. Instalowanie zależności

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez usługę Połączenie or i połącz się z usługą Azure Cosmos DB for MongoDB. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.

    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 according to the authentication type.
    // 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

Typ klienta SpringBoot

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
spring.data.mongodb.database Baza danych <database-name>
spring.data.mongodb.uri Identyfikator URI bazy danych 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>@

Inne typy klientów

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_CONNECTIONSTRING Parametry połączenia interfejsu API bazy danych MongoDB 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>@

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu parametry połączenia.

  1. Zainstaluj zależność.

    dotnet add package MongoDb.Driver
    
  2. Pobierz parametry połączenia ze zmiennej środowiskowej dodanej przez usługę Service Połączenie or i połącz się z usługą Azure Cosmos DB for MongoDB.

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

Jednostka usługi

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Identyfikator klienta <client-ID>
AZURE_COSMOS_CLIENTSECRET Klucz tajny klienta <client-secret>
AZURE_COSMOS_TENANTID Identyfikator dzierżawy <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu jednostki usługi.

  1. Instalowanie zależności

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez usługę Połączenie or i połącz się z usługą Azure Cosmos DB for MongoDB. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.

    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 according to the authentication type.
    // 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);
    

Następne kroki

Postępuj zgodnie z samouczkami wymienionymi poniżej, aby dowiedzieć się więcej o usłudze Połączenie or.