Interactuar con Azurite a través de Azure CLI

Para un entorno de pruebas que estoy desarrollando quiero utilizar Azurite, el emulador de Azure Storage que deprecó el anterior, y una de las cosas que quiero hacer es a través de la línea de comandos dejar este preparado con los blobs que necesito para mis pruebas, para no tener que estar creando los contenedores a mano con Azure Storge Explorer, luego subir las imágenes que necesito, etcétera. En este artículo te cuento cómo lo he hecho.

Instalar Azurite

Si llevas tiempo con Azure, sabrás que antes existía otro emulador para Windows para poder trabajar en un entorno local con Azure Storage. Desde hace ya algún tiempo apareció Azurite, el cual es multi-plataforma. Para instalarlo solo necesitas el siguiente comando:

npm install -g azurite

Para ejecutarlo, puedes invocarlo simplemente a través de su nombre:

azurite

Pero yo siempre le indico una ubicación para los archivos que genera, porque sino te los suelta en el mismo directorio en el que estés y luego es un follón:

azurite --location c:\azurite

Interactuar a través de Azure CLI

Ahora, para usar la línea de comandos con Azure CLI, la clave está en usar el parámetro –connection-string en lugar de –account-name. Las cadenas de conexión de Azurite las puedes encontrar aquí.

Por ejemplo si quieres crear contenedores, puedes hacerlo de la siguiente manera:

#Connection string for azurite
$AZURITE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;"

#Create containers
az storage container create -n heroes --public-access blob --connection-string $AZURITE_CONNECTION_STRING

az storage container create -n alteregos --connection-string $AZURITE_CONNECTION_STRING

O si quieres subir archivos:

#Connection string for azurite
$AZURITE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;"

#Upload files
az storage blob upload-batch --destination heroes --source src/assets/heroes/. --connection-string $AZURITE_CONNECTION_STRING

az storage blob upload-batch --destination alteregos --source src/assets/alteregos/. --connection-string $AZURITE_CONNECTION_STRING

E incluso configurar CORS, al igual que lo harías con una cuenta en Azure Storage:

#Configure CORS settings
az storage cors add --origin 'http://localhost:4200' --methods OPTIONS,PUT --services b --connection-string $AZURITE_CONNECTION_STRING

Nota: para este último escenario necesitas modificar la forma de arrancar Azurite usando el parámetro –loose, para omitir los encabezados y parámetros no compatibles:

azurite --location c:\azurite --loose

¡Saludos!