共用方式為


在 Azure Stack Hub 中使用 API 版本設定檔與 Python

重要

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
    針對 2102 版或更新版 Azure Stack Hub 平台中的所有資源提供者,此設定檔會以最新的 API 版本作為目標。

  • 2019_03_01_hybrid
    針對版本 1904 或更新版 Azure Stack Hub 平台中的所有資源提供者,此設定檔會以最新的 API 版本作為目標。

    如需 API 設定檔和 Azure Stack Hub 的詳細資訊,請參閱管理 Azure Stack Hub 中的 API 版本設定檔

安裝 Azure Python SDK

  1. 安裝 Git
  2. 安裝 Python SDK

Profiles

針對包含日期的設定檔,若要使用不同的 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 Resource Manager 端點

Azure Resource Manager (ARM) 是可讓系統管理員進行部署、管理及監視 Azure 資源的管理架構。 Azure Resource Manager 能夠以群組方式處理這些工作,而非個別單獨作業的方式。 您可以從 Resource Manager 端點取得中繼資料資訊。 此端點會傳回 JSON 檔案,以及執行程式碼所需的資訊。

  • Azure Stack 開發套件 (ASDK) 中的 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 設定檔版本中,您可以將資源提供者 microsoft.resourcesapi-version 變更為 2019-10-01

範例 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 根憑證。

Windows

  1. 尋找您機器上的 Python 憑證存放區位置。 此位置可能會根據您安裝 Python 的位置不同而有所差異。 開啟命令提示字元或已提升權限的 PowerShell 命令提示字元,並輸入下列命令:

      python -c "import certifi; print(certifi.where())"
    

    記下憑證存放區位置;例如 ~/lib/python3.5/site-packages/certifi/cacert.pem。 您的特定路徑取決於您的作業系統及所安裝 Python 的版本。

  2. 將 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

範例

請參閱 此範例存放庫 ,以取得更新至最新 (追蹤 2) 範例程式代碼。 請參閱 此範例存放庫 以取得追蹤 1 範例程式代碼。 根 README.md 目錄描述一般需求,而每個子目錄都包含一個專屬的範例 README.md ,描述如何執行該範例。

如需適用於 Azure Stack 版本 2008 或設定檔 2019-03-01 以及下列範例的詳細資訊,請參閱此處

後續步驟