我正在尝试使用 Python SDK 以编程方式创建新的 Azure 订阅。我发现的对 Azure Python SDK 的唯一引用是 这个
这是我最终得到的结果:
import azure.mgmt.billing
import azure.mgmt.subscription
creds = AzureCliCredential()
client_name = 'test'
def create_subscription(creds, client_name):
subscription_client = azure.mgmt.subscription.SubscriptionClient(creds)
creation_parameters = azure.mgmt.subscription.models.SubscriptionCreationParameters(
offer_type = 'MS-AZR-0003P')
creation_result = subscription_client.subscription_factory.create_subscription_in_enrollment_account(
client_name,
creation_parameters)
return creation_result
output = create_subscription(creds, client_sub)
print(output)
错误:
AttributeError: module 'azure.mgmt.subscription.models' has no attribute 'SubscriptionCreationParameters'
但是查看
文档
显示该类
azure.mgmt.subscription.models
有一个
SubscriptionCreationParameters
模块。
我在这里缺少什么?
遇到的错误是由于
azure-mgmt-subscription
包的版本不兼容导致的。
SubscriptionCreationParameters
类在旧版本中不可用。
尽管链接的文档显示
SubscriptionCreationParameters
类存在,但它可能引用的是尚未安装的更新版本。
解决方法:
需要安装
azure-mgmt-subscription
的最新版本才能访问
SubscriptionCreationParameters
类。 但是,
请注意,即使使用最新版本,也可能无法直接通过 Python SDK 创建新的 Azure 订阅。
创建订阅通常需要更高的权限,并且通常通过 Azure 门户、Azure CLI 或 REST API 的特定 API 进行管理。
验证和更新包版本:
-
检查已安装的版本:
bash pip show azure-mgmt-subscription
-
升级到最新版本:
bash pip install --upgrade azure-mgmt-subscription
替代方法:使用 Azure REST API
如果需要以编程方式创建 Azure 订阅,更可靠的方法是直接使用 Azure REST API。可以使用 Python 的
requests
库发送 HTTP 请求来实现。
以下是一个使用 REST API 创建 Azure 订阅的示例:
import requests
from azure.identity import ClientSecretCredential
# 替换为的 Azure 租户 ID、客户端 ID 和客户端密钥
tenant_id = "YOUR_TENANT_ID"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
# 创建身份验证凭据
credentials = ClientSecretCredential(tenant_id, client_id, client_secret)
# 创建请求标头和正文
headers = {"Authorization": f"Bearer {credentials.get_token().token}"}
data = {
"properties": {
"displayName": "My New Subscription",
"offerType": "MS-AZR-0003P" # 替换为需要的产品/服务
}
}
# 发送 REST API 请求
response = requests.post(
f"https://management.azure.com/providers/Microsoft.Subscription/createSubscription?api-version=2021-10-01",
headers=headers,
json=data,
)
# 处理响应
print(response.json())
请注意,需要具有足够的 Azure 权限才能执行此操作。 确保使用具有创建订阅权限的帐户或服务主体。
请记住查阅 Azure REST API 文档以获取有关创建订阅的最新信息和要求:https://docs.microsoft.com/zh-cn/rest/api/azure/
标签:python,azure-sdk-python,azure-subscription From: 70138455