此文適用於想要把 Azure Python SDK 切換到 Track2 版本的 Azure 用戶python
升級 SDK
目前全部的 Track2 SDK 均處於預覽版本, 用戶能夠從 pypi.org 上查詢具體的 Service SDK 是否有 Track2 SDK, 如 azure-mgmt-compute
的 Track2 預覽版本: https://pypi.org/project/azure-mgmt-compute/17.0.0b1/#historygit
經過 pypi.org 上提示的預覽版本號進行安裝升級, 如安裝 compute: pip install azure-mgmt-compute==17.0.0b1
.github
使用新的 Identity 庫
在 Track2 中再也不使用 azure.common
中的 ServicePrincipalCredentials
進行身份校驗, 取而代之的是 azure-identity
中的校驗工具, 例如: ClientSecretCredential
異步
使用 pip install azure-identity
安裝該庫,並在代碼中進行以下修改:ide
# Track1 (old) import azure.mgmt.compute from azure.common.credentials import ServicePrincipalCredentials credentials = ServicePrincipalCredentials( client_id=client_id, secret=client_secret, tenant=tenant_id ) compute_client = azure.mgmt.compute.ComputeManagementClient(credentials=credentials, subscription_id=self.subscription_id) # Track2 (new) import azure.mmgt.compute from azure.identity import ClientSecretCredential credential = ClientSecretCredential( tenant_id=tenant_id, client_id=client_id, client_secret=client_secret ) compute_client = azure.mgmt.compute.ComputeManagementClient(credential=credential, subscription_id=self.subscription_id)
Client 的變更
大部分的 Client API 與 Track1 一致, 只有在異步的 API 部分(RestAPI 返回 202 或者須要顯式調用 .result()
的 API), 爲了明顯的與通常 API 區分, API名稱前加上了begin_
的前綴.工具
以建立 VM 爲例, 代碼的改動:url
# Track1 (old) result = self.compute_client.virtual_machines.create_or_update( group_name, vm_name, parameters ) result = result.result() # Track2 (new) result = self.compute_client.virtual_machines.begin_create_or_update( group_name, vm_name, parameters ) vm = result.result()
完整的 Track1 與 Track2 Demo 能夠參考:https://github.com/00Kai0/azure-playground/tree/master/samples/azure/createVM.net