Esercizio - Aggiungere la configurazione dell'Archiviazione di Azure all'app

Completato

Si procederà ad aggiungere all'applicazione .NET Core il supporto per recuperare una stringa di connessione da un file di configurazione. Per iniziare si aggiungeranno i componenti di base necessari per gestire la configurazione in un file JSON.

Creare un file di configurazione JSON

  1. Passare alla directory PhotoSharingApp, se ci si trova in un'altra directory:

    cd PhotoSharingApp
    
  2. Immettere il comando seguente per usare lo strumento touch per creare un file denominato appsettings.json:

    touch appsettings.json
    
  3. Aprire il progetto in un editor. Se si lavora in locale, è possibile usare l'editor preferito. È consigliabile usare Visual Studio Code, un IDE multipiattaforma estendibile. Se si lavora in Azure Cloud Shell (sulla destra), è consigliabile usare l'editor di Cloud Shell. Usare il comando seguente per aprire l'editor in entrambi gli ambienti:

    code .
    
  4. Nell'editor, selezionare il file appsettings.json e aggiungere il testo seguente:

    {
        "ConnectionStrings": {
            "StorageAccount": "<value>"
        }
    }
    
  5. Salvare il file usando i tasti di scelta rapida (CTRL+S) oppure selezionare Salva dal menu contestuale (selezionare l'icona con i puntini di sospensione ... nella barra del titolo dell'editor).

  6. È ora necessario usare un comando di Azure per ottenere la stringa di connessione effettiva dell'account di archiviazione. Nella sessione di Cloud Shell, incollare il comando seguente, sostituendo <name> con il nome univoco dell'account di archiviazione creato nell'esercizio precedente e quindi premere INVIO per eseguire il comando:

    az storage account show-connection-string \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --query connectionString \
      --name <name>
    
  7. La risposta contiene la stringa di connessione delimitata da virgolette, simile all'esempio seguente:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage1ab;AccountKey=QtSCGB...7AeoW0Hw=="
    
  8. Copiare la stringa di connessione e quindi, nel file appsettings.json nell'editor, sostituire il segnaposto <value> con questa stringa di connessione.

  9. Premere CTRL+S per salvare il file.

  10. Nell'editor, aprire il file di progetto PhotoSharingApp.csproj.

  11. Copiare e incollare il blocco di configurazione seguente sotto il blocco <ItemGroup> esistente.

    <ItemGroup>
        <None Update="appsettings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
    
  12. Premere CTRL+S per salvare il file. È necessario salvare questo file. In caso contrario, le modifiche andranno perse quando si aggiungerà il pacchetto successivo.

Aggiungere il supporto per la lettura di un file di configurazione JSON

Nella console di Cloud Shell, copiare ed eseguire il codice seguente per aggiungere un riferimento al pacchetto NuGet Microsoft.Extensions.Configuration.Json:

dotnet add package Microsoft.Extensions.Configuration.Json

Aggiungere codice per la lettura del file di configurazione

Ora che sono state aggiunte le librerie necessarie per permettere la lettura della configurazione, è necessario abilitare questa funzionalità nell'applicazione console.

  1. Selezionare Program.cs nell'editor.

  2. Nella parte superiore del file è presente una riga di codice commentata. Eliminare la riga e aggiungere le righe di codice seguenti all'inizio del file:

    using System;    
    using Microsoft.Extensions.Configuration;
    using System.IO;
    
  3. Sostituire il contenuto del metodo Main (la riga che contiene "Hello World!") con il codice seguente:

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

    Questo codice inizializza il sistema di configurazione per la lettura dal file appsettings.json.

    Il file Program.cs ora avrà questo aspetto:

    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. Salva il file.

Si procederà ad aggiungere all'applicazione Node.js il supporto per recuperare una stringa di connessione da un file di configurazione. Per iniziare si aggiungeranno i componenti di base necessari per gestire una configurazione dal file JavaScript.

Creare un file di configurazione con estensione env

  1. Nella sessione di Azure Cloud Shell immettere il comando seguente per assicurarsi di usare la directory di lavoro corretta per il progetto.

    cd PhotoSharingApp 
    
  2. Immettere il comando seguente per creare un file denominato .env:

    touch .env
    
  3. Aprire il progetto nell'editor di Cloud Shell:

    code .
    
  4. Nell'editor, selezionare il file con estensione .env e aggiungere il testo seguente.

    Nota

    Può essere necessario selezionare il pulsante di aggiornamento nel codice per visualizzare i nuovi file.

    AZURE_STORAGE_CONNECTION_STRING=<value>
    

    Suggerimento

    Il valore AZURE_STORAGE_CONNECTION_STRING è una variabile di ambiente hardcoded usata dalle API di Archiviazione per cercare le chiavi di accesso.

  5. Salvare il file usando i tasti di scelta rapida (CTRL+S) oppure selezionare l'icona con i puntini di sospensione ... nella barra del titolo dell'editor e quindi selezionare Salva dal menu contestuale.

  6. È ora necessario usare un comando di Azure per ottenere la stringa di connessione effettiva dell'account di archiviazione. Nella sessione di Cloud Shell eseguire il comando seguente, sostituendo <name> con il nome dell'account di archiviazione creato nell'esercizio precedente.

    az storage account show-connection-string \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --query connectionString \
      --name <name>
    
  7. La risposta è costituita dalla stringa di connessione delimitata da virgolette, simile all'esempio seguente:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage1ab;AccountKey=QtSCGB...7AeoW0Hw=="  
    
  8. Copiare la stringa di connessione e quindi, sostituire <value> nel file con estensione .env con questa stringa di connessione.

  9. Premere CTRL+S per salvare il file.

Aggiungere il supporto per la lettura di un file di configurazione dell'ambiente

Per includere nelle app Node.js il supporto per la lettura del file con estensione env, è possibile aggiungere il pacchetto dotenv.

  1. Nella sessione di Cloud Shell, eseguire il comando seguente per aggiungere una dipendenza al pacchetto dotenv usando npm:

    npm install dotenv --save
    

Aggiungere codice per la lettura del file di configurazione

Ora che sono state aggiunte le librerie necessarie per consentire la lettura della configurazione, è necessario abilitare questa funzionalità nell'applicazione.

  1. Nell'editor aprire il file index.js.

  2. Nella parte superiore del file è presente una riga di codice #!/usr/bin/env node. Al di sotto di questa riga aggiungere la riga di codice seguente:

    require('dotenv').config();
    
  3. Premere CTRL+S per salvare il file.

Ora che la configurazione JSON è pronta, si può iniziare ad aggiungere codice per usare l'account di archiviazione.