Compartir a través de


Ejemplo: Creación de Azure Storage mediante las bibliotecas de Azure para Python

En este artículo, aprenderá a usar las bibliotecas de administración de Azure para Python para crear un grupo de recursos, junto con una cuenta de Azure Storage y un contenedor de Blob Storage.

Después de aprovisionar estos recursos, consulte la sección Ejemplo: Uso de Azure Storage para ver cómo usar las bibliotecas cliente de Azure en Python para cargar un archivo en el contenedor de blobs.

Los comandos equivalentes de la CLI de Azure para Bash y PowerShell se enumeran más adelante en este artículo. Si prefiere usar Azure Portal, consulte Creación de una cuenta de Azure Storage y Creación de un contenedor de blobs.

1: Configuración del entorno de desarrollo local

Si aún no lo ha hecho, configure un entorno en el que pueda ejecutar el 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 Instalación de Python.

    #!/bin/bash
    # Create a virtual environment
    python -m venv .venv
    # Activate the virtual environment
    source .venv/Scripts/activate # only required for Windows (Git Bash)
    
  • Use un entorno de 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 necesarios

  1. En la consola, cree un archivo requirements.txt que muestre las bibliotecas de administración que se usan en este ejemplo:

    azure-mgmt-resource
    azure-mgmt-storage
    azure-identity
    
  2. En la consola con el entorno virtual activado, instale los requisitos:

    pip install -r requirements.txt
    

3. Establecer variables de entorno

En este paso, establecerá las variables de entorno para usarlas en el código de este artículo. El código usa el os.environ método para recuperar los valores.

#!/bin/bash
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export LOCATION=<Location> # Change to your preferred region
export AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name

4: Escribir código para crear una cuenta de almacenamiento y un contenedor de blobs

En este paso, creará un archivo de Python denominado provision_blob.py con el código siguiente. Este script de Python usa el SDK de Azure para bibliotecas de administración de Python para crear un grupo de recursos, una cuenta de Azure Storage y un contenedor de blobs mediante el SDK de Azure para Python.

import os, random

# Import the needed management objects from the libraries. The azure.common library
# is installed automatically with the other libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
from azure.mgmt.storage.models import BlobContainer

# Acquire a credential object.
credential = DefaultAzureCredential()

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

# Retrieve resource group name and location from environment variables
RESOURCE_GROUP_NAME = os.environ["AZURE_RESOURCE_GROUP_NAME"]
LOCATION = os.environ["LOCATION"]

# Step 1: Provision the resource group.
resource_client = ResourceManagementClient(credential, subscription_id)

rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
    { "location": LOCATION })

print(f"Provisioned resource group {rg_result.name}")

# For details on the previous code, see Example: Provision a resource group
# at https://docs.microsoft.com/azure/developer/python/azure-sdk-example-resource-group


# Step 2: Provision the storage account, starting with a management object.

storage_client = StorageManagementClient(credential, subscription_id)

STORAGE_ACCOUNT_NAME = os.environ["STORAGE_ACCOUNT_NAME"] 

# Check if the account name is available. Storage account names must be unique across
# Azure because they're used in URLs.
availability_result = storage_client.storage_accounts.check_name_availability(
    { "name": STORAGE_ACCOUNT_NAME }
)

if not availability_result.name_available:
    print(f"Storage name {STORAGE_ACCOUNT_NAME} is already in use. Try another name.")
    exit()

# The name is available, so provision the account
poller = storage_client.storage_accounts.begin_create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME,
    {
        "location" : LOCATION,
        "kind": "StorageV2",
        "sku": {"name": "Standard_LRS"}
    }
)

# Long-running operations return a poller object; calling poller.result()
# waits for completion.
account_result = poller.result()
print(f"Provisioned storage account {account_result.name}")


# Step 3: Retrieve the account's primary access key and generate a connection string.
keys = storage_client.storage_accounts.list_keys(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME)

print(f"Primary key for storage account: {keys.keys[0].value}")

conn_string = f"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={STORAGE_ACCOUNT_NAME};AccountKey={keys.keys[0].value}"

# print(f"Connection string: {conn_string}")

# Step 4: Provision the blob container in the account (this call is synchronous)
CONTAINER_NAME = os.environ["CONTAINER_NAME"]
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, BlobContainer())

