Inicio rápido: Administración de blobs con el SDK de JavaScript v12 en Node.js

En este inicio rápido, aprenderá a administrar blobs mediante Node.js. Los blobs son objetos que pueden contener grandes cantidades de texto o datos binarios, como imágenes, documentos, medios de transmisión y datos de archivo. Cargará, descargará y enumerará los blobs, y creará y eliminará los contenedores.

Recursos adicionales:

Requisitos previos

Instalación

En esta sección se explica cómo preparar un proyecto para que funcione con la biblioteca cliente de Azure Blob Storage v12 para JavaScript.

Creación del proyecto

Cree una aplicación de JavaScript llamada blob-quickstart-v12.

  1. En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para el proyecto.

    mkdir blob-quickstart-v12
    
  2. Cambie al directorio blob-quickstart-v12 recién creado.

    cd blob-quickstart-v12
    
  3. Cree un nuevo archivo de texto denominado package.json. Este archivo define el proyecto de Node.js. Guarde este archivo en el directorio blob-quickstart-v12. A continuación encontrará el contenido del archivo:

    {
        "name": "blob-quickstart-v12",
        "version": "1.0.0",
        "description": "Use the @azure/storage-blob SDK version 12 to interact with Azure Blob storage",
        "main": "blob-quickstart-v12.js",
        "scripts": {
            "start": "node blob-quickstart-v12.js"
        },
        "author": "Your Name",
        "license": "MIT",
        "dependencies": {
            "@azure/storage-blob": "^12.0.0",
            "@types/dotenv": "^4.0.3",
            "dotenv": "^6.0.0"
        }
    }
    

    Puede poner su propio nombre en el campo author, si lo desea.

Instalar el paquete

Mientras sigue en el directorio blob-quickstart-v12, instale el paquete de la biblioteca cliente de Azure Blob Storage para JavaScript con el comando npm install. Este comando lee el archivo package.json e instala el paquete de la biblioteca cliente de Azure Blob Storage v12 para JavaScript y todas las bibliotecas de las que depende.

npm install

Instalación del marco de la aplicación

Desde el directorio del proyecto:

  1. Abra otro nuevo archivo de texto en el editor de código.

  2. Agregue llamadas require para cargar los módulos de Azure y Node.js.

  3. Cree la estructura del programa, incluido un control de excepciones básico.

    Este es el código:

    const { BlobServiceClient } = require('@azure/storage-blob');
    const { v1: uuidv1} = require('uuid');
    
    async function main() {
        console.log('Azure Blob storage v12 - JavaScript quickstart sample');
        // Quick start code goes here
    }
    
    main().then(() => console.log('Done')).catch((ex) => console.log(ex.message));
    
  4. Guarde el nuevo archivo como blob-quickstart-v12.js en el directorio blob-quickstart-v12.

Copia de las credenciales desde Azure Portal

Cuando la aplicación de ejemplo realiza una solicitud a Azure Storage, debe estar autorizada. Para autorizar una solicitud, agregue a la aplicación las credenciales de la cuenta de almacenamiento en forma de cadena de conexión. Para ver las credenciales de la cuenta de almacenamiento, siga estos pasos:

  1. Inicie sesión en Azure Portal.

  2. Busque su cuenta de almacenamiento.

  3. En el panel del menú de la cuenta de almacenamiento, en Seguridad y redes, seleccione Claves de acceso. Aquí puede ver las claves de acceso de la cuenta, así como la cadena de conexión completa de cada clave.

    Captura de pantalla que muestra dónde se encuentra la configuración de las claves de acceso en Azure Portal

  4. En el panel Claves acceso, seleccione Mostrar claves.

  5. En la sección key1, busque el valor de Cadena de conexión. Seleccione el icono Copiar al portapapeles para copiar la cadena de conexión. En la siguiente sección, agregará el valor de la cadena de conexión a una variable de entorno.

    Captura de pantalla que muestra cómo copiar una cadena de conexión desde Azure Portal

Configuración de la cadena de conexión de almacenamiento.

Una vez que haya copiado la cadena de conexión, escríbala en una variable de entorno nueva en la máquina local que ejecuta la aplicación. Para establecer la variable de entorno, abra una ventana de consola y siga las instrucciones de su sistema operativo. Reemplace <yourconnectionstring> por la cadena de conexión real.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Después de agregar la variable de entorno en Windows, debe iniciar una nueva instancia de la ventana de comandos.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Reiniciar programas

Después de agregar la variable de entorno, reinicie todos los programas en ejecución que necesiten leer esta variable. Por ejemplo, reinicie el entorno de desarrollo o el editor antes de continuar.

Modelo de objetos

Azure Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados. Los datos no estructurados son datos que no cumplen un modelo de datos o definición concreta, como texto o datos binarios. Blob Storage ofrece tres tipos de recursos:

  • La cuenta de almacenamiento
  • Un contenedor en la cuenta de almacenamiento
  • Un blob en el contenedor

En el siguiente diagrama se muestra la relación entre estos recursos.

Diagrama de arquitectura de Blob Storage

Use las siguientes clases de JavaScript para interactuar con estos recursos:

  • BlobServiceClient: La clase BlobServiceClient permite manipular recursos de Azure Storage y contenedores de blobs.
  • ContainerClient: La clase ContainerClient permite manipular contenedores de Azure Storage y sus blobs.
  • BlobClient: La clase BlobClient permite manipular los blobs de Azure Storage.

Ejemplos de código

Estos fragmentos de código de ejemplo muestran cómo realizar las siguientes acciones con la biblioteca cliente de Azure Blob Storage para JavaScript:

Obtención de la cadena de conexión

