Dela via


Integrera Azure Cosmos DB för Gremlin med Service Connector

Den här sidan visar autentiseringsmetoder och klienter som stöds och visar exempelkod som du kan använda för att ansluta Azure Cosmos DB för Apache Gremlin till andra molntjänster med hjälp av Service Connector. Du kanske fortfarande kan ansluta till Azure Cosmos DB för Gremlin på andra programmeringsspråk utan att använda Service Connector. På den här sidan visas även standardnamn och värden för miljövariabler som du får när du skapar tjänstanslutningen.

Beräkningstjänster som stöds

Service Connector kan användas för att ansluta följande beräkningstjänster till Azure Cosmos DB för Apache Gremlin:

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Autentiseringstyper och klienttyper som stöds

Tabellen nedan visar vilka kombinationer av klienttyper och autentiseringsmetoder som stöds för att ansluta beräkningstjänsten till Azure Cosmos DB för Apache Gremlin med hjälp av Service Connector. Ett "Ja" anger att kombinationen stöds, medan ett "Nej" anger att den inte stöds.

Klienttyp Systemtilldelad hanterad identitet Användartilldelad hanterad identitet Hemlighet/anslutningssträng Tjänstens huvudnamn
.NET Ja Ja Ja Ja
Java Ja Ja Ja Ja
Node.js Ja Ja Ja Ja
PHP Ja Ja Ja Ja
Python Ja Ja Ja Ja
Go Ja Ja Ja Ja
None Ja Ja Ja Ja

Den här tabellen anger att alla kombinationer av klienttyper och autentiseringsmetoder i tabellen stöds. Alla klienttyper kan använda någon av autentiseringsmetoderna för att ansluta till Azure Cosmos DB för Apache Gremlin med hjälp av Service Connector.

Standardnamn för miljövariabler eller programegenskaper och exempelkod

Använd anslutningsinformationen nedan för att ansluta dina beräkningstjänster till Azure Cosmos DB för Apache Gremlin. För varje exempel nedan ersätter du platshållartexterna <Azure-Cosmos-DB-account>, , <database><collection or graphs>, <username>, <password>, <resource-group-name>, <subscription-ID>, <client-ID>och<client-secret><tenant-id> med din egen information. Mer information om namngivningskonventioner finns i artikeln interna serviceanslutningsprogram .

Systemtilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTKEYURL URL:en för att hämta anslutningssträng https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Din Unika Gremlin-resursidentifierare (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Anslutningsport 443
AZURE_COSMOS_USERNAME Ditt användarnamn /dbs/<database>/colls/<collection or graphs>

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för Gremlin med hjälp av en systemtilldelad hanterad identitet.

  1. Installera beroenden.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTKEYURL för att hämta lösenordet. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Connector och anslut till Azure Cosmos DB för Apache Gremlin. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

Användartilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTKEYURL URL:en för att hämta anslutningssträng https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Din Unika Gremlin-resursidentifierare (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Anslutningsport 443
AZURE_COSMOS_USERNAME Ditt användarnamn /dbs/<database>/colls/<collection or graphs>
AZURE_CLIENTID Ditt klient-ID <client_ID>

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för Gremlin med hjälp av en användartilldelad hanterad identitet.

  1. Installera beroenden.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTKEYURL för att hämta lösenordet. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Connector och anslut till Azure Cosmos DB för Apache Gremlin. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

Connection string

Varning

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren kräver mycket stort förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när andra säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_HOSTNAME Din Unika Gremlin-resursidentifierare (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Anslutningsport 443
AZURE_COSMOS_USERNAME Ditt användarnamn /dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_PASSWORD Ditt lösenord <password>

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för Gremlin med hjälp av en anslutningssträng.

  1. Installera beroende.

    dotnet add package Gremlin.Net
    
  2. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Connector och anslut till Azure Cosmos DB för Apache Gremlin.

    using System;
    using Gremlin.Net.Driver;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var password = Environment.GetEnvironmentVariable("AZURE_COSMOS_PASSWORD");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );
    

Tjänstens huvudnamn

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTKEYURL URL:en för att hämta anslutningssträng https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Din Unika Gremlin-resursidentifierare (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Gremlin-anslutningsport 10350
AZURE_COSMOS_USERNAME Ditt användarnamn </dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_CLIENTID Ditt klient-ID <client-ID>
AZURE_COSMOS_CLIENTSECRET Din klienthemlighet <client-secret>
AZURE_COSMOS_TENANTID Ditt klientorganisations-ID <tenant-ID>

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för Gremlin med hjälp av tjänstens huvudnamn.

  1. Installera beroenden.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTKEYURL för att hämta lösenordet. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Connector och anslut till Azure Cosmos DB för Apache Gremlin. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

Nästa steg

Följ självstudierna nedan om du vill veta mer om Service Connector.