Ejemplo: Uso de las bibliotecas de Azure para enumerar los grupos de recursos y los recursos

En este ejemplo se muestra cómo usar las bibliotecas de administración del SDK de Azure en un script de Python para realizar dos tareas:

  • Enumere todos los grupos de recursos de una suscripción de Azure.
  • Enumera los recursos dentro de un grupo de recursos específico.

Todos los comandos de este artículo funcionan iguales en los shells de comandos de Linux/macOS y Windows, a menos que se indique.

Los comandos equivalentes de la CLI de Azure se enumeran más adelante en este artículo.

1: Configuración del entorno de desarrollo local

Si aún no lo ha hecho, configure un entorno en el que pueda ejecutar este código. Estas son algunas opciones:

  • Configure un entorno virtual de Python mediante venv o la herramienta que prefiera. Para empezar a usar el entorno virtual, asegúrese de activarlo. Para instalar Python, consulte Install Python.
#!/bin/bash
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
source venv/bin/activate
  • Usa un entorno conda . Para instalar Conda, consulte Instalación de Miniconda.

  • Usa un contenedor de desarrollo en Visual Studio Code o en GitHub Codespaces .

2: Instalación de los paquetes de biblioteca de Azure

Cree un archivo denominado requirements.txt con el siguiente contenido:

azure-mgmt-resource
azure-identity

En un terminal o línea de comandos con el entorno virtual activado, instale los requisitos necesarios:

pip install -r requirements.txt

3: Escribir código para trabajar con grupos de recursos

3a. Enumeración de grupos de recursos en una suscripción

Cree un archivo de Python denominado list_groups.py con el código siguiente. Los comentarios explican los detalles:

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

# Acquire a credential object.
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)

# Retrieve the list of resource groups
group_list = resource_client.resource_groups.list()

# Show the groups in formatted output
column_width = 40

print("Resource Group".ljust(column_width) + "Location")
print("-" * (column_width * 2))

for group in list(group_list):
    print(f"{group.name:<{column_width}}{group.location}")

3b. Enumeración de recursos dentro de un grupo de recursos específico

Cree un archivo de Python denominado list_resources.py con el código siguiente. Los comentarios explican los detalles.

De forma predeterminada, el código enumera los recursos de myResourceGroup. Para usar otro grupo de recursos, establezca la RESOURCE_GROUP_NAME variable de entorno en el nombre del grupo deseado.

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

# Acquire a credential object.
credential = DefaultAzureCredential()

# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# Retrieve the resource group to use, defaulting to "myResourceGroup".
resource_group = os.getenv("RESOURCE_GROUP_NAME", "myResourceGroup")

# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)

# Retrieve the list of resources in "myResourceGroup" (change to any name desired).
# The expand argument includes additional properties in the output.
resource_list = resource_client.resources.list_by_resource_group(
    resource_group, expand = "createdTime,changedTime")

# Show the groups in formatted output
column_width = 36

print("Resource".ljust(column_width) + "Type".ljust(column_width)
    + "Create date".ljust(column_width) + "Change date".ljust(column_width))
print("-" * (column_width * 4))

for resource in list(resource_list):
    print(f"{resource.name:<{column_width}}{resource.type:<{column_width}}"
       f"{str(resource.created_time):<{column_width}}{str(resource.changed_time):<{column_width}}")

Autenticación en el código

Más adelante en este artículo, inicia sesión en Azure mediante el CLI de Azure para ejecutar el código de ejemplo. Si la cuenta tiene permisos para crear y enumerar grupos de recursos en la suscripción de Azure, el código se ejecuta correctamente.

Para usar este código en un script de producción, establezca variables de entorno para usar un método basado en la entidad de servicio para la autenticación. Para más información, consulte Autenticación de aplicaciones de Python con servicios de Azure. Asegúrese de que la entidad de servicio tenga permisos suficientes para crear y listar grupos de recursos en su suscripción asignándole un rol adecuado en Azure; por ejemplo, el rol Contributor en su suscripción.

4: Ejecutar los scripts

  1. Si aún no lo ha hecho, inicie sesión en Azure con el CLI de Azure:

    az login
    
  2. Establezca la variable de entorno AZURE_SUBSCRIPTION_ID a su ID de suscripción. (Ejecute el comando az account show y obtenga el identificador de suscripción de la id propiedad en la salida):

    export AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Enumere todos los grupos de recursos de la suscripción:

    python list_groups.py
    
  4. Enumerar todos los recursos de un grupo de recursos:

    python list_resources.py
    

    De forma predeterminada, el código enumera los recursos de myResourceGroup. Para usar otro grupo de recursos, establezca la RESOURCE_GROUP_NAME variable de entorno en el nombre del grupo deseado.

Como referencia: comandos equivalentes de la CLI de Azure

El siguiente comando de la CLI de Azure enumera los grupos de recursos de una suscripción:

az group list

El siguiente comando enumera los recursos dentro de la myResourceGroup región centralus (el location argumento es necesario para identificar un centro de datos específico):

az resource list --resource-group myResourceGroup --location centralus

Consulte también