Passaggio 2 dell'esercitazione: Automatizzare il ridimensionamento delle immagini caricate usando Griglia di eventi

Questa esercitazione estende l'esercitazione Caricare dati immagine nel cloud con Archiviazione di Azure per aggiungere la generazione automatica di anteprime serverless usando Griglia di eventi di Azure e Funzioni di Azure. Ecco il flusso di lavoro generale:

In questa esercitazione vengono completati i passaggi seguenti:

  • Creare un account di archiviazione di Azure
  • Creare, configurare e distribuire un'app per le funzioni
  • Creare una sottoscrizione di eventi agli eventi di archiviazione
  • Testare l'app di esempio

Prerequisiti

Per completare questa esercitazione:

Creare un account di Archiviazione di Azure

Per Funzioni di Azure è necessario un account di archiviazione generale. Oltre all'account di archiviazione BLOB creato nell'esercitazione precedente, creare un account di archiviazione generale separato nel gruppo di risorse. I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e possono contenere solo numeri e lettere minuscole.

Impostare le variabili in modo che contengano il nome del gruppo di risorse creato nell'esercitazione precedente, il percorso per le risorse da creare e il nome del nuovo account di archiviazione necessario Funzioni di Azure. Creare quindi l'account di archiviazione per la funzione di Azure.

Usare il comando az storage account create .

Nota

Usare i comandi seguenti nella shell Bash del Cloud Shell. Usare l'elenco drop-drown nell'angolo superiore sinistro del Cloud Shell per passare alla shell Bash, se necessario.

Eseguire i comandi seguenti per creare un account di archiviazione di Azure.

functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2  --allow-blob-public-access true

Creare un'app per le funzioni

Per ospitare l'esecuzione della funzione è necessaria un'app per le funzioni. L'app per le funzioni offre un ambiente per l'esecuzione senza server del codice di funzione. Nel comando seguente specificare il proprio nome di app per le funzioni univoco. Poiché verrà usato come dominio DNS predefinito per l'app per le funzioni, è necessario che il app per le funzioni sia univoco tra tutte le app in Azure. Specificare un nome per l'app per le funzioni da creare, quindi creare la funzione di Azure.

Creare un'app per le funzioni usando il comando az functionapp create.

functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4

È ora necessario configurare l'app per le funzioni per la connessione all'account di archiviazione BLOB creato nell'esercitazione precedente.

Configurare l'app per le funzioni

La funzione richiede le credenziali per l'account di archiviazione BLOB, che vengono aggiunte alle impostazioni dell'applicazione dell'app per le funzioni usando il comando az functionapp config appsettings set o Update-AzFunctionAppSetting .

storageConnectionString=$(az storage account show-connection-string --resource-group $rgName --name $blobStorageAccount --query connectionString --output tsv)

az functionapp config appsettings set --name $functionapp --resource-group $rgName --settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2 FUNCTIONS_WORKER_RUNTIME=dotnet

Con l'impostazione FUNCTIONS_EXTENSION_VERSION=~2 l'app per le funzioni viene eseguita nella versione 2.x del runtime di Funzioni di Azure. È ora possibile distribuire un progetto di codice funzione in quest'app per le funzioni.

Distribuire il codice funzione

La funzione di ridimensionamento C# di esempio è disponibile in GitHub. Distribuire il progetto di codice nell'app per le funzioni usando il comando az functionapp deployment source config.

az functionapp deployment source config --name $functionapp --resource-group $rgName --branch master --manual-integration --repo-url https://github.com/Azure-Samples/function-image-upload-resize

La funzione di ridimensionamento delle immagini viene attivata dalle richieste HTTP inviate all'app dal servizio Griglia di eventi. È possibile segnalare al servizio Griglia di eventi che si vogliono ricevere queste notifiche nell'URL della funzione creando una sottoscrizione di eventi. Per questa esercitazione si sottoscrive gli eventi creati da BLOB.

I dati passati alla funzione dalla notifica del servizio Griglia di eventi includono l'URL del BLOB. Tale URL viene a sua volta passato all'associazione di input per ottenere l'immagine caricata dall'archivio BLOB. La funzione genera un'immagine di anteprima e scrive il flusso risultante in un contenitore separato nell'archiviazione BLOB.

