Archiviare dati non strutturati usando Funzioni di Azure e Azure Cosmos DBStore unstructured data using Azure Functions and Azure Cosmos DB

Azure Cosmos DB offre un approccio ottimale per archiviare dati non strutturati e JSON.Azure Cosmos DB is a great way to store unstructured and JSON data. Insieme a Funzioni di Azure, Cosmos DB semplifica e velocizza l'archiviazione dei dati con una quantità minore di codice rispetto a quella necessaria per l'archiviazione dei dati in un database relazionale.Combined with Azure Functions, Cosmos DB makes storing data quick and easy with much less code than required for storing data in a relational database.

In Funzioni di Azure, i binding di input e di output forniscono una modalità dichiarativa per connettersi a dati di servizio esterni dalla funzione.In Azure Functions, input and output bindings provide a declarative way to connect to external service data from your function. Questo argomento illustra come aggiornare una funzione C# esistente per l'aggiunta di un binding di output che archivia dati non strutturati in un documento di Cosmos DB.In this topic, learn how to update an existing C# function to add an output binding that stores unstructured data in a Cosmos DB document.

Cosmos DB

PrerequisitiPrerequisites

Per completare questa esercitazione:To complete this tutorial:

Questo argomento usa per iniziare le risorse create in Creare la prima funzione nel portale di Azure.This topic uses as its starting point the resources created in Create your first function from the Azure portal. Se queste procedure non sono state ancora completate, completarle ora per creare l'app per le funzioni.If you haven't already done so, please complete these steps now to create your function app.

Aggiungere un binding di outputAdd an output binding

  1. Espandere sia l'app per le funzioni sia la funzione.Expand both your function app and your function.

  2. Selezionare Integrazione e Nuovo output in alto a destra nella pagina.Select Integrate and + New Output, which is at the top right of the page. Scegliere Azure Cosmos DB, quindi fare clic su Seleziona.Choose Azure Cosmos DB, and click Select.

    Aggiungere un binding di output di Cosmos DB

  3. Usare le impostazioni di Azure Cosmos DB output (Output di Azure Cosmos DB) specificate nella tabella:Use the Azure Cosmos DB output settings as specified in the table:

    Configurare il binding di output di Cosmos DB

    ImpostazioneSetting Valore consigliatoSuggested value DescrizioneDescription
    Nome del parametro del documentoDocument parameter name taskDocumenttaskDocument Nome che fa riferimento all'oggetto Cosmos DB nel codice.Name that refers to the Cosmos DB object in code.
    Database name (Nome database)Database name taskDatabasetaskDatabase Nome del database per il salvataggio dei documenti.Name of database to save documents.
    Nome raccoltaCollection name TaskCollectionTaskCollection Nome della raccolta di database.Name of the database collection.
    Se true, crea il database e la raccolta di Cosmos DBIf true, creates the Cosmos DB database and collection SelezionatoChecked La raccolta non esiste ancora, quindi crearla.The collection doesn't already exist, so create it.
  4. Fare clic sul collegamento Nuovo accanto all'etichetta Connessione dell'account Azure Cosmos DB e quindi selezionare + Crea nuovo.Select New next to the Azure Cosmos DB document connection label, and select + Create new.

  5. Usare quindi le impostazioni di Nuovo account specificate nella tabella:Use the New account settings as specified in the table:

    Configurare la connessione di Cosmos DB

    ImpostazioneSetting Valore consigliatoSuggested value DescrizioneDescription
    IDID Nome del databaseName of database ID univoco per il database di Azure Cosmos DBUnique ID for the Azure Cosmos DB database
    APIAPI SQL (DocumentDB)SQL (DocumentDB) Selezionare l'API del database di documenti.Select the document database API.
    SottoscrizioneSubscription Sottoscrizione di AzureAzure Subscription Sottoscrizione di AzureAzure Subscription
    Gruppo di risorseResource Group myResourceGroupmyResourceGroup Usare il gruppo di risorse esistente che contiene l'app per le funzioni.Use the existing resource group that contains your function app.
    PosizioneLocation Europa occidentaleWestEurope Selezionare una località nei pressi dell'app per le funzioni o di altre app che usano i documenti archiviati.Select a location near to either your function app or to other apps that use the stored documents.
  6. Fare clic su OK per creare il database.Click OK to create the database. La creazione del database può richiedere alcuni minuti.It may take a few minutes to create the database. Dopo avere creato il database, la stringa di connessione del database viene archiviata come impostazione dell'app per le funzioni.After the database is created, the database connection string is stored as a function app setting. Il nome di questa impostazione dell'app viene inserito nella connessione dell'account di Azure Cosmos DB.The name of this app setting is inserted in Azure Cosmos DB account connection.

  7. Dopo aver impostato la stringa di connessione, selezionare Salva per creare il binding.After the connection string is set, select Save to create the binding.

