Integrieren von Azure Cosmos DB for Gremlin mit Service Connector
Artikel
Auf dieser Seite werden unterstützte Authentifizierungsmethoden und Clients sowie Beispielcode gezeigt, den Sie verwenden können, um Azure Cosmos DB for Apache Gremlin mit anderen Clouddiensten mithilfe von Dienstconnector zu verbinden. Möglicherweise können Sie auch in anderen Programmiersprachen eine Verbindung mit Azure Cosmos DB for Gremlin herstellen, ohne Dienstconnector zu verwenden. Auf dieser Seite werden auch die Namen und Werte der Standardumgebungsvariablen angezeigt, die Sie erhalten, wenn Sie die Dienstverbindung erstellen.
Unterstützte Computedienste
Mit dem Dienstconnector können Sie die folgenden Computedienste mit Azure Cosmos DB for Apache Gremlin verbinden:
Azure App Service
Azure Container Apps
Azure-Funktionen
Azure Kubernetes Service (AKS)
Azure Spring Apps
Unterstützte Authentifizierungstypen und Clienttypen
Die folgende Tabelle zeigt, welche Kombinationen von Clienttypen und Authentifizierungsmethoden für die Verbindung Ihres Computediensts mit Azure Cosmos DB for Apache Gremlin mithilfe von Dienstconnector unterstützt werden. Ein „Ja“ gibt an, dass die Kombination unterstützt wird, während ein „Nein“ angibt, dass sie nicht unterstützt wird.
Clienttyp
Systemseitig zugewiesene verwaltete Identität
Benutzerseitig zugewiesene verwaltete Identität
Geheimnis/Verbindungszeichenfolge
Dienstprinzipal
.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
Keine
Ja
Ja
Ja
Ja
In der Tabelle wird angegeben, dass alle Kombinationen von Clienttypen und Authentifizierungsmethoden in der Tabelle unterstützt werden. Alle Clienttypen können jede der Authentifizierungsmethoden verwenden, um mithilfe von Dienstconnector eine Verbindung mit Azure Cosmos DB for Apache Gremlin herzustellen.
Namen von Standard-Umgebungsvariablen oder Anwendungseigenschaften und Beispielcode
Verwenden Sie die nachstehenden Verbindungsdetails, um Ihre Computedienste mit Azure Cosmos DB for Apache Gremlin zu verbinden. Ersetzen Sie den Platzhaltertext <Azure-Cosmos-DB-account>, <database>, <collection or graphs>, <username>, <password>, <resource-group-name>, <subscription-ID>, <client-ID>, <client-secret> und <tenant-id> in allen Beispielen unten durch Ihre eigenen Informationen. Weitere Informationen zu Benennungskonventionen finden Sie im Artikel Besonderheiten des Dienstconnectors.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Cosmos DB for Gremlin mithilfe einer systemseitig zugewiesenen verwalteten Identität herzustellen.
Rufen Sie mithilfe einer Clientbibliothek wie Azure.Identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
);
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie mithilfe von azure-identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import org.apache.tinkerpop.gremlin.driver.Client;
import org.apache.tinkerpop.gremlin.driver.Cluster;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
import java.net.URI;
int gremlinPort = Integer.parseInt(System.getenv("AZURE_COSMOS_PORT"));
String username = System.getenv("AZURE_COSMOS_USERNAME");
String gremlinEndpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listKeyUrl = System.getenv("AZURE_COSMOS_LISTKEYURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .clientSecret(System.getenv("AZURE_COSMOS_CLIENTSECRET"))
// .tenantId(System.getenv("AZURE_COSMOS_TENANTID"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the password.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listKeyUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
String gremlinPassword = responseBody.get("primaryMasterKey");
// Connect to Azure Cosmos DB for Apache Gremlin
Cluster cluster;
Client client;
cluster = Cluster.addContactPoint(gremlinEndpoint).port(gremlinPort).credentials(username, password).create();
Installieren Sie Abhängigkeiten.
pip install gremlinpython
Verwenden Sie azure-identity, um sich bei der verwalteten Identität oder dem Dienstprinzipal zu authentifizieren und eine Anforderung an AZURE_COSMOS_LISTKEYURL zu senden, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
from gremlin_python.driver import client, serializer
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
username = os.getenv('AZURE_COSMOS_USERNAME')
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
port = os.getenv('AZURE_COSMOS_PORT')
listKeyUrl = os.getenv('AZURE_COSMOS_LISTKEYURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the password
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listKeyUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
password = keys_dict['primaryMasterKey']
# Connect to Azure Cosmos DB for Apache Gremlin.
client = client.Client(
url=endpoint,
traversal_source="g",
username=username,
password=password,
message_serializer=serializer.GraphSONSerializersV2d0(),
)
Installieren Sie Abhängigkeiten.
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/go-gremlin/gremlin
Rufen Sie im Code das Zugriffstoken mit azidentity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Rufen Sie im Code das Zugriffstoken mit @azure/identity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
import gremlin from 'gremlin'
const axios = require('axios');
let username = process.env.AZURE_COSMOS_USERNAME;
let endoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let port = process.env.AZURE_COSMOS_PORT;
let listKeyUrl = process.env.AZURE_COSMOS_LISTKEYURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the password.
const config = {
method: 'post',
url: listKeyUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const password = keysDict['primaryMasterKey'];
const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
username,
password
)
const client = new gremlin.driver.Client(
endpoint,
{
credentials,
traversalsource: 'g',
rejectUnauthorized: true,
mimeType: 'application/vnd.gremlin-v2.0+json'
}
)
client.open()
Rufen Sie ein Zugriffstoken mit einer verwalteten Identität oder einem Dienstprinzipal ab, um den Primärschlüssel von Azure Cosmos DB für Gremlin abzurufen, indem Sie die REST-API in AZURE_COSMOS_LISTKEYURL aufrufen.
Für andere Sprachen können Sie den Apache Gremlin-Endpunkt und andere Eigenschaften verwenden, die Dienstconnector auf die Umgebungsvariablen festlegt, um eine Verbindung mit der Azure Cosmos DB for Apache Gremlin-Ressource herzustellen. Nähere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Cosmos DB for Apache Gremlin in Dienstconnector.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Cosmos DB for Gremlin mithilfe einer benutzerseitig zugewiesenen verwalteten Identität herzustellen.
Rufen Sie mithilfe einer Clientbibliothek wie Azure.Identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
);
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie mithilfe von azure-identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import org.apache.tinkerpop.gremlin.driver.Client;
import org.apache.tinkerpop.gremlin.driver.Cluster;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
import java.net.URI;
int gremlinPort = Integer.parseInt(System.getenv("AZURE_COSMOS_PORT"));
String username = System.getenv("AZURE_COSMOS_USERNAME");
String gremlinEndpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listKeyUrl = System.getenv("AZURE_COSMOS_LISTKEYURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .clientSecret(System.getenv("AZURE_COSMOS_CLIENTSECRET"))
// .tenantId(System.getenv("AZURE_COSMOS_TENANTID"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the password.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listKeyUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
String gremlinPassword = responseBody.get("primaryMasterKey");
// Connect to Azure Cosmos DB for Apache Gremlin
Cluster cluster;
Client client;
cluster = Cluster.addContactPoint(gremlinEndpoint).port(gremlinPort).credentials(username, password).create();
Installieren Sie Abhängigkeiten.
pip install gremlinpython
Verwenden Sie azure-identity, um sich bei der verwalteten Identität oder dem Dienstprinzipal zu authentifizieren und eine Anforderung an AZURE_COSMOS_LISTKEYURL zu senden, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
from gremlin_python.driver import client, serializer
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
username = os.getenv('AZURE_COSMOS_USERNAME')
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
port = os.getenv('AZURE_COSMOS_PORT')
listKeyUrl = os.getenv('AZURE_COSMOS_LISTKEYURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the password
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listKeyUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
password = keys_dict['primaryMasterKey']
# Connect to Azure Cosmos DB for Apache Gremlin.
client = client.Client(
url=endpoint,
traversal_source="g",
username=username,
password=password,
message_serializer=serializer.GraphSONSerializersV2d0(),
)
Installieren Sie Abhängigkeiten.
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/go-gremlin/gremlin
Rufen Sie im Code das Zugriffstoken mit azidentity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Rufen Sie im Code das Zugriffstoken mit @azure/identity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
import gremlin from 'gremlin'
const axios = require('axios');
let username = process.env.AZURE_COSMOS_USERNAME;
let endoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let port = process.env.AZURE_COSMOS_PORT;
let listKeyUrl = process.env.AZURE_COSMOS_LISTKEYURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the password.
const config = {
method: 'post',
url: listKeyUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const password = keysDict['primaryMasterKey'];
const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
username,
password
)
const client = new gremlin.driver.Client(
endpoint,
{
credentials,
traversalsource: 'g',
rejectUnauthorized: true,
mimeType: 'application/vnd.gremlin-v2.0+json'
}
)
client.open()
Rufen Sie ein Zugriffstoken mit einer verwalteten Identität oder einem Dienstprinzipal ab, um den Primärschlüssel von Azure Cosmos DB für Gremlin abzurufen, indem Sie die REST-API in AZURE_COSMOS_LISTKEYURL aufrufen.
Für andere Sprachen können Sie den Apache Gremlin-Endpunkt und andere Eigenschaften verwenden, die Dienstconnector auf die Umgebungsvariablen festlegt, um eine Verbindung mit der Azure Cosmos DB for Apache Gremlin-Ressource herzustellen. Nähere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Cosmos DB for Apache Gremlin in Dienstconnector.
Connection string
Warnung
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Cosmos DB for Gremlin mithilfe einer Verbindungszeichenfolge herzustellen.
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
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()
);
Fügen Sie der Datei pom.xml die folgende Abhängigkeit hinzu:
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
import os
from gremlin_python.driver import client, serializer
username = os.getenv('AZURE_COSMOS_USERNAME')
password = os.getenv('AZURE_COSMOS_PASSWORD')
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
port = os.getenv('AZURE_COSMOS_PORT')
client = client.Client(
url=endpoint,
traversal_source="g",
username=username,
password=password,
message_serializer=serializer.GraphSONSerializersV2d0(),
)
Installieren Sie die Abhängigkeit.
go get github.com/go-gremlin/gremlin
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her.
Für andere Sprachen können Sie den Apache Gremlin-Endpunkt und andere Eigenschaften verwenden, die Dienstconnector auf die Umgebungsvariablen festlegt, um eine Verbindung mit der Azure Cosmos DB for Apache Gremlin-Ressource herzustellen. Nähere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Cosmos DB for Apache Gremlin in Dienstconnector.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Cosmos DB for Gremlin mithilfe eines Dienstprinzipals herzustellen.
Rufen Sie mithilfe einer Clientbibliothek wie Azure.Identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
);
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie mithilfe von azure-identity ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal ab. Verwenden Sie das Zugriffstoken und AZURE_COSMOS_LISTKEYURL, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import org.apache.tinkerpop.gremlin.driver.Client;
import org.apache.tinkerpop.gremlin.driver.Cluster;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
import java.net.URI;
int gremlinPort = Integer.parseInt(System.getenv("AZURE_COSMOS_PORT"));
String username = System.getenv("AZURE_COSMOS_USERNAME");
String gremlinEndpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listKeyUrl = System.getenv("AZURE_COSMOS_LISTKEYURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .clientSecret(System.getenv("AZURE_COSMOS_CLIENTSECRET"))
// .tenantId(System.getenv("AZURE_COSMOS_TENANTID"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the password.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listKeyUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
String gremlinPassword = responseBody.get("primaryMasterKey");
// Connect to Azure Cosmos DB for Apache Gremlin
Cluster cluster;
Client client;
cluster = Cluster.addContactPoint(gremlinEndpoint).port(gremlinPort).credentials(username, password).create();
Installieren Sie Abhängigkeiten.
pip install gremlinpython
Verwenden Sie azure-identity, um sich bei der verwalteten Identität oder dem Dienstprinzipal zu authentifizieren und eine Anforderung an AZURE_COSMOS_LISTKEYURL zu senden, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus den Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurden, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
from gremlin_python.driver import client, serializer
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
username = os.getenv('AZURE_COSMOS_USERNAME')
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
port = os.getenv('AZURE_COSMOS_PORT')
listKeyUrl = os.getenv('AZURE_COSMOS_LISTKEYURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the password
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listKeyUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
password = keys_dict['primaryMasterKey']
# Connect to Azure Cosmos DB for Apache Gremlin.
client = client.Client(
url=endpoint,
traversal_source="g",
username=username,
password=password,
message_serializer=serializer.GraphSONSerializersV2d0(),
)
Installieren Sie Abhängigkeiten.
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/go-gremlin/gremlin
Rufen Sie im Code das Zugriffstoken mit azidentity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Rufen Sie im Code das Zugriffstoken mit @azure/identity ab, und verwenden Sie es dann, um das Kennwort abzurufen. Rufen Sie die Verbindungsinformationen aus der Umgebungsvariablen ab, die von Dienstconnector hinzugefügt wurde, und stellen Sie eine Verbindung mit Azure Cosmos DB for Apache Gremlin her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
import gremlin from 'gremlin'
const axios = require('axios');
let username = process.env.AZURE_COSMOS_USERNAME;
let endoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let port = process.env.AZURE_COSMOS_PORT;
let listKeyUrl = process.env.AZURE_COSMOS_LISTKEYURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the password.
const config = {
method: 'post',
url: listKeyUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const password = keysDict['primaryMasterKey'];
const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
username,
password
)
const client = new gremlin.driver.Client(
endpoint,
{
credentials,
traversalsource: 'g',
rejectUnauthorized: true,
mimeType: 'application/vnd.gremlin-v2.0+json'
}
)
client.open()
Rufen Sie ein Zugriffstoken mit einer verwalteten Identität oder einem Dienstprinzipal ab, um den Primärschlüssel von Azure Cosmos DB für Gremlin abzurufen, indem Sie die REST-API in AZURE_COSMOS_LISTKEYURL aufrufen.
Für andere Sprachen können Sie den Apache Gremlin-Endpunkt und andere Eigenschaften verwenden, die Dienstconnector auf die Umgebungsvariablen festlegt, um eine Verbindung mit der Azure Cosmos DB for Apache Gremlin-Ressource herzustellen. Nähere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Cosmos DB for Apache Gremlin in Dienstconnector.
Nächste Schritte
Befolgen Sie die unten aufgeführten Tutorials, um mehr über Service Connector zu erfahren.