Condividi tramite


Integrare Azure Cosmos DB per tabelle con service Connessione or

Questa pagina mostra i metodi e i client di autenticazione supportati e mostra il codice di esempio che è possibile usare per connettere Azure Cosmos DB per tabelle ad altri servizi cloud usando Service Connessione or. È comunque possibile connettersi ad Azure Cosmos DB per la tabella in altri linguaggi di programmazione senza usare service Connessione or. Questa pagina mostra anche i nomi e i valori predefiniti delle variabili di ambiente che si ottengono quando si crea la connessione al servizio.

Servizi di calcolo supportati

Il Connessione or del servizio può essere usato per connettere i servizi di calcolo seguenti ad Azure Cosmos DB per la tabella:

  • Servizio app di Azure
  • Funzioni di Azure
  • App contenitore di Azure
  • Azure Spring Apps

Tipi di autenticazione e tipi di client supportati

La tabella seguente illustra le combinazioni di tipi client e metodi di autenticazione supportati per la connessione del servizio di calcolo ad Azure Cosmos DB per tabelle tramite service Connessione or. Un valore "Sì" indica che la combinazione è supportata, mentre "No" indica che non è supportata.

Tipo client Identità gestita assegnata dal sistema Identità gestita assegnata dall'utente Segreto/stringa di connessione Entità servizio
.NET
Java
Node.js
Python
Go
Nessuno

Questa tabella indica che tutte le combinazioni di tipi client e metodi di autenticazione nella tabella sono supportate. Tutti i tipi di client possono usare uno dei metodi di autenticazione per connettersi ad Azure Cosmos DB per tabelle tramite service Connessione or.

Nomi di variabili di ambiente predefiniti o proprietà dell'applicazione e codice di esempio

Usare i dettagli di connessione seguenti per connettere i servizi di calcolo ad Azure Cosmos DB per la tabella. Per ogni esempio seguente, sostituire i testi <account-name>segnaposto , , <account-key><table-name>, <subscription-ID><resource-group-name>, <client-ID>, <client-secret><tenant-id> con le proprie informazioni. Per altre informazioni sulle convenzioni di denominazione, vedere l'articolo Servizi Connessione or internals .

Identità gestita assegnata dal sistema

Nome variabile di ambiente predefinito Descrizione Valore di esempio
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL per ottenere il stringa di connessione 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 Ambito dell'identità gestita https://management.azure.com/.default
AZURE_COSMOS_RESOURCedizione Enterprise NDPOINT Endpoint della risorsa https://<table-name>.documents.azure.com:443/

Codice di esempio

Per connettersi ad Azure Cosmos DB per tabelle usando un'identità gestita assegnata dal sistema, vedere i passaggi e il codice seguenti.

  1. Installare le dipendenze.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Ottenere un token di accesso per l'identità gestita o l'entità servizio usando la libreria client Azure.Identity. Usare il token di accesso e AZURE_COSMOS_LISTCONNECTIONSTRINGURL per ottenere il stringa di connessione. Ottenere le informazioni di connessione dalle variabili di ambiente aggiunte da Service Connessione or e connettersi ad Azure Cosmos DB per tabella. Quando si usa il codice seguente, rimuovere il commento dalla parte del frammento di codice per il tipo di autenticazione che si vuole usare.
    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);
    

Identità gestita assegnata dall'utente

Nome variabile di ambiente predefinito Descrizione Valore di esempio
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL per ottenere il stringa di connessione 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 Ambito dell'identità gestita https://management.azure.com/.default
AZURE_COSMOS_CLIENTID ID segreto client <client-ID>
AZURE_COSMOS_RESOURCedizione Enterprise NDPOINT Endpoint della risorsa https://<table-name>.documents.azure.com:443/

Codice di esempio

Per connettersi ad Azure Cosmos DB per tabelle usando un'identità gestita assegnata dall'utente, vedere i passaggi e il codice seguenti.

  1. Installare le dipendenze.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Ottenere un token di accesso per l'identità gestita o l'entità servizio usando la libreria client Azure.Identity. Usare il token di accesso e AZURE_COSMOS_LISTCONNECTIONSTRINGURL per ottenere il stringa di connessione. Ottenere le informazioni di connessione dalle variabili di ambiente aggiunte da Service Connessione or e connettersi ad Azure Cosmos DB per tabella. Quando si usa il codice seguente, rimuovere il commento dalla parte del frammento di codice per il tipo di autenticazione che si vuole usare.
    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

Nome variabile di ambiente predefinito Descrizione Valore di esempio
AZURE_COSMOS_CONNECTIONSTRING Stringa di connessione di Azure Cosmos DB per tabelle DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

Codice di esempio

Vedere i passaggi e il codice seguenti per connettersi ad Azure Cosmos DB per la tabella usando un stringa di connessione.

  1. Installare la dipendenza.

    dotnet add package Azure.Data.Tables
    
  2. Ottenere il stringa di connessione dalla variabile di ambiente aggiunta da Service Connessione or.

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

Entità servizio

Nome variabile di ambiente predefinito Descrizione Valore di esempio
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL per ottenere il stringa di connessione 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 Ambito dell'identità gestita https://management.azure.com/.default
AZURE_COSMOS_CLIENTID ID segreto client <client-ID>
AZURE_COSMOS_CLIENTedizione Standard CRET Segreto client <client-secret>
AZURE_COSMOS_TENANTID ID del tenant. <tenant-ID>
AZURE_COSMOS_RESOURCedizione Enterprise NDPOINT Endpoint della risorsa https://<table-name>.documents.azure.com:443/

Codice di esempio

Per connettersi ad Azure Cosmos DB per tabelle con un'entità servizio, vedere i passaggi e il codice seguenti.

  1. Installare le dipendenze.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Ottenere un token di accesso per l'identità gestita o l'entità servizio usando la libreria client Azure.Identity. Usare il token di accesso e AZURE_COSMOS_LISTCONNECTIONSTRINGURL per ottenere il stringa di connessione. Ottenere le informazioni di connessione dalle variabili di ambiente aggiunte da Service Connessione or e connettersi ad Azure Cosmos DB per tabella. Quando si usa il codice seguente, rimuovere il commento dalla parte del frammento di codice per il tipo di autenticazione che si vuole usare.
    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);
    

Passaggi successivi

Seguire le esercitazioni elencate di seguito per altre informazioni su Service Connessione or.