這很重要
Python SDK 已從版本 1 更新至版本 2。 建議您儘快遷移至版本 2 SDK。 如需指示,請參閱 此移轉指南。
Python SDK 支援 API 版本設定檔,以不同的雲端平臺為目標,例如 Azure Stack Hub 和全域 Azure。 使用 API 設定檔來建立混合式雲端的解決方案。
本文中的指示需要Microsoft Azure 訂用帳戶。 如果您沒有帳戶,您可以取得 免費試用帳戶。
Python 和 API 版本概要
Python SDK 支援下列 API 配置檔:
最新
此配置檔是以 Azure 平臺中所有服務提供者的最新 API 版本為目標。2020_09_01_hybrid
此配置檔針對 Azure Stack Hub 平臺中 2102 版或更新版本的所有資源提供者,以最新的 API 版本為目標。2019_03_01_hybrid
此配置檔以最新的 API 版本為目標,適用於 Azure Stack Hub 平臺中的所有資源提供者,1904 版或更新版本。如需 API 配置檔和 Azure Stack Hub 的詳細資訊,請參閱 在 Azure Stack Hub 中管理 API 版本設定檔。
安裝 Azure Python SDK
個人檔案
對於包含日期的配置檔,若要使用不同的 SDK 配置檔或版本,請在 v<date>_hybrid 中替換日期。 例如,針對 2008 版本,設定檔為 2019_03_01,字串變成 v2019_03_01_hybrid。 請注意,有時候 SDK 小組會變更套件的名稱,因此只要以不同的日期取代字串的日期可能無法運作。 請參閱下表以了解概況配置與 Azure Stack 版本的關聯。
| Azure Stack 版本 | 個人檔案 |
|---|---|
| 2311 | 2020-09-01 |
| 2301 | 2020-09-01 |
| 2206 | 2020-09-01 |
| 2108 | 2020-09-01 |
| 2102 | 2020-09-01 |
| 2008 | 2019-03-01 |
如需 Azure Stack Hub 和 API 配置檔的詳細資訊,請參閱 API 設定檔的摘要。
請參閱 Python SDK 設定檔。
訂閱
如果您還沒有訂用帳戶,請建立訂用帳戶,並儲存稍後要使用的訂用帳戶標識碼。 如需如何建立訂用帳戶的資訊,請參閱本 檔。
服務主體
服務主體及其相關聯的環境信息應該建立並儲存在某處。 建議使用具有 owner 角色的服務主體,但視範例而定,contributor 角色可能已足夠。 如需必要值,請參閱範例存放 庫中 的自述檔。 您可以使用 SDK 語言所支援的任何格式讀取這些值,例如來自 JSON 檔案(我們的範例使用)。 根據正在執行的樣本,可能並非所有的值都會被使用。 請參閱範例存放庫以獲取更新的範例程式代碼或進一步資訊。
租戶識別碼
若要尋找 Azure Stack Hub 的目錄或租用戶標識碼,請遵循 本文中的指示。
註冊資源提供者
遵循本 文件,註冊必要的資源提供者。 視您想要執行的範例而定,需要這些資源提供者。 例如,如果您想要執行 VM 範例, Microsoft.Compute 則需要資源提供者註冊。
Azure Stack 資源管理員端點
Azure Resource Manager (ARM) 是一種管理架構,可讓系統管理員部署、管理及監視 Azure 資源。 Azure Resource Manager 可以在單一作業中以群組而非個別方式處理這些工作。 您可以從 Resource Manager 端點取得元數據資訊。 端點會傳回 JSON 檔案,其中包含執行程式碼所需的資訊。
- Azure Stack 開發工具包中的 ResourceManagerEndpointUrl 是:
https://management.local.azurestack.external/。 - 整合式系統中的 ResourceManagerEndpointUrl 是:
https://management.region.<fqdn>/,其中<fqdn>是完全合格的域名。 - 若要擷取所需的元數據:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0。 如需可用的 API 版本,請參閱 Azure rest API 規格。 例如,在2020-09-01設定檔版本中,您可以針對資源提供者api-version將 變更2019-10-01為microsoft.resources。
範例 JSON:
{
"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"]
}
}
信任或接受 Azure Stack Hub CA 根憑證
如果您使用 ASDK,您必須在遠端機器上明確信任 CA 根證書。 您不需要信任 Azure Stack Hub 整合系統的 CA 根憑證。
窗戶
在您的電腦上尋找 Python 證書儲存位置。 視您安裝 Python 的位置而定,位置可能會有所不同。 開啟命令提示字元或提升權限的 PowerShell 提示字元,然後輸入下列命令:
python -c "import certifi; print(certifi.where())"記下證書存儲位置;例如 ~/lib/python3.5/site-packages/certifi/cacert.pem。 您的特定路徑取決於您的作系統和已安裝的 Python 版本。
將 Azure Stack Hub CA 根憑證加入到現有的 Python 憑證中,以信任該根憑證:
$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"
備註
如果您使用 virtualenv 進行 Python SDK 開發,則必須將先前的憑證新增至虛擬環境證書存儲。 路徑看起來可能類似: ..\mytestenv\Lib\site-packages\certifi\cacert.pem。
範例
請參閱 此範例存放庫 ,以取得最新狀態 (track 2) 範例程序代碼。 如需追蹤 1 範例程式代碼,請參閱 此範例存放庫 。 根 README.md 目錄描述一般需求,而每個子目錄都包含一個專屬 README.md 的範例,描述如何執行該範例。