Connettere funzioni ad Archiviazione di Azure con Visual Studio

La soluzione Funzioni di Azure consente di connettere i servizi di Azure e altre risorse alle funzioni senza la necessità di scrivere codice di integrazione personalizzato. Questi binding, che rappresentano sia input che output, vengono dichiarati all'interno della definizione di funzione. I dati dei binding vengono forniti alla funzione come parametri. Un trigger è un tipo speciale di binding di input. Anche se una funzione include un solo trigger, può avere più binding di input e output. Per altre informazioni, vedere Concetti su trigger e binding di Funzioni di Azure.

Questo articolo illustra come usare Visual Studio per connettere la funzione creata nel precedente argomento di avvio rapido ad Archiviazione di Azure. Il binding di output che si aggiunge a questa funzione scrive i dati della richiesta HTTP in un messaggio della coda di Archiviazione code di Azure.

La maggior parte dei binding richiede una stringa di connessione archiviata che verrà usata da Funzioni per accedere al servizio associato. Per semplicità, usare l'account di archiviazione creato con l'app per le funzioni. La connessione a questo account è già archiviata in un'impostazione dell'app denominata AzureWebJobsStorage.

Prerequisiti

Prima di iniziare questo articolo, è necessario:

Scaricare le impostazioni dell'app per le funzioni

Nel precedente argomento di avvio rapido è stata creata un'app per le funzioni in Azure insieme all'account di archiviazione necessario. La stringa di connessione per questo account è archiviata in modo sicuro nelle impostazioni dell'app in Azure. In questo articolo verranno scritti messaggi in una coda di archiviazione dello stesso account. Per connettersi all'account di archiviazione durante l'esecuzione della funzione in locale, è necessario scaricare le impostazioni dell'app nel file local.settings.json.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.

  2. Nella scheda Pubblica in Hosting espandere i tre puntini (...) e selezionare Gestisci impostazioni del servizio app Azure.

    Modificare le impostazioni dell'applicazione

  3. In AzureWebJobsStorage copiare il valore della stringa Remote in Local e quindi selezionare OK.

Il binding di archiviazione, che usa l'impostazione AzureWebJobsStorage per la connessione, è ora in grado di connettersi a d Archiviazione code durante l'esecuzione in locale.

Registrare le estensioni delle associazioni

Dato che si usa un binding di output di Archiviazione code, è necessario che l'estensione dei binding di archiviazione sia installata prima di eseguire il progetto. Ad eccezione dei trigger HTTP e timer, i binding vengono implementati come pacchetti di estensione.

  1. Nel menu Strumenti selezionare Gestione pacchetti NuGet>Console di Gestione pacchetti.

  2. Nella console eseguire il comando Install-Package seguente per installare le estensioni di archiviazione:

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

Ora è possibile aggiungere il binding di output di archiviazione nel progetto.

Aggiungere un binding di output

In un progetto C# le associazioni vengono definite come attributi di associazione nel metodo della funzione. Definizioni specifiche dipendono dal fatto che l'app venga eseguita in-process (libreria di classi C#) o in un processo di lavoro isolato.

Aprire il file di progetto HttpExample.cs e aggiungere la classe seguente MultiResponse :

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

La MultiResponse classe consente di scrivere in una coda di archiviazione denominata outqueue e in un messaggio HTTP riuscito. È possibile inviare più messaggi alla coda perché l'attributo QueueOutput viene applicato a una matrice di stringhe.

La Connection proprietà imposta il stringa di connessione per l'account di archiviazione. In questo caso, è possibile omettere Connection, perché si usa già l'account di archiviazione predefinito.

Aggiungere il codice che usa l'associazione di output

Una volta definito il binding, è possibile usare il relativo valore name per accedervi come attributo nella firma della funzione. Usando un binding di output, non è necessario usare il codice di Azure Storage SDK per l'autenticazione, per recuperare un riferimento alla coda o per scrivere dati. Queste attività vengono eseguite automaticamente dal runtime di Funzioni e dal binding di output.

Sostituire la classe esistente HttpExample con il codice seguente:

    [Function("HttpExample")]
    public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var logger = executionContext.GetLogger("HttpExample");
        logger.LogInformation("C# HTTP trigger function processed a request.");

        var message = "Welcome to Azure Functions!";

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
        response.WriteString(message);

        // Return a response to both HTTP trigger and storage output binding.
        return new MultiResponse()
        {
            // Write a single message.
            Messages = new string[] { message },
            HttpResponse = response
        };
    }
}

