示例:使用 Azure 库预配资源组

此示例演示如何在 Python 脚本中使用 Azure SDK 管理库来预配资源组。 本文稍后会提供等效的 Azure CLI 命令 (。如果想要使用Azure 门户,请参阅“创建资源组”。)

除非另行说明,否则本文中的所有资源在 Linux/macOS bash 和 Windows 命令行界面上的工作方式相同。

1:设置本地开发环境

如果尚未设置,请按照为 Azure 配置本地 Python 开发环境中的所有说明进行操作。

请务必为该项目创建一个虚拟环境并将其激活。

2:安装 Azure 库包

创建一个具有以下内容的名为 requirements.txt 的文件:

azure-mgmt-resource>=18.0.0
azure-identity>=1.5.0

请务必使用这些版本的库。 使用较旧的版本会导致错误,例如“'AzureCliCredential' 对象没有特性 'signed_session'”。

在激活了虚拟环境的终端或命令提示符下,安装下列要求:

pip install -r requirements.txt

3:写入代码以预配资源组

创建包含以下代码的名为“provision_rg.py” 的 Python 文件。 注释对详细信息进行了说明:

# Import the needed credential and management objects from the libraries.
from azure.mgmt.resource import ResourceManagementClient
from azure.identity import AzureCliCredential
import os

# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()

# 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://docs.microsoft.com/azure/developer/python/azure-sdk-overview#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()

此代码使用基于 CLI 的身份验证方法(使用 AzureCliCredential),因为它演示了你可能会使用 Azure CLI 直接执行的操作。 在这两种情况下,使用相同的身份验证标识。

例如,若要在生产脚本中使用此类代码 (自动化 VM 管理) ,请使用 DefaultAzureCredential (推荐的) 或服务主体方法,如 如何使用 Azure 服务对 Python 应用进行身份验证

4:运行脚本

python provision_rg.py

5:验证资源组

可以通过 Azure 门户或 Azure CLI 来验证该组是否存在。

  • Azure 门户:打开 Azure 门户,选择“资源组”,并查看是否列出了该组。 如果已打开门户,请使用 Refresh 命令更新该列表。

  • Azure CLI:运行以下命令:

    az group show -n PythonAzureExample-rg
    

6:清理资源

az group delete -n PythonAzureExample-rg  --no-wait

如果不需要保留在此示例中预配的资源组,请运行此命令。 资源组不会在你的订阅中产生任何持续的费用,但最好清除你不会主动使用的任何组。 --no-wait 参数允许命令立即返回,而不是等到操作完成再返回。

你还可以使用 ResourceManagementClient.resource_groups.delete 方法从代码中删除资源组。

有关参考:等效 Azure CLI 命令

以下 Azure CLI 命令完成了与 Python 脚本相同的预配步骤:

az group create -n PythonAzureExample-rg -l centralus

另请参阅