El código siguiente recupera la cadena de conexión de la cuenta de almacenamiento de la variable de entorno creada en la sección Configuración de la cadena de conexión de almacenamiento.

Agregue este código dentro de la función main:

// Retrieve the connection string for use with the application. The storage
// connection string is stored in an environment variable on the machine
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the
// environment variable is created after the application is launched in a
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
const AZURE_STORAGE_CONNECTION_STRING = process.env.AZURE_STORAGE_CONNECTION_STRING;

Crear un contenedor

Decida un nombre para el nuevo contenedor. El código siguiente anexa un valor de UUID al nombre de contenedor para asegurarse de que sea único.

Importante

Los nombres de contenedor deben estar en minúsculas. Para más información acerca de los contenedores de nomenclatura y los blobs, consulte Naming and Referencing Containers, Blobs, and Metadata (Asignación de nombres y realización de referencias a contenedores, blobs y metadatos).

Cree una instancia de la clase BlobServiceClient llamando al método fromConnectionString. A continuación, llame al método getContainerClient para obtener una referencia a un contenedor. Por último, llame a create para crear realmente el contenedor en la cuenta de almacenamiento.

Agregue este código al final de la función main:

// Create the BlobServiceClient object which will be used to create a container client
const blobServiceClient = BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING);

// Create a unique name for the container
const containerName = 'quickstart' + uuidv1();

console.log('\nCreating container...');
console.log('\t', containerName);

// Get a reference to a container
const containerClient = blobServiceClient.getContainerClient(containerName);

// Create the container
const createContainerResponse = await containerClient.create();
console.log("Container was created successfully. requestId: ", createContainerResponse.requestId);

Carga de los blobs en un contenedor

El siguiente fragmento de código:

  1. Crea una cadena de texto que se va a cargar en un blob.
  2. Obtiene una referencia a un objeto BlockBlobClient llamando al método getBlockBlobClient en el ContainerClient de la sección Crear un contenedor.
  3. Carga los datos de la cadena de texto en el blob llamando al método upload.

Agregue este código al final de la función main:

// Create a unique name for the blob
const blobName = 'quickstart' + uuidv1() + '.txt';

// Get a block blob client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);

console.log('\nUploading to Azure storage as blob:\n\t', blobName);

// Upload data to the blob
const data = 'Hello, World!';
const uploadBlobResponse = await blockBlobClient.upload(data, data.length);
console.log("Blob was uploaded successfully. requestId: ", uploadBlobResponse.requestId);

Enumerar los blobs de un contenedor

Enumere los blobs en el contenedor llamando al método listBlobsFlat. En este caso, solo se ha agregado un blob al contenedor, por lo que la operación de enumeración devuelve simplemente dicho blob.

Agregue este código al final de la función main:

console.log('\nListing blobs...');

// List the blob(s) in the container.
for await (const blob of containerClient.listBlobsFlat()) {
    console.log('\t', blob.name);
}

Descargar blobs

Descargue el blob creado previamente llamando al método download. El código de ejemplo incluye una función auxiliar denominada streamToString que se usa para leer una secuencia legible de Node.js en una cadena.

Agregue este código al final de la función main:

// Get blob content from position 0 to the end
// In Node.js, get downloaded data by accessing downloadBlockBlobResponse.readableStreamBody
// In browsers, get downloaded data by accessing downloadBlockBlobResponse.blobBody
const downloadBlockBlobResponse = await blockBlobClient.download(0);
console.log('\nDownloaded blob content...');
console.log('\t', await streamToString(downloadBlockBlobResponse.readableStreamBody));

Agregue esta función auxiliar después de la función main:

// A helper function used to read a Node.js readable stream into a string
async function streamToString(readableStream) {
  return new Promise((resolve, reject) => {
    const chunks = [];
    readableStream.on("data", (data) => {
      chunks.push(data.toString());
    });
    readableStream.on("end", () => {
      resolve(chunks.join(""));
    });
    readableStream.on("error", reject);
  });
}

Eliminación de un contenedor

El código siguiente limpia los recursos que creó la aplicación; para ello, quita todo el contenedor con el método delete. Si lo desea, también puede eliminar los archivos locales.

Agregue este código al final de la función main:

console.log('\nDeleting container...');

// Delete container
const deleteContainerResponse = await containerClient.delete();
console.log("Container was deleted successfully. requestId: ", deleteContainerResponse.requestId);

Ejecución del código

Esta aplicación crea una cadena de texto y la carga en Blob Storage. A continuación, en el ejemplo se enumeran los blobs del contenedor, se descarga el blob y se muestran los datos descargados.

Desde un símbolo del sistema de la consola, navegue hasta el directorio que contiene el archivo blob-quickstart-v12.js y, después, ejecute el siguiente comando de node para ejecutar la aplicación.

node blob-quickstart-v12.js

La salida de la aplicación es similar a la del ejemplo siguiente:

Azure Blob storage v12 - JavaScript quickstart sample

Creating container...
         quickstart4a0780c0-fb72-11e9-b7b9-b387d3c488da

Uploading to Azure Storage as blob:
         quickstart4a3128d0-fb72-11e9-b7b9-b387d3c488da.txt

Listing blobs...
         quickstart4a3128d0-fb72-11e9-b7b9-b387d3c488da.txt

Downloaded blob content...
         Hello, World!

Deleting container...
Done

Recorra el código en el depurador y compruebe Azure Portal a lo largo del proceso. Consulte para ver si el contenedor se está creando. Puede abrir el blob dentro del contenedor y ver el contenido.

Pasos siguientes

En esta guía de inicio rápido, ha aprendido a cargar, descargar y enumerar blobs mediante JavaScript.

Para ver tutoriales, ejemplos, artículos de inicio rápido y otra documentación, visite: