Ejercicio: Conexión de la aplicación a la cuenta de Azure Storage

Completado

La biblioteca cliente de Azure Storage proporciona un modelo de objetos que se usa para interactuar con las cuentas de almacenamiento de Azure. Se usa para conectarse rápidamente a una cuenta de Azure Storage y usar las API del servicio Azure Storage.

Modelo de objetos de biblioteca cliente de Azure Storage

Una cuenta de almacenamiento de Azure se organiza en uno o varios contenedores que almacenan los objetos de blob (archivos) reales en la cuenta. Estos contenedores son similares a las carpetas de un sistema de archivos. Se puede usar la biblioteca cliente de Azure Storage Blobs para .NET a fin de crear un contenedor en la cuenta de almacenamiento donde almacenar las fotografías.

Para usar la biblioteca cliente de Azure Storage Blobs para .NET en el programa, debe agregar una instrucción using en la parte superior del programa para el espacio de nombres Azure.Storage.Blobs.

  1. Agregue el siguiente comando a Program.cs.

    using Azure.Storage.Blobs;
    

    Para crear y administrar contenedores en la cuenta de almacenamiento desde la aplicación de .NET, se usa un objeto BlobContainerClient. Para crear una instancia de un objeto BlobContainerClient, debe proporcionar la cadena de conexión a la cuenta de almacenamiento y el nombre del contenedor. El nombre del contenedor debe tener entre 3 y 63 caracteres de longitud, y solo puede contener letras en minúsculas y el carácter de guion (-). Para esta aplicación, se usará el nombre photos.

  2. Agregue el código siguiente a la sección Main de la aplicación para obtener la cadena de conexión de Azure Storage y crear el objeto BlobContainerClient.

    var connectionString = configuration.GetConnectionString("StorageAccount");
    string containerName = "photos";
    
    BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
    

    Nota:

    En este momento, la biblioteca cliente no ha intentado conectarse a Azure ni validar la cadena de conexión y la clave de acceso que se usan. Simplemente ha creado un objeto cliente ligero que se usa para realizar operaciones en Azure Blob Storage. Solo se realizará una llamada de red cuando se invoque una operación en la cuenta de almacenamiento.

  3. Justo debajo de las líneas anteriores, agregue código para crear el contenedor photos, donde se almacenarán las imágenes.

    container.CreateIfNotExists();
    
  4. Guarde el archivo.

  5. Ejecute la aplicación para que cree el contenedor en la cuenta de almacenamiento. Como se ha usado el método CreateIfNotExists, puede ejecutar el programa varias veces, pero el contenedor solo se creará en la primera ejecución.

    dotnet run
    
  6. Para comprobar que ha creado el contenedor, ejecute el comando siguiente de la CLI de Azure. No olvide reemplazar <name> por el nombre de la cuenta de almacenamiento.

    az storage container list \
    --account-name <name>
    

La biblioteca cliente de Azure Storage Blob para JavaScript contiene muchos objetos de cliente para interactuar con Azure Storage Blobs. En la parte superior de esta jerarquía se encuentra el objeto BlobServiceClient. Para usar este objeto en el código de JavaScript:

  1. Abra el archivo index.js en el editor de código y agregue la siguiente instrucción inmediatamente después de la instrucción require('dotenv').config();:

    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. Ahora tiene que crear un objeto BlobServiceClient en el código mediante la obtención de la cadena de conexión de la cuenta de almacenamiento, que debe pasar al Factory Method fromConnectionString del objeto BlobServiceClient. Agregue las siguientes líneas de código:

    const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
    const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
    

    Nota:

    La biblioteca cliente no intentará conectarse a Azure hasta que se invoque una operación en la que se necesite. El objeto cliente es un objeto ligero que habilita el acceso a Azure Blob Storage; no valida la conexión ni la clave de acceso que se usan.

  3. Una vez que haya definido el objeto cliente en el programa, puede usar sus métodos para realizar el trabajo real. Los métodos que realizan llamadas de red son asincrónicos a propósito. La biblioteca usa promesas para devolver resultados asincrónicos. Por ese motivo, debe marcar la función main como asincrónica. Reemplace el objeto de función main por el código siguiente. La línea que comienza con dos barras diagonales es un comentario.

    async function main() {
     // Function code here
    }
    
  4. Guarde los cambios en index.js.

    Ahora se agregará código para ejecutar una operación en la cuenta de almacenamiento. Una cuenta de almacenamiento se organiza en uno o varios contenedores, que actúan como carpetas en la cuenta de almacenamiento. Los objetos de blob (archivos) que se crean en la cuenta de almacenamiento se almacenan en uno de estos contenedores. Tendrá que crear un contenedor en la cuenta de almacenamiento para almacenar las fotos.

    El nombre del contenedor debe tener entre 3 y 63 caracteres de longitud, y solo puede contener letras en minúsculas y el carácter de guion (-). Para esta aplicación, se usará el nombre photos.

    Para crear un contenedor en la cuenta de almacenamiento, debe obtener un objeto ContainerClient que represente el contenedor en la cuenta de almacenamiento. Aunque todavía no existe un contenedor en la cuenta de almacenamiento, se puede usar ContainerClient para crearlo y administrarlo una vez que se haya creado.

  5. Para obtener el objeto ContainerClient, llame al método getContainerClient en el objeto BlobServiceClient y proporcione el nombre del contenedor como parámetro. Después, para crear el contenedor en la cuenta de Azure Storage, use el método createIfNotExists en el objeto containerClient. Reemplace la línea de comentario // Function Code here por estas instrucciones:

    // Create a container (folder) if it does not exist
    const containerName = 'photos';
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const containerExists = await containerClient.exists()
    if ( !containerExists) {
        const createContainerResponse = await containerClient.createIfNotExists();
        console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    else {
        console.log(`Container ${containerName} already exists`);
    }
    
  6. Guarda los cambios en el archivo index.js.

  7. En la línea de comandos de Cloud Shell, escriba el comando siguiente para compilar y ejecutar el programa, que crea el contenedor en la cuenta de almacenamiento:

    node index.js
    

    Sugerencia

    Si se produce un error sobre el uso de la palabra clave await, asegúrese de que ha agregado la palabra clave async a la definición de función main en el último paso de las instrucciones anteriores.

    La primera vez que ejecute el programa, debería ver un mensaje que indica que el contenedor se ha creado correctamente, con un estado de true. La segunda vez (y las siguientes) que ejecute el programa, verá un mensaje similar con un estado de false porque el contenedor ya existe.

  8. Para comprobar que ha creado el contenedor, ejecute el comando siguiente de la CLI de Azure. No olvide reemplazar <name> por el nombre de la cuenta de almacenamiento.

    az storage container list \
    --account-name <name>
    

Ahora que el programa se conecta a la cuenta de Azure Storage y después de haber creado un contenedor photos, el siguiente paso consiste en hacer que el programa cargue una imagen en él.