Verwenden von API-Versionsprofilen mit Python in Azure Stack Hub
Wichtig
Das Python SDK wurde von Track 1 auf Track 2 aktualisiert. Es wird empfohlen, so schnell wie möglich zum Track 2 SDK zu migrieren. Anweisungen finden Sie in diesem Migrationsleitfaden.
Das Python SDK unterstützt API-Versionsprofile für unterschiedliche Cloudplattformen, z. B. Azure Stack Hub und globales Azure. Verwenden Sie API-Profile beim Erstellen von Lösungen für eine Hybrid Cloud.
Für die Anleitung in diesem Artikel ist ein Microsoft Azure-Abonnement erforderlich. Falls Sie nicht über ein Abonnement dieser Art verfügen, können Sie eine kostenlose Testversion verwenden.
Python und API-Versionsprofile
Das Python SDK unterstützt die folgenden API-Profile:
Neueste
Dieses Profil ist auf die aktuellen API-Versionen für alle Dienstanbieter der Azure Platform ausgerichtet.2020_09_01_hybrid
Dieses Profil ist auf die aktuellen API-Versionen für alle Ressourcenanbieter auf der Azure Stack Hub-Plattform für Version 2102 oder höher ausgerichtet.2019_03_01_hybrid
Dieses Profil ist auf die aktuellen API-Versionen für alle Ressourcenanbieter auf der Azure Stack Hub-Plattform für Version 1904 oder höher ausgerichtet.Weitere Informationen zu API-Profilen und Azure Stack Hub finden Sie unter Verwalten von API-Versionsprofilen in Azure Stack Hub.
Installieren des Azure Python SDK
Profiles
Ersetzen Sie bei Profilen, die Datumsangaben enthalten, das Datum in v<date>_hybrid
, um ein anderes SDK-Profil oder eine andere SDK-Version zu verwenden. Für die Version 2008 lautet das Profil beispielsweise 2019_03_01
, und die Zeichenfolge wird zu v2019_03_01_hybrid
. Beachten Sie, dass das SDK-Team manchmal den Namen der Pakete ändert, sodass das einfache Ersetzen des Datums einer Zeichenfolge durch ein anderes Datum möglicherweise nicht funktioniert. Informationen zur Zuordnung zwischen Profilen und Azure Stack-Versionen finden Sie in der folgenden Tabelle.
Azure Stack-Version | Profil |
---|---|
2311 | 2020_09_01 |
2301 | 2020_09_01 |
2206 | 2020_09_01 |
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
Weitere Informationen zu Azure Stack Hub und API-Profilen finden Sie in der Zusammenfassung zu API-Profilen.
Siehe Python SDK-Profile
Subscription
Wenn Sie noch nicht über ein Abonnement verfügen, erstellen Sie ein Abonnement, und speichern Sie die Abonnement-ID zur späteren Verwendung. Weitere Informationen zum Erstellen eines Abonnements finden Sie in diesem Dokument.
Dienstprinzipal
Ein Dienstprinzipal und seine zugehörigen Umgebungsinformationen sollten erstellt und an einem Ort gespeichert werden. Ein Dienstprinzipal mit der Rolle owner
wird empfohlen, aber je nach Beispiel kann eine contributor
-Rolle ausreichen. Die erforderlichen Werte finden Sie in der Infodatei im Beispielrepository. Sie können diese Werte in jedem von der SDK-Sprache unterstützten Format lesen, z. B. aus einer JSON-Datei (die in unseren Beispielen verwendet wird). Je nachdem, wie das Beispiel ausgeführt wird, werden möglicherweise nicht alle diese Werte verwendet. Den aktualisierten Beispielcode bzw. weitere Informationen finden Sie im Beispielrepository.
Mandanten-ID
Folgen Sie den Anweisungen in diesem Artikel, um das Verzeichnis oder die Mandanten-ID für Ihre Azure Stack Hub-Instanz zu suchen.
Registrieren von Ressourcenanbietern
Registrieren Sie die erforderlichen Ressourcenanbieter, indem Sie dieses Dokument befolgen. Diese Ressourcenanbieter sind abhängig von den Beispielen, die Sie ausführen möchten, erforderlich. Wenn Sie beispielsweise ein VM-Beispiel ausführen möchten, ist die Registrierung des Ressourcenanbieters Microsoft.Compute
erforderlich.
Azure Stack Resource Manager-Endpunkt
Azure Resource Manager (ARM) ist ein Verwaltungsframework, mit dem Administratoren Azure-Ressourcen bereitstellen, verwalten und überwachen können. Azure Resource Manager kann diese Aufgaben als Gruppe – anstatt einzeln – in einem gemeinsamen Vorgang verarbeiten. Sie können die Metadateninformationen vom Resource Manager-Endpunkt abrufen. Der Endpunkt gibt eine JSON-Datei mit den zum Ausführen des Codes erforderlichen Informationen zurück.
- Der ResourceManagerEndpointUrl-Wert im Azure Stack Development Kit (ASDK) lautet:
https://management.local.azurestack.external/
. - Die ResourceManagerUrl in integrierten Systemen lautet
https://management.region.<fqdn>/
, wobei<fqdn>
Ihr vollqualifizierter Domänenname ist. - Zum Abrufen der erforderlichen Metadaten:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Verfügbare API-Versionen finden Sie unter Azure REST-API-Spezifikationen. Beispielsweise können Sie in der Profilversion2020-09-01
für den Ressourcenanbietermicrosoft.resources
api-version
in2019-10-01
ändern.
JSON-Beispielcode:
{
"galleryEndpoint": "https://portal.local.azurestack.external:30015/",
"graphEndpoint": "https://graph.windows.net/",
"portal Endpoint": "https://portal.local.azurestack.external/",
"authentication":
{
"loginEndpoint": "https://login.windows.net/",
"audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
}
}
Einstufen des Zertifizierungsstellen-Stammzertifikats für Azure Stack Hub als vertrauenswürdig
Bei Verwendung des ASDK müssen Sie das Zertifizierungsstellen-Stammzertifikat auf Ihrem Remotecomputer explizit als vertrauenswürdig einstufen. Es ist nicht erforderlich, dass Sie das Zertifizierungsstellen-Stammzertifikat für die integrierten Azure Stack Hub-Systeme als vertrauenswürdig einstufen.
Windows
Suchen Sie auf Ihrem Computer nach dem Python-Zertifikatspeicherort. Der Speicherort kann in Abhängigkeit davon variieren, wo Sie Python installiert haben. Öffnen Sie eine Eingabeaufforderung oder eine PowerShell-Eingabeaufforderung mit erhöhten Rechten, und geben Sie den folgenden Befehl ein:
python -c "import certifi; print(certifi.where())"
Notieren Sie sich den Zertifikatspeicherort, z. B. ~/lib/python3.5/site-packages/certifi/cacert.pem. Ihr jeweiliger Pfad hängt von Ihrem Betriebssystem und der installierten Python-Version ab.
Stufen Sie das Zertifizierungsstellen-Stammzertifikat für Azure Stack Hub als vertrauenswürdig ein, indem Sie es an das vorhandene Python-Zertifikat anfügen:
$pemFile = "<Fully qualified path to the PEM certificate; for ex: C:\Users\user1\Downloads\root.pem>" $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $root.Import($pemFile) Write-Host "Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower() $issuerEntry = [string]::Format("# Issuer: {0}", $root.Issuer) $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject) $labelEntry = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1]) $serialEntry = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower()) $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash) $sha1Entry = [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash) $sha256Entry = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash) $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n") $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + ` $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText Write-Host "Adding the certificate content to Python Cert store" Add-Content "${env:ProgramFiles(x86)}\Python35\Lib\site-packages\certifi\cacert.pem" $rootCertEntry Write-Host "Python Cert store was updated to allow the Azure Stack Hub CA root certificate"
Hinweis
Wenn Sie virtualenv für die Entwicklung mit dem Python SDK verwenden, müssen Sie das vorherige Zertifikat Ihrem Zertifikatspeicher der virtuellen Umgebung hinzufügen. Der Pfad sieht in etwa wie folgt aus: ..\mytestenv\Lib\site-packages\certifi\cacert.pem
.
Beispiele
In diesem Beispielrepository finden Sie Beispielcode für aktuelle Aktualisierungen (Track 2). In diesem Beispielrepository finden Sie Nachverfolgungscode für 1 Beispielcode. Der Stamm README.md
beschreibt allgemeine Anforderungen, und jedes Unterverzeichnis enthält ein bestimmtes Beispiel mit einem eigenen README.md
, das die Ausführung dieses Beispiels beschreibt.
Hier finden Sie die Beispielanwendung für die Azure Stack-Version 2008
oder das Profil 2019-03-01
und niedriger.