print(f"Provisioned blob container {container.name}")

Autenticación en el código

Más adelante en este artículo, inicia sesión en Azure mediante la CLI de Azure para ejecutar el código de ejemplo. Si la cuenta tiene permisos suficientes para crear grupos de recursos y recursos de almacenamiento en la suscripción de Azure, el script debe ejecutarse correctamente sin configuración adicional.

Para usar este código en un entorno de producción, autentíquese mediante una entidad de servicio estableciendo variables de entorno. Este enfoque permite el acceso seguro y automatizado sin depender del inicio de sesión interactivo. Para obtener instrucciones detalladas, consulte Autenticación de aplicaciones de Python con servicios de Azure.

Asegúrese de que a la entidad de servicio se le asigna un rol con permisos suficientes para crear grupos de recursos y cuentas de almacenamiento. Por ejemplo, asignar el rol Colaborador en el nivel de suscripción proporciona el acceso necesario. Para más información sobre las asignaciones de roles, consulte Control de acceso basado en rol (RBAC) en Azure.

5. Ejecutar el script

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

    az login
    

  2. Ejecuta el script:

    python provision_blob.py
    

    El script tarda un minuto o dos en completarse.

6: Comprobación de los recursos

  1. Abra Azure Portal para comprobar que el grupo de recursos y la cuenta de almacenamiento se crearon según lo previsto. Es posible que tenga que esperar un minuto y seleccionar También Mostrar tipos ocultos en el grupo de recursos.

    Página de Azure Portal para el nuevo grupo de recursos, que muestra la cuenta de almacenamiento

  2. Seleccione la cuenta de almacenamiento y, a continuación, seleccioneContenedores> datos en el menú izquierdo para comprobar que aparece "blob-container-01":

    Página de Azure Portal para la cuenta de almacenamiento que muestra el contenedor de blobs

  3. Si quiere intentar usar estos recursos desde el código de aplicación, continúe con Ejemplo: Uso de Azure Storage.

Para obtener otro ejemplo de uso de la biblioteca de administración de Azure Storage, consulte el ejemplo Administración del almacenamiento de Python.

7: Limpieza de recursos

Deje los recursos en su lugar si desea seguir el artículo Ejemplo: Uso de Azure Storage para usar estos recursos en el código de la aplicación. De lo contrario, ejecute el comando az group delete si no necesita mantener el grupo de recursos y los recursos de almacenamiento creados en este ejemplo.

Los grupos de recursos no incurren en cargos continuos en la suscripción, pero los recursos, como las cuentas de almacenamiento, en el grupo de recursos pueden incurrir en cargos. Se recomienda limpiar cualquier grupo que no se esté usando activamente. El argumento --no-wait permite que el comando devuelva inmediatamente en lugar de esperar a que finalice la operación.

#!/bin/bash
az group delete -n $AZURE_RESOURCE_GROUP_NAME --no-wait

Como referencia: comandos equivalentes de la CLI de Azure

Los siguientes comandos de la CLI de Azure completan los mismos pasos de creación que el script de Python:

#!/bin/bash
#!/bin/bash

# Set variables
export LOCATION=<Location> # Change to your preferred region
export AZURE_RESOURCE_GROUP_NAME=<ResourceGroupName> # Change to your preferred resource group name
export STORAGE_ACCOUNT_NAME=<StorageAccountName> # Change to your preferred storage account name
export CONTAINER_NAME=<ContainerName> # Change to your preferred container name

# Provision the resource group
echo "Creating resource group: $AZURE_RESOURCE_GROUP_NAME"
az group create \
    --location "$LOCATION" \
    --name "$AZURE_RESOURCE_GROUP_NAME"

# Provision the storage account
az storage account create -g $AZURE_RESOURCE_GROUP_NAME -l $LOCATION -n $STORAGE ACCOUNT_NAME --kind StorageV2 --sku Standard_LRS

echo Storage account name is $STORAGE_ACCOUNT_NAME

# Retrieve the connection string
CONNECTION_STRING=$(az storage account show-connection-string -g $AZURE_RESOURCE_GROUP_NAME -n $STORAGE_ACCOUNT_NAME --query connectionString)

# Provision the blob container
az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --connection-string $CONNECTION_STRING

Consulte también