Multicloud: Herstellen einer Verbindung mit allen Regionen mit den Azure-Bibliotheken für Python

Sie können die Azure-Bibliotheken für Python verwenden, um eine Verbindung mit allen Regionen herzustellen, in denen Azure verfügbar ist.

Standardmäßig sind die Azure-Bibliotheken so konfiguriert, dass eine Verbindung mit der globalen Azure-Cloud hergestellt wird.

Verwenden vordefinierter souveräner Cloudkonstanten

Das AzureAuthorityHosts Modul der azure.identity Bibliothek stellt vordefinierte souveräne Cloudkonstanten bereit:

  • AZURE_CHINA
  • AZURE_GOVERNMENT
  • AZURE_PUBLIC_CLOUD

Um eine Definition zu verwenden, importieren Sie die entsprechende Konstante aus azure.identity.AzureAuthorityHosts , und wenden Sie sie beim Erstellen von Clientobjekten an.

Wenn Sie DefaultAzureCredential wie im folgenden Beispiel gezeigt verwenden, können Sie die Cloud unter Verwendung des entsprechenden Werts aus azure.identity.AzureAuthorityHosts angeben.

import os
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient
from azure.identity import DefaultAzureCredential, AzureAuthorityHosts
from azure.core import AzureClouds

authority = AzureAuthorityHosts.AZURE_CHINA

# Set environment variable AZURE_SUBSCRIPTION_ID as well as environment variables
# for DefaultAzureCredential. For combinations of environment variables, see
# https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#environment-variables
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# When using sovereign domains (that is, any cloud other than AZURE_PUBLIC_CLOUD),
# you must use an authority with DefaultAzureCredential.
credential = DefaultAzureCredential(authority=authority)

resource_client = ResourceManagementClient(
    credential, subscription_id, cloud_setting=AzureClouds.AZURE_CHINA_CLOUD
)

subscription_client = SubscriptionClient(
    credential, cloud_setting=AzureClouds.AZURE_CHINA_CLOUD
)

Hinweis

Die cloud_setting Funktion wurde neu hinzugefügt und wird in den Azure SDK-Verwaltungsbibliotheken schrittweise eingeführt. In diesem Zeitraum unterstützen einige Clients sie, während andere nicht. Um die Unterstützung zu überprüfen, suchen Sie nach einem cloud_setting Parameter im Clientkonstruktor. Wenn der Client Ihres Diensts cloud_setting noch nicht bereitstellt, können Sie Sovereign Clouds weiterhin ansprechen, indem Sie den in den folgenden Beispielen gezeigten bisherigen Ansatz verwenden.

import os
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient
from azure.identity import DefaultAzureCredential, AzureAuthorityHosts

authority = AzureAuthorityHosts.AZURE_CHINA
resource_manager = "https://management.chinacloudapi.cn"

# Set environment variable AZURE_SUBSCRIPTION_ID as well as environment variables
# for DefaultAzureCredential. For combinations of environment variables, see
# https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#environment-variables
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# When using sovereign domains (that is, any cloud other than AZURE_PUBLIC_CLOUD),
# you must use an authority with DefaultAzureCredential.
credential = DefaultAzureCredential(authority=authority)

resource_client = ResourceManagementClient(
    credential,
    subscription_id,
    base_url=resource_manager,
    credential_scopes=[resource_manager + "/.default"],
)

subscription_client = SubscriptionClient(
    credential,
    base_url=resource_manager,
    credential_scopes=[resource_manager + "/.default"],
)

Verwenden Ihrer eigenen Clouddefinition

Ersetzen Sie im folgenden Code die Werte der authority, endpointund audience Variablen durch Werte, die für Ihre private Cloud geeignet sind.

import os
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient
from azure.identity import DefaultAzureCredential
from azure.profiles import KnownProfiles

