Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft Azure Blob Storage permite almacenar grandes cantidades de datos de objetos no estructurados. Puede usar Blob Storage para recopilar o exponer datos multimedia, de contenido o de aplicación a los usuarios. Dado que todos los datos de blobs se almacenan en contenedores, debe crear un contenedor de almacenamiento para poder empezar a cargar datos. Para más información sobre Blob Storage, consulte Introducción a Azure Blob Storage.
La CLI de Azure es la experiencia de línea de comandos multiplataforma de Azure para administrar recursos de Azure. Puede utilizarlo en el explorador con Azure Cloud Shell. También puede instalarlo en macOS, Linux o Windows y ejecutarlo localmente desde la línea de comandos.
En este artículo de procedimientos, aprenderá a usar la CLI de Azure con Bash para trabajar con objetos de contenedor.
Prerrequisitos
Para acceder a Azure Storage, necesitará una suscripción de Azure. Si todavía no tiene una suscripción, cree una cuenta gratuita antes de empezar.
Todo el acceso a Azure Storage tiene lugar mediante una cuenta de almacenamiento. En este inicio rápido, cree una cuenta de almacenamiento con Azure Portal, Azure PowerShell o la CLI de Azure. Si necesita ayuda para crear una cuenta de almacenamiento, consulte Creación de una cuenta de almacenamiento.
Preparación del entorno para la CLI de Azure
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
- Siempre es una buena idea instalar la versión más reciente de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Autorización del acceso a Blob Storage
Puede autorizar el acceso a Blob Storage desde la CLI de Azure con credenciales de Microsoft Entra o mediante la clave de acceso de la cuenta de almacenamiento. Se recomienda usar las credenciales de Microsoft Entra y en los ejemplos de este artículo se usa el identificador de Microsoft Entra exclusivamente.
Los comandos de la CLI de Azure para las operaciones de datos en Blob Storage admiten el --auth-mode parámetro , lo que permite especificar cómo autorizar una operación determinada. Establezca el --auth-mode parámetro en login para autorizar con las credenciales de Microsoft Entra. Para más información, consulte el artículo en el que se explica cómo autorizar el acceso a los datos de blobs o colas con la CLI de Azure.
Ejecute el login comando para abrir un explorador y conectarse a su suscripción de Azure.
az login
Creación de un contenedor
Para crear un contenedor con la CLI de Azure, llame al comando az storage container create . En el ejemplo siguiente se muestran tres opciones para la creación de contenedores de blobs con el az storage container create comando . El primer enfoque crea un único contenedor, mientras que los dos enfoques restantes usan operaciones de scripting de Bash para automatizar la creación de contenedores.
Para usar este ejemplo, proporcione valores para las variables y asegúrese de que ha iniciado sesión. Recuerde reemplazar los valores de marcador de posición entre corchetes por sus propios valores.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Approach 1: Create a container
az storage container create \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Approach 2: Create containers with a loop
for value in {2..5}
do
az storage container create \
--name $containerPrefix$value \
--account-name $storageAccount \
--auth-mode login
done
# Approach 3: Create containers by splitting multiple values
containerList="${containerPrefix}6 ${containerPrefix}7 ${containerPrefix}8"
for container in $containerList
do
az storage container create \
--name $container \
--account-name $storageAccount \
--auth-mode login
done
Enumerar contenedores
Use el az storage container list comando para recuperar una lista de contenedores de almacenamiento. Para devolver una lista de contenedores cuyos nombres comienzan por una cadena de caracteres determinada, pase la cadena como valor de --prefix parámetro.
El --num-results parámetro se puede usar para limitar el número de contenedores devueltos por la solicitud. Azure Storage limita el número de contenedores devueltos por una sola operación de enumeración a 5000. Este límite garantiza que se recuperen cantidades manejables de datos. Si el número de contenedores devueltos supera el valor indicado por --num-results o el límite de servicio, se devuelve un token de continuación. Este token permite usar varias solicitudes para recuperar cualquier número de contenedores.
También puede usar el --query parámetro para ejecutar una consulta JMESPath en los resultados de los comandos. JMESPath es un lenguaje de consulta para JSON que permite seleccionar y modificar los datos devueltos desde la salida de la CLI. Las consultas se ejecutan en la salida JSON antes de que se pueda dar formato. Para obtener más información, consulte Consulta de la salida del comando de la CLI de Azure mediante una consulta JMESPath.
En el ejemplo siguiente se muestra primero el número máximo de contenedores (sujeto al límite de servicio). A continuación, enumera tres contenedores cuyos nombres comienzan con el prefijo container-, proporcionando valores para los parámetros --num-results y --prefix. Por último, se muestra un único contenedor proporcionando un nombre de contenedor conocido al --prefix parámetro .
Obtenga más información sobre la lista de contenedores de almacenamiento az.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
numResults="3"
# Approach 1: List maximum containers
az storage container list \
--account-name $storageAccount \
--auth-mode login
# Approach 2: List a defined number of named containers
az storage container list \
--prefix $containerPrefix \
--num-results $numResults \
--account-name $storageAccount \
--auth-mode login
# Approach 3: List an individual container
az storage container list \
--prefix $containerPrefix \
--query "[?name=='$containerName']" \
--account-name $storageAccount \
--auth-mode login
Leer propiedades y metadatos del contenedor
Un contenedor expone las propiedades del sistema y los metadatos definidos por el usuario. Las propiedades del sistema existen en cada recurso de Blob Storage. Algunas propiedades son de solo lectura, mientras que otras se pueden leer o establecer. Bajo la superficie, algunas propiedades del sistema se asignan a determinados encabezados estándar de HTTP.
Los metadatos definidos por el usuario constan de uno o varios pares de nombre-valor que especifique para un recurso de Blob Storage. Puede usar metadatos para almacenar valores adicionales con el recurso. Los valores de metadatos se proporcionan para uso personal y no afectan a cómo se comporta el recurso.
Propiedades del contenedor
Para mostrar las propiedades de un contenedor con la CLI de Azure, llame al comando az storage container show .
En el ejemplo siguiente, el primer enfoque muestra las propiedades de un único contenedor con nombre. Después, recupera todos los contenedores con el prefijo demo-container- y recorre en iteración sus propiedades. Recuerde reemplazar los valores de plantilla por sus propios valores.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
# Show a named container's properties
az storage container show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# List several containers and show their properties
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $containerList
do
tmpRow=$(echo $row | sed -e 's/\r//g')
az storage container show --name $tmpRow --account-name $storageAccount --auth-mode login
done
Lectura y escritura de metadatos de contenedor
Los usuarios que tienen muchos miles de objetos dentro de su cuenta de almacenamiento pueden localizar rápidamente contenedores específicos en función de sus metadatos. Para leer los metadatos, usará el az storage container metadata show comando . Para actualizar los metadatos, deberá llamar al az storage container metadata update comando . El método solo acepta pares clave-valor separados por espacio. Para más información, consulte la documentación de az storage container metadata.
En el primer ejemplo siguiente se actualizan y, a continuación, se recuperan los metadatos de un contenedor con nombre. En el segundo ejemplo se recorre en iteración la lista de contenedores que coinciden con el -prefix valor. Los contenedores con nombres que contienen números pares tienen sus metadatos establecidos con valores contenidos en la variable de metadatos .
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Create metadata string
metadata="key=value pie=delicious"
# Update named container metadata
az storage container metadata update \
--name $containerName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
# Display metadata
az storage container metadata show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Get list of containers
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
# Update and display metadata
for row in $containerList
do
#Get the container's number
tmpName=$(echo $row | sed -e 's/\r//g')
if [ `expr ${tmpName: ${#containerPrefix}} % 2` == 0 ]
then
az storage container metadata update \
--name $tmpName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
echo $tmpName
az storage container metadata show \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
fi
done
Eliminación de contenedores
Según el caso de uso, puede eliminar un único contenedor o un grupo de contenedores con el az storage container delete comando . Al eliminar una lista de contenedores, deberá usar operaciones condicionales, como se muestra en los ejemplos siguientes.
Advertencia
La ejecución de los ejemplos siguientes puede eliminar de forma permanente contenedores y blobs. Microsoft recomienda habilitar la eliminación temporal de contenedores para proteger los contenedores y blobs contra la eliminación accidental. Para más información, consulte Eliminación temporal para contenedores.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Delete a single named container
az storage container delete \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Delete containers by iterating a loop
list=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $list
do
tmpName=$(echo $row | sed -e 's/\r//g')
az storage container delete \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
done
Si tiene habilitada la eliminación temporal del contenedor para la cuenta de almacenamiento, es posible recuperar los contenedores que se han eliminado. Si la opción de protección de datos de eliminación temporal de la cuenta de almacenamiento está habilitada, el --include-deleted parámetro devolverá contenedores eliminados dentro del período de retención asociado. El --include-deleted parámetro solo se puede usar para devolver contenedores cuando se usa con el --prefix parámetro . Para obtener más información sobre la eliminación suave, consulte el artículo Eliminación suave para contenedores.
Use el ejemplo siguiente para recuperar una lista de contenedores eliminados dentro del período de retención asociado de la cuenta de almacenamiento.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
# Retrieve a list of containers including those recently deleted
az storage container list \
--prefix $containerPrefix \
--include-deleted \
--account-name $storageAccount\
--auth-mode login
Restaurar un contenedor eliminado suavemente
Como se mencionó en la sección Lista de contenedores, puede configurar la opción de protección de datos de eliminación reversible en la cuenta de almacenamiento. Cuando está habilitada, es posible restaurar contenedores eliminados dentro del período de retención asociado. Para poder seguir este ejemplo, deberá habilitar la eliminación temporal y configurarla en al menos una de las cuentas de almacenamiento.
En los ejemplos siguientes se explica cómo restaurar un contenedor eliminado temporalmente con el az storage container restore comando . Deberá proporcionar valores para los --name parámetros y --version para asegurarse de que se restaure la versión correcta del contenedor. Si no conoce el número de versión, puede usar el az storage container list comando para recuperarlo como se muestra en el primer ejemplo. En el segundo ejemplo se buscan y restauran todos los contenedores eliminados dentro de una cuenta de almacenamiento específica.
Para obtener más información sobre la opción de protección de datos de eliminación suave, consulte el artículo Eliminación suave para contenedores.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
# Restore an individual named container
containerVersion=$(az storage container list \
--account-name $storageAccount \
--query "[?name=='$containerName'].[version]" \
--auth-mode login \
--output tsv \
--include-deleted | sed -e 's/\r//g')
az storage container restore \
--name $containerName \
--deleted-version $containerVersion \
--account-name $storageAccount \
--auth-mode login
# Restore a list of deleted containers
containerList=$(az storage container list \
--account-name $storageAccount \
--include-deleted \
--auth-mode login \
--query "[?deleted].{name:name,version:version}" \
-o json)
for row in $(echo "${containerList}" | jq -c '.[]' )
do
tmpName=$(echo $row | jq -r '.name')
tmpVersion=$(echo $row | jq -r '.version')
az storage container restore \
--account-name $storageAccount \
--name $tmpName \
--deleted-version $tmpVersion \
--auth-mode login
done
Obtención de una firma de acceso compartido para un contenedor
Una firma de acceso compartido (SAS) proporciona acceso delegado a los recursos de Azure. Una SAS proporciona un control pormenorizado sobre cómo un cliente puede acceder a los datos. Por ejemplo, puede especificar qué recursos están disponibles para el cliente. También puede limitar los tipos de operaciones que el cliente puede realizar y especificar el intervalo sobre el que la SAS es válida.
Una SAS se usa normalmente para proporcionar acceso temporal y seguro a un cliente que normalmente no tendría permisos. Para generar una SAS de servicio o de cuenta, deberá proporcionar valores para los parámetros --account-name y --account-key. Un ejemplo de este escenario sería un servicio que permite a los usuarios leer y escribir sus propios datos en su cuenta de almacenamiento.
Azure Storage admite tres tipos de firmas de acceso compartido: delegación de usuarios, servicio y SAS de cuenta. Para más información sobre las firmas de acceso compartido, consulte el artículo Concesión de acceso limitado a recursos de Azure Storage mediante firmas de acceso compartido .
Precaución
Cualquier cliente que posea una SAS válida puede acceder a los datos de la cuenta de almacenamiento según lo permitido por esa SAS. Es importante proteger una SAS del uso malintencionado o no deseado. Sea cauto al distribuir una SAS y tenga un plan para revocar una SAS en peligro.
En el ejemplo siguiente se muestra el proceso de configuración de una SAS de servicio para un contenedor específico mediante el az storage container generate-sas comando . Dado que está generando una SAS de servicio, el ejemplo primero recupera la clave de cuenta de almacenamiento para pasarla como el valor --account-key.
En el ejemplo se configurará la SAS con los tiempos de inicio y expiración y un protocolo. También especificará los permisos de eliminación, lectura, escritura y lista en la SAS mediante el --permissions parámetro . Puede hacer referencia a la tabla completa de permisos en el artículo Creación de una SAS de servicio .
Copie y pegue el valor del token de SAS de Blob en una ubicación segura. Solo se mostrará una vez y no se podrá recuperar una vez cerrado Bash. Para construir la dirección URL de SAS, anexe el token de SAS (URI) a la dirección URL del servicio de almacenamiento.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
permissions="drwl"
expiry=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`
accountKey=$(az storage account keys list \
--account-name $storageAccount \
--query "[?permissions == 'FULL'].[value]" \
--output tsv)
accountKey=$( echo $accountKey | cut -d' ' -f1 )
az storage container generate-sas \
--name $containerName \
--https-only \
--permissions dlrw \
--expiry $expiry \
--account-key $accountKey \
--account-name $storageAccount
Nota:
El token de SAS devuelto por la CLI de Azure no incluye el carácter delimitador ("?") para la cadena de consulta de dirección URL. Si va a anexar el token de SAS a una dirección URL de recurso, recuerde anexar el carácter delimitador a la dirección URL del recurso antes de anexar el token de SAS.
Pasos siguientes
En este artículo de instrucciones, ha aprendido a administrar contenedores en Blob Storage. Para más información sobre cómo trabajar con Blob Storage mediante la CLI de Azure, seleccione una opción a continuación.