Questo progetto usa EventGridTrigger per il tipo di trigger. L'uso del trigger della Griglia di eventi è consigliato rispetto ai trigger HTTP generici. Griglia di eventi convalida automaticamente i trigger di funzioni della Griglia di eventi. Con i trigger HTTP generici è necessario implementare la risposta di convalida.

Per altre informazioni su questa funzione, vedere i file function.json e run.csx.

Il codice del progetto funzione viene distribuito direttamente dal repository pubblico di esempio. Per altre informazioni sulle opzioni di distribuzione per Funzioni di Azure, vedere Distribuzione continua per Funzioni di Azure.

Creare una sottoscrizione di eventi

Una sottoscrizione di eventi indica quali eventi generati dal provider si desidera inviare a un endpoint specifico. In questo caso l'endpoint viene esposto dalla funzione. Seguire questa procedura per creare una sottoscrizione di eventi che invia notifiche alla funzione nel portale di Azure:

  1. Nella portale di Azure, nella parte superiore della pagina cercare e selezionare e scegliere Function App l'app per le funzioni creata. Selezionare Funzioni e scegliere la funzione Anteprima.

    Scegliere la funzione Anteprima nel portale

  2. Selezionare Integrazione, quindi scegliere Trigger griglia di eventi e infine selezionare Crea sottoscrizione di Griglia di eventi.

    Passare ad Aggiungi sottoscrizione di Griglia di eventi nel portale di Azure

  3. Usare le impostazioni della sottoscrizione di eventi specificate nella tabella.

    Creare una sottoscrizione di eventi dalla funzione nel portale di Azure

    Impostazione Valore consigliato Descrizione
    Nome imageresizersub Nome che identifica la nuova sottoscrizione di eventi.
    Tipo di argomento Account di archiviazione Scegliere il provider di eventi Account di archiviazione.
    Sottoscrizione Sottoscrizione di Azure Per impostazione predefinita viene selezionata la sottoscrizione di Azure corrente.
    Gruppo di risorse myResourceGroup Selezionare Usa esistente e scegliere il gruppo di risorse usato in questa esercitazione.
    Risorsa Account di archiviazione BLOB Scegliere l'account di archiviazione BLOB in cui sono archiviate le immagini, non quella usata dall'app per le funzioni di Azure.
    Nome dell'argomento del sistema imagestoragesystopic Consente di specificare un nome per l'argomento di sistema. Per informazioni sugli argomenti di sistema, vedere Panoramica degli argomenti di sistema.
    Tipi di evento Blob created (BLOB creato) Deselezionare tutti i tipi diversi da Blob created (BLOB creato). Solo i tipi di evento Microsoft.Storage.BlobCreated vengono passati alla funzione.
    Tipo di endpoint generato automaticamente Predefinito come funzione di Azure.
    Endpoint generato automaticamente Nome della funzione. In questo caso, è Anteprima.
  4. Passare alla scheda Filtri ed eseguire le azioni seguenti:

    1. Selezionare l'opzione Abilita filtro per l'oggetto.

    2. Per Oggetto inizia con, immettere il valore seguente: /BLOBServices/default/containers/images/.

      Specificare un filtro per la sottoscrizione di eventi

  5. Selezionare Crea per aggiungere la sottoscrizione dell'evento per creare una sottoscrizione evento che attiva la Thumbnail funzione quando viene aggiunto un BLOB al images contenitore. La funzione ridimensiona le immagini e le aggiunge al contenitore thumbnails.

Ora che i servizi back-end sono stati configurati, testare la funzione di ridimensionamento delle immagini nell'applicazione Web di esempio.

Testare l'app di esempio

Per testare il ridimensionamento delle immagini nell'app Web, passare all'URL dell'app pubblicata. L'URL predefinito dell'app Web è https://<web_app>.azurewebsites.net.

Selezionare Carica foto per selezionare e caricare un file. È anche possibile trascinare una foto in quest'area.

Si noti che quando l'immagine caricata scompare, nella sequenza video Generated Thumbnails (Anteprime generate) viene mostrata una copia dell'immagine caricata. Questa immagine è stata ridimensionata dalla funzione, aggiunta al contenitore anteprime e scaricata dal client Web.

Screenshot che mostra un'app Web pubblicata denominata

Passaggi successivi

Vedere altre esercitazioni nella sezione Esercitazioni della tabella del contenuto (TOC).