Ejercicio: Adición de la configuración de Azure Storage a la aplicación

Completado

Vamos a agregar compatibilidad a la aplicación de .NET Core para recuperar una cadena de conexión de un archivo de configuración. Para empezar se agregarán los mecanismos necesarios para administrar la configuración en un archivo JSON.

Creación de un archivo de configuración JSON

  1. Cambie el directorio al directorio PhotoSharingApp, si todavía no está ahí:

    cd PhotoSharingApp
    
  2. Escriba el siguiente comando para usar la herramienta touch para crear un archivo denominado appsettings.json:

    touch appsettings.json
    
  3. Abra el proyecto en un editor. Si trabaja en el entorno local, puede usar el editor que prefiera. Se recomienda Visual Studio Code, que es un IDE multiplataforma extensible. Si trabaja en Azure Cloud Shell (a la derecha), se recomienda usar el editor de Cloud Shell. Use el comando siguiente para abrir el editor en cualquier entorno:

    code .
    
  4. En el editor, seleccione el archivo appsettings.json y agregue el texto siguiente:

    {
        "ConnectionStrings": {
            "StorageAccount": "<value>"
        }
    }
    
  5. Guarde el archivo mediante el método abreviado de teclado (Ctrl+S) o seleccione Guardar en el menú contextual (seleccione el icono de puntos suspensivos ... en la barra de título del editor).

  6. Ahora, es necesario usar un comando de Azure para obtener la cadena de conexión de la cuenta de almacenamiento real. En la sesión de Cloud Shell, pegue el comando siguiente y reemplace <name> por el nombre único de la cuenta de almacenamiento que ha creado en el ejercicio anterior. Después, presione Entrar para ejecutar el comando:

    az storage account show-connection-string \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --query connectionString \
      --name <name>
    
  7. La respuesta contiene la cadena de conexión delimitada por comillas, la cual es muy similar al ejemplo siguiente:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage1ab;AccountKey=QtSCGB...7AeoW0Hw=="
    
  8. Copie la cadena de conexión y, en el archivo appsettings.json del editor, reemplace el marcador de posición <value> por esta cadena de conexión.

  9. Presione Ctrl+S para guardar el archivo.

  10. Abra el archivo del proyecto PhotoSharingApp.csproj en el editor.

  11. Copie y pegue el siguiente bloque de configuración debajo del bloque <ItemGroup> existente.

    <ItemGroup>
        <None Update="appsettings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
    
  12. Presione Ctrl+S para guardar el archivo. (Debe guardar este archivo o perderá los cambios cuando agregue el paquete siguiente).

Compatibilidad para leer un archivo de configuración JSON

En la consola de Cloud Shell, copie y ejecute el código siguiente para agregar una referencia al paquete NuGet Microsoft.Extensions.Configuration.Json:

dotnet add package Microsoft.Extensions.Configuration.Json

Incorporación de código para leer el archivo de configuración

Ahora que ha agregado las bibliotecas necesarias para habilitar la lectura de la configuración, debe habilitar esa funcionalidad en la aplicación de consola.

  1. En el editor, seleccione Program.cs.

  2. En la parte superior del archivo, aparece una línea de código comentada. Elimine esa línea y agregue las líneas de código siguientes en la parte superior del archivo:

    using System;    
    using Microsoft.Extensions.Configuration;
    using System.IO;
    
  3. Reemplace el contenido del método Main (la línea que contiene "Hola mundo") por el código siguiente:

    namespace PhotoSharingApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json");
    
                var configuration = builder.Build();
            }
        }
    }
    

    Este código inicializa el sistema de configuración para leer desde el archivo appsettings.json.

    El archivo Program.cs ahora debería tener un aspecto similar al siguiente:

    using System;
    using Microsoft.Extensions.Configuration;
    using System.IO;
    
    namespace PhotoSharingApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json");
    
                var configuration = builder.Build();
            }
        }
    }
    
  4. Guarde el archivo.

Vamos a agregar compatibilidad a nuestra aplicación de Node.js para recuperar una cadena de conexión de un archivo de configuración. Para empezar, se agregarán los mecanismos necesarios para administrar una configuración desde el archivo JavaScript.

Creación de un archivo de configuración .env

  1. En la sesión de Azure Cloud Shell, escriba el siguiente comando para asegurarse de que se encuentra en el directorio de trabajo correcto para el proyecto.

    cd PhotoSharingApp 
    
  2. Escriba el siguiente comando para crear un archivo denominado .env:

    touch .env
    
  3. Abra el proyecto en el editor de Cloud Shell:

    code .
    
  4. Seleccione el archivo .env en el editor y agregue el texto siguiente.

    Nota:

    Debe seleccionar el botón Actualizar del código para ver los archivos nuevos.

    AZURE_STORAGE_CONNECTION_STRING=<value>
    

    Sugerencia

    AZURE_STORAGE_CONNECTION_STRING es una variable de entorno codificada de forma rígida que se usa en las API de Storage para buscar claves de acceso.

  5. Guarde el archivo mediante el método abreviado de teclado (Ctrl+S) o seleccione el icono de puntos suspensivos (...) en la barra de título del editor y, después, seleccione Guardar en el menú contextual.

  6. Ahora, es necesario usar un comando de Azure para obtener la cadena de conexión de la cuenta de almacenamiento real. En la sesión de Cloud Shell, ejecute el comando siguiente, y reemplace <name> por el nombre de la cuenta de almacenamiento que ha creado en el ejercicio anterior.

    az storage account show-connection-string \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --query connectionString \
      --name <name>
    
  7. La respuesta es una cadena de conexión delimitada por comillas, muy similar al ejemplo siguiente:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage1ab;AccountKey=QtSCGB...7AeoW0Hw=="  
    
  8. Copie la cadena de conexión y reemplace <value> en el archivo .env por esta cadena de conexión.

  9. Presione Ctrl+S para guardar el archivo.

Incorporación de compatibilidad para leer un archivo de configuración de entorno

Las aplicaciones de Node.js pueden incluir compatibilidad para leer el archivo .env si se agrega el paquete dotenv.

  1. En la sesión de Cloud Shell, ejecute el comando siguiente para agregar una dependencia al paquete dotenv mediante npm:

    npm install dotenv --save
    

Incorporación de código para leer el archivo de configuración

Ahora que ha agregado las bibliotecas necesarias para habilitar la lectura de la configuración, debe permitir esa funcionalidad en la aplicación.

  1. En el editor, abra el archivo index.js.

  2. En la parte superior del archivo, aparece una línea de código #!/usr/bin/env node. Debajo de esa línea, agregue las líneas de código siguientes:

    require('dotenv').config();
    
  3. Presione Ctrl+S para guardar el archivo.

Ahora que tenemos listo el archivo de configuración JSON, podemos empezar a incorporar código para usar la cuenta de almacenamiento.