Eseguire la funzione in locale

  1. Per eseguire la funzione, premere F5 in Visual Studio. Può essere necessario abilitare un'eccezione del firewall in modo che gli strumenti possano gestire le richieste HTTP. I livelli di autorizzazione non vengono mai applicati quando si esegue una funzione in locale.

  2. Copiare l'URL della funzione dall'output di runtime di Funzioni di Azure.

    Runtime locale di Azure

  3. Incollare l'URL per la richiesta HTTP nella barra degli indirizzi del browser ed eseguire la richiesta. L'immagine seguente mostra la risposta nel browser alla richiesta GET locale restituita dalla funzione:

    Risposta localhost della funzione nel browser

  4. Per arrestare il debug, premere MAIUSC+F5 in Visual Studio.

Quando il binding di output viene usato per la prima volta, nell'account di archiviazione viene creata dal runtime Funzioni una nuova coda denominata outqueue. Usare Storage Explorer per verificare che siano stati creati la coda e un nuovo messaggio.

Connettere Storage Explorer all'account

Ignorare questa sezione se è già stato installato Archiviazione di Azure Explorer e connesso all'account Azure.

  1. Eseguire lo strumento Azure Storage Explorer, selezionare l'icona della connessione a sinistra, quindi selezionare Aggiungi un account.

    Screenshot di come aggiungere un account Azure a Archiviazione di Microsoft Azure Explorer.

  2. Nella finestra di dialogo Connetti scegliere Aggiungi un account Azure, scegliere l'ambiente di Azure e quindi selezionare Accedi.

    Screenshot della finestra di accesso all'account Azure.

Dopo aver eseguito l'accesso all'account, verranno visualizzate le sottoscrizioni di Azure associate. Scegliere la sottoscrizione e selezionare Apri Esplora risorse.

Esaminare la coda di output

  1. In Storage Explorer espandere il nodo Code e quindi selezionare la coda denominata outqueue.

    La coda contiene il messaggio creato dall'associazione di output della coda quando è stata eseguita la funzione attivata da HTTP. Se la funzione è stata richiamata con il valore predefinito di nameAzure, il messaggio della coda è Name passed to the function: Azure.

    Screenshot del messaggio della coda visualizzato in Archiviazione di Azure Explorer.

  2. Eseguire di nuovo la funzione, inviare un'altra richiesta e visualizzare un nuovo messaggio nella coda.

Ora è il momento di ripubblicare l'app per le funzioni aggiornata in Azure.

Ridistribuire e verificare l'app aggiornata

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica, quindi scegliere Pubblica per ripubblicare il progetto in Azure.

  2. Al termine della distribuzione, è possibile usare di nuovo il browser per testare la funzione ridistribuita. Come prima, aggiungere la stringa di query &name=<yourname> all'URL.

  3. Visualizzare di nuovo il messaggio nella coda di archiviazione per verificare che il binding di output genera anche in questo caso un nuovo messaggio nella coda.

Pulire le risorse

Altre guide di avvio rapido di questa raccolta si basano sulla presente guida di avvio rapido. Se si prevede di continuare a usare le guide di avvio rapido o i servizi creati con questa guida di avvio rapido, non eseguire la pulizia delle risorse.

Il termine risorse in Azure si riferisce ad app per le funzioni, funzioni, account di archiviazione e così via. Le risorse sono raggruppate in gruppi di risorse, ed è possibile eliminare tutti gli elementi in un gruppo eliminando il gruppo.

Per completare queste guide introduttive sono state create risorse. Per tali risorse potrebbero venire addebitati costi, a seconda dello stato dell'account e dei prezzi dei servizi. Se le risorse non sono più necessarie, ecco come eliminarle:

  1. Nel portale di Azure passare alla pagina Gruppo di risorse.

    Per visualizzare tale pagina dalla pagina dell'app per le funzioni, selezionare la scheda Panoramica e quindi selezionare il collegamento sotto Gruppo di risorse.

    Screenshot che mostra la selezione del gruppo di risorse da eliminare dalla pagina dell'app per le funzioni.

    Per visualizzare tale pagina dal dashboard, selezionare Gruppi di risorse e quindi selezionare il gruppo di risorse usato nell’articolo.

  2. Nella pagina Gruppo di risorse esaminare l'elenco delle risorse incluse e verificare che siano quelle da eliminare.

  3. Selezionare Elimina gruppo di risorse e seguire le istruzioni.

    L'eliminazione potrebbe richiedere alcuni minuti. Al termine, viene visualizzata una notifica per pochi secondi. È anche possibile selezionare l'icona a forma di campana nella parte superiore della pagina per visualizzare la notifica.

Passaggi successivi

La funzione di trigger HTTP è stata aggiornata per scrivere dati in una coda di archiviazione. Per altre informazioni sullo sviluppo di funzioni, vedere Sviluppare Funzioni di Azure con Visual Studio.

Quindi, è consigliabile abilitare il monitoraggio di Application Insights per l'app per le funzioni: