Çoklu bulut: Python için Azure kitaplıklarıyla tüm bölgelere Bağlan
Azure'ın kullanılabilir olduğu tüm bölgelere bağlanmak için Python için Azure kitaplıklarını kullanabilirsiniz.
Varsayılan olarak, Azure kitaplıkları genel Azure buluta bağlanacak şekilde yapılandırılır.
Önceden tanımlanmış bağımsız bulut sabitlerini kullanma
Önceden tanımlanmış bağımsız bulut sabitleri kitaplığın AzureAuthorityHosts
azure.identity
modülü tarafından sağlanır:
AZURE_CHINA
AZURE_GOVERNMENT
AZURE_PUBLIC_CLOUD
Bir tanımı kullanmak için, içindeki uygun sabiti azure.identity.AzureAuthorityHosts
içeri aktarın ve istemci nesneleri oluştururken uygulayın.
aşağıdaki örnekte gösterildiği gibi kullanırken DefaultAzureCredential
, içinden uygun değeri azure.identity.AzureAuthorityHosts
kullanarak bulutu belirtebilirsiniz.
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"])
Kendi bulut tanımınızı kullanma
Aşağıdaki kodda , endpoint
ve audience
değişkenlerinin authority
değerlerini özel bulutunuza uygun değerlerle değiştirin.
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])
Örneğin Azure Stack için az cloud show CLI komutunu kullanarak kayıtlı bulutun ayrıntılarını döndürebilirsiniz. Aşağıdaki çıkış, Azure genel bulutu için döndürülen değerleri gösterir, ancak Azure Stack özel bulutu için çıkış benzer olmalıdır.
{
"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"
}
}
Önceki kodda özelliğin değerine, özelliğin endpoints.activeDirectory
değerine endpoints.resourceManager
ve audience
+ ".default" özelliğinin endpoints.activeDirectoryResourceId
değerine ayarlayabilirsinizauthority
. endpoint
Daha fazla bilgi için bkz. Azure Stack Hub ile Azure CLI kullanma ve Azure Stack Hub için kimlik doğrulama bilgilerini alma.