# Set environment variable AZURE_SUBSCRIPTION_ID as well as environment variables
# for DefaultAzureCredential. For combinations of environment variables, see
# https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity#environment-variables
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

authority = "<your authority>"
endpoint = "<your endpoint>"
audience = "<your audience>"

# When using a private cloud, you must use an authority with DefaultAzureCredential.
# The active_directory endpoint should be a URL like https://login.microsoftonline.com.
credential = DefaultAzureCredential(authority=authority)

resource_client = ResourceManagementClient(
    credential, subscription_id,
    base_url=endpoint,
    profile=KnownProfiles.v2019_03_01_hybrid,
    credential_scopes=[audience])

subscription_client = SubscriptionClient(
    credential,
    base_url=endpoint,
    profile=KnownProfiles.v2019_03_01_hybrid,
    credential_scopes=[audience])

Beispielsweise können Sie für Azure Stack den Befehl az cloud show CLI verwenden, um die Details einer registrierten Cloud zurückzugeben. Die folgende Ausgabe zeigt die Werte, die für die öffentliche Azure-Cloud zurückgegeben werden, aber die Ausgabe für eine private Azure Stack-Cloud sollte ähnlich sein.

{
  "endpoints": {
    "activeDirectory": "https://login.microsoftonline.com",
    "activeDirectoryDataLakeResourceId": "https://datalake.azure.net/",
    "activeDirectoryGraphResourceId": "https://graph.windows.net/",
    "activeDirectoryResourceId": "https://management.core.windows.net/",
    "appInsightsResourceId": "https://api.applicationinsights.io",
    "appInsightsTelemetryChannelResourceId": "https://dc.applicationinsights.azure.com/v2/track",
    "attestationResourceId": "https://attest.azure.net",
    "azmirrorStorageAccountResourceId": null,
    "batchResourceId": "https://batch.core.windows.net/",
    "gallery": "https://gallery.azure.com/",
    "logAnalyticsResourceId": "https://api.loganalytics.io",
    "management": "https://management.core.windows.net/",
    "mediaResourceId": "https://rest.media.azure.net",
    "microsoftGraphResourceId": "https://graph.microsoft.com/",
    "ossrdbmsResourceId": "https://ossrdbms-aad.database.windows.net",
    "portal": "https://portal.azure.com",
    "resourceManager": "https://management.azure.com/",
    "sqlManagement": "https://management.core.windows.net:8443/",
    "synapseAnalyticsResourceId": "https://dev.azuresynapse.net",
    "vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json"
  },
  "isActive": true,
  "name": "AzureCloud",
  "profile": "latest",
  "suffixes": {
    "acrLoginServerEndpoint": ".azurecr.io",
    "attestationEndpoint": ".attest.azure.net",
    "azureDatalakeAnalyticsCatalogAndJobEndpoint": "azuredatalakeanalytics.net",
    "azureDatalakeStoreFileSystemEndpoint": "azuredatalakestore.net",
    "keyvaultDns": ".vault.azure.net",
    "mariadbServerEndpoint": ".mariadb.database.azure.com",
    "mhsmDns": ".managedhsm.azure.net",
    "mysqlServerEndpoint": ".mysql.database.azure.com",
    "postgresqlServerEndpoint": ".postgres.database.azure.com",
    "sqlServerHostname": ".database.windows.net",
    "storageEndpoint": "core.windows.net",
    "storageSyncEndpoint": "afs.azure.net",
    "synapseAnalyticsEndpoint": ".dev.azuresynapse.net"
  }
}

Legen Sie authority im vorherigen Code auf den Wert der endpoints.activeDirectory Eigenschaft, endpoint auf den Wert der endpoints.resourceManager Eigenschaft und audience auf den Wert der endpoints.activeDirectoryResourceId Eigenschaft + ".default" fest.

Weitere Informationen finden Sie unter Verwenden der Azure CLI mit Azure Stack Hub und Abrufen von Authentifizierungsinformationen für Azure Stack Hub.