Archiviare dati non strutturati usando Funzioni di Azure e Azure Cosmos DB

Azure Cosmos DB offre un approccio ottimale per archiviare dati non strutturati e JSON. In combinazione con Funzioni di Azure, Azure Cosmos DB semplifica l'archiviazione dei dati con molto meno codice rispetto a quanto necessario per l'archiviazione dei dati in un database relazionale.

Nota

Al momento, il trigger e le associazioni di input e output di Azure Cosmos DB funzionano solo con gli account API SQL e API Graph.

In Funzioni di Azure, i binding di input e di output forniscono una modalità dichiarativa per connettersi a dati di servizio esterni dalla funzione. Questo articolo illustra come aggiornare una funzione esistente per l'aggiunta di un binding di output che archivia dati non strutturati in un documento di Azure Cosmos DB.

Prerequisiti

Per completare questa esercitazione:

Questo argomento usa per iniziare le risorse create in Creare la prima funzione nel portale di Azure. Se queste procedure non sono state ancora completate, completarle ora per creare l'app per le funzioni.

Creare un account Azure Cosmos DB

Prima di creare il binding di output è necessario un account Azure Cosmos DB che usa l'API SQL.

  1. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.

  2. Cercare Azure Cosmos DB. Selezionare Crea>Azure Cosmos DB.

  3. Nella pagina Creare un account Azure Cosmos DB, selezionare l'opzione Crea all'interno della sezione Azure Cosmos DB for NoSQL.

    Azure Cosmos DB offre diverse API:

    • NoSQL, per i dati del documento
    • PostgreSQL
    • MongoDB, per i dati del documento
    • Apache Cassandra
    • Tabella
    • Apache Gremlin, per i dati del grafo

    Per ulteriori informazioni sulla API per NoSQL, vedere Introduzione ad Azure Cosmos DB.

  4. Nella pagina Crea account Azure Cosmos DB, immettere le impostazioni base per il nuovo account Azure Cosmos DB.

    Impostazione valore Descrizione
    Abbonamento Nome della sottoscrizione Selezionare la sottoscrizione di Azure da usare per l'account Azure Cosmos DB.
    Gruppo di risorse Nome gruppo di risorse Selezionare un gruppo di risorse oppure fare clic su Crea nuovo, quindi immettere un nome univoco per il nuovo gruppo di risorse.
    Nome conto Un nome univoco Immettere un nome per identificare l'account Azure Cosmos DB. Dato che al nome specificato viene aggiunto documents.azure.com per creare l'URI, usare un nome univoco. Il nome può contenere solo lettere minuscole, numeri e il trattino (-). Deve essere di 3-44 caratteri.
    Ufficio Area più vicina ai propri utenti Selezionare una posizione geografica in cui ospitare l'account Azure Cosmos DB. Usare la località più vicina agli utenti per offrire loro la massima velocità di accesso ai dati.
    Modalità di capacità Velocità effettiva con provisioning o Serverless Selezionare Provisioning velocità effettiva per creare un account in modalità Provisioning velocità effettiva. Selezionare Serverless per creare un account in modalità Serverless.
    Applicare lo sconto del livello gratuito di Azure Cosmos DB Applicare o non applicare Il livello gratuito di Azure Cosmos DB offre i primi 1000 UR/sec e 25 GB di spazio di archiviazione gratuiti per account. Altre informazioni sul livello gratuito.
    Limitare la velocità effettiva totale dell'account Selezionato o non selezionato È possibile limitare la misura totale di velocità effettiva di provisioning in questo account. Questo limite impedisce addebiti imprevisti correlati alla velocità effettiva con provisioning. È possibile aggiornare o rimuovere questo limite dopo la creazione dell'account.

    È possibile avere al massimo un account Azure Cosmos DB di livello gratuito per ogni sottoscrizione di Azure ed è necessario acconsentire esplicitamente durante la creazione dell'account. Se l'opzione di applicare lo sconto per il livello gratuito non è visualizzata, significa che un altro account nella sottoscrizione è già stato abilitato per il livello gratuito.

    Screenshot che mostra la pagina Crea account Azure Cosmos DB.

    Nota

    Le opzioni seguenti non sono disponibili se si seleziona Serverless come modalità di capacità:

    • Applica sconto livello gratuito
    • Limitare la velocità effettiva totale dell'account
  5. Nella scheda Distribuzione globale configurare i dettagli seguenti. Per questo avvio rapido è possibile lasciare i valori predefiniti:

    Impostazione valore Descrizione
    Ridondanza geografica Disabilita Abilitare o disabilitare la distribuzione globale nell'account associando la propria area a un'altra area. È possibile aggiungere altre aree al proprio account in un secondo momento.
    Scritture in più aree Disabilita La funzionalità Scritture in più aree consente di sfruttare la velocità effettiva di cui è stato effettuato il provisioning per i database e i contenitori in tutto il mondo.
    Zone di disponibilità Disabilita Le zone di disponibilità consentono di migliorare ulteriormente la disponibilità e la resilienza dell'applicazione.

    Nota

    Le seguenti opzioni non sono disponibili se si seleziona Serverless come modalità di capacità nella pagina precedente Basic:

    • Ridondanza geografica
    • Scritture in più aree
  6. Facoltativamente, è possibile configurare altri dettagli nelle schede seguenti:

    • Reti. Configurare accesso da una rete virtuale.
    • Criteri di backup. Configurare criteri di backup periodici o continui.
    • Crittografia. Usare una chiave gestita dal servizio o una chiave gestita dal cliente.
    • Tag. I tag sono coppie nome-valore che consentono di classificare le risorse e visualizzare dati di fatturazione consolidati tramite l'applicazione dello stesso tag a più risorse e gruppi di risorse.
  7. Selezionare Rivedi e crea.

  8. Esaminare le impostazioni dell'account e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale visualizzi La distribuzione è stata completata.

    Screenshot che mostra che la distribuzione è stata completata.

  9. Selezionare Vai alla risorsa per passare alla pagina dell'account Azure Cosmos DB.

    Screenshot che mostra la pagina dell'account Azure Cosmos DB.

