示例:使用 Azure 库创建资源组
此示例演示了如何在 Python 脚本中使用 Azure SDK 管理库来创建资源组。 (本文稍后会提供等效的 Azure CLI 命令。如果更想使用 Azure 门户,则请参阅创建资源组。)
除非另行说明,否则本文中的所有资源在 Linux/macOS bash 和 Windows 命令行界面上的工作方式相同。
1:设置本地开发环境
如果尚未设置,则请设置一个可在其中运行此代码的环境。 提供以下选择:
使用
venv
或所选工具来配置 Python 虚拟环境。 可在本地或 Azure Cloud Shell 中创建虚拟环境,然后在其中运行代码。 请务必激活此虚拟环境以开始使用。使用 Conda 环境。
在 Visual Studio Code 或 GitHub Codespaces 中使用开发容器。
2:安装 Azure 库包
创建一个具有以下内容的名为 requirements.txt 的文件:
azure-mgmt-resource
azure-identity
在激活了虚拟环境的终端或命令提示符下,安装下列要求:
pip install -r requirements.txt
3:编写代码以创建资源组
创建包含以下代码的名为“provision_rg.py” 的 Python 文件。 注释对详细信息进行了说明:
# Import the needed credential and management objects from the libraries.
import os
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
# Acquire a credential object using DevaultAzureCredential.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(
"PythonAzureExample-rg", {"location": "centralus"}
)
# Within the ResourceManagementClient is an object named resource_groups,
# which is of class ResourceGroupsOperations, which contains methods like
# create_or_update.
#
# The second parameter to create_or_update here is technically a ResourceGroup
# object. You can create the object directly using ResourceGroup(location=
# LOCATION) or you can express the object as inline JSON as shown here. For
# details, see Inline JSON pattern for object arguments at
# https://learn.microsoft.com/azure/developer/python/sdk
# /azure-sdk-library-usage-patterns#inline-json-pattern-for-object-arguments
print(
f"Provisioned resource group {rg_result.name} in the {rg_result.location} region"
)
# The return value is another ResourceGroup object with all the details of the
# new group. In this case the call is synchronous: the resource group has been
# provisioned by the time the call returns.
# To update the resource group, repeat the call with different properties, such
# as tags:
rg_result = resource_client.resource_groups.create_or_update(
"PythonAzureExample-rg",
{
"location": "centralus",
"tags": {"environment": "test", "department": "tech"},
},
)
print(f"Updated resource group {rg_result.name} with tags")
# Optional lines to delete the resource group. begin_delete is asynchronous.
# poller = resource_client.resource_groups.begin_delete(rg_result.name)
# result = poller.result()
代码中的身份验证
在本文后续阶段,你会使用 Azure CLI 登录到 Azure,以便运行示例代码。 如果帐户有权在 Azure 订阅中创建和列出资源组,此代码则会成功运行。
若要在生产脚本中使用此类代码,则可将环境变量设为使用基于服务主体的方法来进行身份验证。 若要了解详细信息,请参阅如何使用 Azure 服务对 Python 应用进行身份验证。 需确保服务主体有足够权限在订阅中创建和列出资源组,具体方法则是在 Azure 中为其分配适当的角色;例如,订阅的参与者角色。
代码中使用的类的参考链接
4:运行脚本
如果尚未登录,则请使用 Azure CLI 登录到 Azure:
az login
将
AZURE_SUBSCRIPTION_ID
环境变量设为订阅 ID。 (可运行 az account show 命令,然后从输出中的id
属性获取订阅 ID):运行以下脚本:
python provision_rg.py
5:验证资源组
可以通过 Azure 门户或 Azure CLI 来验证该组是否存在。
Azure 门户:打开 Azure 门户,选择“资源组”,并查看是否列出了该组。 如果已打开门户,请使用 Refresh 命令更新该列表。
Azure CLI:使用 az group show 命令:
az group show -n PythonAzureExample-rg
6:清理资源
如果无需保留在此示例中创建的资源组,则请运行 az group delete 命令。 资源组不会在订阅中产生任何持续费用,但资源组中的资源则可能会继续产生费用。 最好清理未主动使用的所有组。 --no-wait
参数允许命令立即返回,而不是等到操作完成再返回。
az group delete -n PythonAzureExample-rg --no-wait
你还可以使用 ResourceManagementClient.resource_groups.begin_delete
方法从代码中删除资源组。 本文中位于脚本底部的注释代码演示了相关用法。
供参考:等效的 Azure CLI 命令
以下 Azure CLI az group create 命令会使用标记来创建资源组,就像 Python 脚本一样:
az group create -n PythonAzureExample-rg -l centralus --tags "department=tech" "environment=test"