Share via


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 en un script de Python para crear un grupo de recursos que contenga una cuenta de Azure Storage y un contenedor de Blob Storage.

Después de crear los recursos, consulte Ejemplo: Uso de Azure Storage para usar las bibliotecas cliente de Azure en el código de aplicación de Python para cargar un archivo en el contenedor de Blob Storage .

Todos los comandos de este artículo funcionan igual en el bash de Linux o macOS y en los shells de comandos de Windows, a menos que se indique lo contrario.

Los comandos equivalentes de la CLI de Azure 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:

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

  1. Cree un archivo requirements.txt en el que se enumeren las bibliotecas de administración que se usan en este ejemplo:

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

    pip install -r requirements.txt
    

3: Escribir código para crear recursos de almacenamiento

Cree un archivo de Python llamado provision_blob.py con el siguiente código. Los detalles se explican en los comentarios. El script lee el identificador de suscripción de una variable de entorno, AZURE_SUBSCRIPTION_ID. Esta variable se establece en un paso posterior. El nombre del grupo de recursos, la ubicación, el nombre de la cuenta de almacenamiento y el nombre del contenedor se definen como constantes en el código.

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

# 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)

# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = "PythonAzureExample-Storage-rg"
LOCATION = "centralus"

# Step 1: Provision the resource group.

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 = f"pythonazurestorage{random.randint(1,100000):05}"

# You can replace the storage account here with any unique name. A random number is used
# by default, but note that the name changes every time you run this script.
# The name must be 3-24 lower case letters and numbers only.


# 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 = "blob-container-01"
container = storage_client.blob_containers.create(RESOURCE_GROUP_NAME, STORAGE_ACCOUNT_NAME, CONTAINER_NAME, {})

# The fourth argument is a required BlobContainer object, but because we don't need any
# special values there, so we just pass empty JSON.

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 con la CLI de Azure para ejecutar el código de ejemplo. Si la cuenta tiene permisos para crear grupos de recursos y recursos de almacenamiento en la suscripción de Azure, el código se ejecutará correctamente.

Para usar este código en un script de producción, puede establecer 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. Debe asegurarse de que la entidad de servicio tiene permisos suficientes para crear grupos de recursos y recursos de almacenamiento en la suscripción mediante la asignación de un rol adecuado en Azure; por ejemplo, el rol Colaborador de la suscripción.

4. Ejecutar el script

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

    az login
    
  2. Establezca la variable de entorno en el AZURE_SUBSCRIPTION_ID identificador de suscripción. (Puede ejecutar el comando az account show y obtener el identificador de suscripción de la id propiedad en la salida):

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. Ejecute el script:

    python provision_blob.py
    

El script puede tardar un minuto o dos en completarse.

5: 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.

    Azure portal page for the new resource group, showing the storage account

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

    Azure portal page for the storage account showing the blob container

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

Para ver un ejemplo adicional del uso de la biblioteca de administración de Azure Storage, consulte el ejemplo de administración del almacenamiento de Python.

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:

rem Provision the resource group

az group create ^
-n PythonAzureExample-Storage-rg ^
-l centralus

rem Provision the storage account

set account=pythonazurestorage%random%
echo Storage account name is %account%

az storage account create ^
-g PythonAzureExample-Storage-rg ^
-l centralus ^
-n %account% ^
--kind StorageV2 ^
--sku Standard_LRS

rem Retrieve the connection string

FOR /F %i IN ('az storage account show-connection-string -g PythonAzureExample-Storage-rg -n %account% --query connectionString') do (SET connstr=%i)

rem Provision the blob container

az storage container create ^
--name blob-container-01 ^
--account-name %account% ^
--connection-string %connstr%

6: 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. Es recomendable limpiar cualquier grupo que no esté usando activamente. El argumento --no-wait permite que el comando devuelva el control inmediatamente en lugar de esperar a que finalice la operación.

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

También puede usar el método ResourceManagementClient.resource_groups.begin_delete para eliminar un grupo de recursos del código. El código de Ejemplo: Crear un grupo de recursos muestra el uso.

Consulte también