Aggiungere un binding di output

  1. Nel portale di Azure passare all'app per le funzioni creata in precedenza e selezionarla.

  2. Selezionare Funzioni e quindi selezionare la funzione HttpTrigger.

    Selezionare la funzione HTTP nel portale di Azure.

  3. Selezionare Integrazione e + Aggiungi output.

    Aggiungere un binding di output di Azure Cosmos DB.

  4. Usare le impostazioni di Crea output come specificato nella tabella:

    Configurare il binding di output di Azure Cosmos DB.

    Impostazione Valore suggerito Descrizione
    Tipo di binding Azure Cosmos DB Nome del tipo di binding da selezionare per creare il binding di output per Azure Cosmos DB.
    Nome del parametro del documento taskDocument Nome che fa riferimento all'oggetto Azure Cosmos DB nel codice.
    Nome database taskDatabase Nome del database per il salvataggio dei documenti.
    Nome raccolta taskCollection Nome della raccolta di database.
    Se true, crea il database e la raccolta di Azure Cosmos DB La raccolta non esiste ancora, quindi crearla.
    Connessione all'account Azure Cosmos DB Nuova impostazione Selezionare Nuovo, scegliere Account Azure Cosmos DB e l'account di database creato in precedenza, quindi selezionare OK. Viene creata un'impostazione applicazione per la connessione all'account. Questa impostazione viene usata dal binding per la connessione al database.
  5. Selezionare OK per creare il binding.

Aggiornare il codice funzione

Sostituire il codice della funzione esistente con quello seguente nel linguaggio scelto:

Sostituire la funzione C# esistente con il codice seguente:

#r "Newtonsoft.Json"

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
    string name = req.Query["name"];
    string task = req.Query["task"];
    string duedate = req.Query["duedate"];

    // We need both name and task parameters.
    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
    {
        taskDocument = new
        {
            name,
            duedate,
            task
        };

        return (ActionResult)new OkResult();
    }
    else
    {
        taskDocument = null;
        return (ActionResult)new BadRequestResult();
    }
}

Questo esempio di codice legge le stringhe della query di richiesta HTTP e le assegna ai campi dell'oggetto taskDocument. Il binding taskDocument invia i dati dell'oggetto di questo parametro di binding per l'archiviazione nel database di documenti associato. Il database viene creato alla prima esecuzione della funzione.

Testare la funzione e il database

  1. Selezionare Test/Esegui. In Query selezionare + Aggiungi parametro e aggiungere i parametri seguenti alla stringa di query:

    • name
    • task
    • duedate

    Testare la funzione.

  2. Selezionare Esegui e verificare che venga restituito uno stato 200.

    Screenshot dello stato 200 del codice di risposta HTTP evidenziato dopo la selezione di Esegui.

  3. Nel portale di Azure cercare e selezionare Azure Cosmos DB.

    Cercare il servizio Azure Cosmos DB.

  4. Scegliere l'account Azure Cosmos DB, quindi selezionare Esplora dati.

  5. Espandere i nodi TaskCollection, selezionare il nuovo documento e verificare che contenga i valori della stringa di query, oltre ad alcuni metadati aggiuntivi.

    Verificare i valori di stringa nel documento.

È stata aggiunta correttamente un'associazione al trigger HTTP per archiviare dati non strutturati in un'istanza di Azure Cosmos DB.

Pulire le risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.

Nel menu del portale di Azure o nella pagina Home selezionare Gruppi di risorse. Quindi, nella pagina Gruppi di risorse selezionare myResourceGroup.

Nella pagina myResourceGroup assicurarsi che le risorse elencate siano quelle da eliminare.

Selezionare Elimina gruppo di risorse, digitare myResourceGroup nella casella di testo per confermare e quindi selezionare Elimina.

Passaggi successivi

Per altre informazioni sull'associazione a un'istanza di Azure Cosmos DB, vedere Funzioni di Azure associazioni di Azure Cosmos DB.