Aggiornare il codice funzioneUpdate the function code

Sostituire il codice della funzione C# esistente con il seguente:Replace the existing C# function code with the following code:

using System.Net;

public static HttpResponseMessage Run(HttpRequestMessage req, out object taskDocument, TraceWriter log)
{
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    string task = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "task", true) == 0)
        .Value;

    string duedate = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "duedate", true) == 0)
        .Value;

    taskDocument = new {
        name = name,
        duedate = duedate.ToString(),
        task = task
    };

    if (name != "" && task != "") {
        return req.CreateResponse(HttpStatusCode.OK);
    }
    else {
        return req.CreateResponse(HttpStatusCode.BadRequest);
    }
}

Questo esempio di codice legge le stringhe della query di richiesta HTTP e le assegna ai campi dell'oggetto taskDocument.This code sample reads the HTTP Request query strings and assigns them to fields in the taskDocument object. Il binding taskDocument invia i dati dell'oggetto di questo parametro di binding per l'archiviazione nel database di documenti associato.The taskDocument binding sends the object data from this binding parameter to be stored in the bound document database. Il database viene creato alla prima esecuzione della funzione.The database is created the first time the function runs.

Testare la funzione e il databaseTest the function and database

  1. Espandere la finestra di destra e selezionare Test.Expand the right window and select Test. In Query fare clic su Aggiungi parametro e aggiungere i parametri seguenti per la stringa di query:Under Query, click + Add parameter and add the following parameters to the query string:

    • name
    • task
    • duedate
  2. Fare clic su Esegui e verificare che venga restituito uno stato 200.Click Run and verify that a 200 status is returned.

    Configurare il binding di output di Cosmos DB

  3. Sul lato sinistro del portale di Azure espandere la barra delle icone, digitare cosmos nel campo di ricerca e selezionare Azure Cosmos DB.On the left side of the Azure portal, expand the icon bar, type cosmos in the search field, and select Azure Cosmos DB.

    Cercare il servizio Cosmos DB

  4. Scegliere l'account di Azure Cosmos DB, quindi selezionare Esplora dati.Choose your Azure Cosmos DB account, then select the Data Explorer.

  5. Espandere i nodi Raccolte, selezionare il nuovo documento e verificare che il documento contenga i valori della stringa di query, oltre ad alcuni metadati aggiuntivi.Expand the Collections nodes, select the new document, and confirm that the document contains your query string values, along with some additional metadata.

    Verificare la voce di Cosmos DB

È stato aggiunto un binding al trigger HTTP che archivia dati non strutturati in Azure Cosmos DB.You have successfully added a binding to your HTTP trigger that stores unstructured data in a Azure Cosmos DB.

Pulire le risorseClean up resources

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse.In the preceding steps, you created Azure resources in a resource group. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.If you don't expect to need these resources in the future, you can delete them by deleting the resource group.

Dal menu a sinistra nel portale di Azure scegliere Gruppi di risorse e quindi selezionare myResourceGroup.From the left menu in the Azure portal, select Resource groups and then select myResourceGroup.

Nella pagina del gruppo di risorse assicurarsi che le risorse elencate siano quelle da eliminare.On the resource group page, make sure that the listed resources are the ones you want to delete.

Selezionare Elimina, digitare myResourceGroup nella casella di testo e quindi selezionare Elimina.Select Delete, type myResourceGroup in the text box, and then select Delete.

Passaggi successiviNext steps

Informazioni su come creare funzioni con altri tipi di trigger o come integrare funzioni con altri servizi di Azure.Learn how to create functions with other kinds of triggers or how to integrate functions with other Azure services.

Per altre informazioni sul binding a un database Cosmos DB, vedere Binding di Azure Cosmos DB in Funzioni di Azure.For more information about binding to a Cosmos DB database, see Azure Functions Cosmos DB bindings.