问题描述
我正在列出所有可用的订阅。调用subscription.id
时返回:
/subscriptions/<subscription-id>
现在,如果我尝试直接将其传递给Azure计算库,它将不会接受它作为ID。
compute_client = ComputeManagementClient(credential=credentials,subscription_id=subscription.id)
>> (SubscriptionNotFound) The subscription 'subscriptions' Could not be found.
这意味着我必须手动清理ID
subscription.id.replace("/subscription/","")
解决方法
不幸的是,没有没有内置方法可以通过python获取订阅ID。
您可以使用(Get-AzSubscription).SubscriptionId
之类的Power Shell命令。
通过calling power shell command from Python:
,子过程模块是Python标准库中的模块。它 由可用于创建新流程的调用方法组成 并在那里接收返回值和错误代码/
要运行powershell命令,只需将命令名称传递给调用 方法作为字符串。
import subprocess subprocess.call("(Get-AzSubscription).SubscriptionId")
这是subscription_id
属性:
https://docs.microsoft.com/en-us/python/api/azure-mgmt-resource/azure.mgmt.resource.subscriptions.v2019_11_01.models.subscription?view=azure-python
from azure.mgmt.resource.subscriptions import SubscriptionClient
client = SubscriptionClient(credential)
for sub in client.subscriptions.list():
print(sub.subscription_id)
(免责声明,我在Azure SDK团队的MS上工作)