Lagra ostrukturerade data i Azure Functions och Azure Cosmos DB
Azure Cosmos DB är ett väldigt bra sätt att lagra ostrukturerade och JSON-data. I kombination med Azure Functions gör Azure Cosmos DB lagring av data snabbt och enkelt med mycket mindre kod än vad som krävs för att lagra data i en relationsdatabas.
Kommentar
Just nu fungerar Azure Cosmos DB-utlösaren, indatabindningar och utdatabindningar endast med SQL API och Graph API-konton.
I Azure Functions kan du använda indata- och utdatabindningar för att ansluta till data i en extern tjänst från din funktion på ett deklarativt sätt. I den här artikeln lär du dig hur du uppdaterar en befintlig funktion för att lägga till en utdatabindning som lagrar ostrukturerade data i ett Azure Cosmos DB-dokument.
Förutsättningar
För att slutföra den här kursen behöver du:
Den här artikeln använder som utgångspunkt de resurser som skapades i Skapa din första funktion i Azure-portalen. Om du inte redan har gjort detta måste du slutföra stegen för att skapa din funktionsapp.
Skapa ett Azure Cosmos DB-konto
Du måste ha ett Azure Cosmos DB-konto som använder SQL API innan du skapar utdatabindningen.
I menyn i Azure-portalen eller på sidan Start väljer du Skapa en resurs.
Sök efter Azure Cosmos DB. Välj Skapa>Azure Cosmos DB.
På sidan Skapa ett Azure Cosmos DB-konto väljer du alternativet Skapa i avsnittet Azure Cosmos DB för NoSQL .
Azure Cosmos DB innehåller flera API:er:
- NoSQL för dokumentdata
- PostgreSQL
- MongoDB, för dokumentdata
- Apache Cassandra
- Register
- Apache Gremlin, för grafdata
Mer information om API:et för NoSQL finns i Välkommen till Azure Cosmos DB.
På sidan Skapa Azure Cosmos DB-konto anger du de grundläggande inställningarna för det nya Azure Cosmos DB-kontot.
Inställning Värde beskrivning Prenumeration Prenumerationsnamn Välj den Azure-prenumeration som du vill använda för det här Azure Cosmos DB-kontot. Resursgrupp Namn på resursgrupp Välj en resursgrupp eller välj Skapa ny och ange sedan ett unikt namn för den nya resursgruppen. Kontonamn Ett unikt namn Ange ett namn för att identifiera ditt Azure Cosmos DB-konto. Eftersomdocuments.azure.com läggs till det namn du anger för att skapa din URI måste du använda ett unikt namn. Namnet får bara innehålla gemener, siffror och bindestreck (-). Det måste vara 3–44 tecken. Plats Den region som är närmast dina användare Välj en geografisk plats som värd för ditt Azure Cosmos DB-konto. Använd den plats som är närmast dina användare för att ge dem så snabb åtkomst till data som möjligt. Kapacitetsläge Etablerat dataflöde eller serverlöst Välj Etablerat dataflöde för att skapa ett konto i etablerat dataflödesläge . Välj Serverlös för att skapa ett konto i serverlöst läge. Tillämpa rabatt på den kostnadsfria Azure Cosmos DB-nivån Tillämpa eller tillämpa inte Med den kostnadsfria Azure Cosmos DB-nivån får du de första 1 000 RU/s och 25 GB lagringsutrymme kostnadsfritt på ett konto. Lär dig mer om kostnadsfri nivå. Begränsa det totala kontots dataflöde Markerad eller inte Begränsa den totala mängden dataflöde som kan etableras för det här kontot. Den här gränsen förhindrar oväntade avgifter relaterade till etablerat dataflöde. Du kan uppdatera eller ta bort den här gränsen när ditt konto har skapats. Du kan ha upp till ett Azure Cosmos DB-konto på en kostnadsfri nivå per Azure-prenumeration och måste anmäla dig när du skapar kontot. Om du inte ser alternativet att tillämpa rabatten på den kostnadsfria nivån har ett annat konto i prenumerationen redan aktiverats med den kostnadsfria nivån.
Kommentar
Följande alternativ är inte tillgängliga om du väljer Serverlös som kapacitetsläge:
- Tillämpa rabatt för kostnadsfri nivå
- Begränsa det totala kontots dataflöde
På fliken Global distribution konfigurerar du följande information. Du kan lämna standardvärdena för den här snabbstarten:
Inställning Värde beskrivning Geo-redundans Inaktivera Aktivera eller inaktivera global distribution på ditt konto genom att para ihop din region med en parregion. Du kan lägga till fler regioner i ditt konto senare. Skrivåtgärder för flera regioner Inaktivera Med skrivfunktioner i flera regioner kan du dra nytta av det etablerade dataflödet för dina databaser och containrar över hela världen. Tillgänglighetszoner Inaktivera Tillgänglighetszoner hjälper dig att ytterligare förbättra programmets tillgänglighet och återhämtning. Kommentar
Följande alternativ är inte tillgängliga om du väljer Serverlös som kapacitetsläge på föregående grundläggande sida:
- Geo-redundans
- Skrivåtgärder för flera regioner
Du kan också konfigurera mer information på följande flikar:
- Nätverk. Konfigurera åtkomst från ett virtuellt nätverk.
- Säkerhetskopieringsprincip. Konfigurera antingen regelbunden eller kontinuerlig säkerhetskopieringsprincip.
- Kryptering. Använd antingen tjänsthanterad nyckel eller en kundhanterad nyckel.
- Taggar. Taggar är namn/värde-par som gör att du kan kategorisera resurser och visa sammanställd faktureringsinformation genom att tillämpa samma tagg på flera resurser och resursgrupper.
Välj Granska + skapa.
Granska kontoinställningarna och välj sedan Skapa. Det tar några minuter att skapa kontot. Vänta tills portalsidan visar meddelandet Distributionen är klar.
Välj Gå till resurs för att gå till sidan för Azure Cosmos DB-kontot.
Lägg till en utdatabindning
I Azure-portalen navigerar du till och väljer den funktionsapp som du skapade tidigare.
Välj Funktioner och välj sedan funktionen HttpTrigger.
Välj Integrering och + Lägg till utdata.
Använd inställningarna För att skapa utdata enligt tabellen:
Inställning Föreslaget värde beskrivning Bindningstyp Azure Cosmos DB Namnet på bindningstypen som ska väljas för att skapa utdatabindningen till Azure Cosmos DB. Dokumentparameternamn taskDocument Namn som refererar till Azure Cosmos DB-objektet i kod. Databasnamn taskDatabase Namnet på databasen där dokumenten ska sparas. Samlingsnamn taskCollection Databassamlingens namn. Om det är sant skapar du Azure Cosmos DB-databasen och samlingen Ja Samlingen finns inte redan, så du måste skapa den. Azure Cosmos DB-kontoanslutning Ny inställning Välj Nytt, välj sedan Azure Cosmos DB-konto och databaskontot som du skapade tidigare och välj sedan OK. Skapar en programinställning för din kontoanslutning. Den här inställningen används av bindningen för anslutningen till databasen. Välj OK för att skapa bindningen.
Uppdatera funktionskoden
Ersätt den befintliga funktionskoden med följande kod, på ditt valda språk:
Ersätt den befintliga C#-funktionen med följande kod:
#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();
}
}
Det här kodexemplet läser frågesträngarna i HTTP-begäran och tilldelar dem till fält i taskDocument
-objektet. taskDocument
-bindningen skickar objektdata från den här bindningsparametern för lagring i den bundna dokumentdatabasen. Databasen skapas första gången funktionen körs.
Testa funktionen och databasen
Välj Testa/kör. Under Fråga väljer du + Lägg till parameter och lägger till följande parametrar i frågesträngen:
name
task
duedate
Välj Kör och kontrollera att statusen 200 returneras.
I Azure-portalen söker du efter och väljer Azure Cosmos DB.
Välj ditt Azure Cosmos DB-konto och välj sedan Datautforskaren.
Expandera TaskCollection-noderna, välj det nya dokumentet och bekräfta att dokumentet innehåller dina frågesträngsvärden, tillsammans med ytterligare metadata.
Du har lagt till en bindning till HTTP-utlösaren för att lagra ostrukturerade data i en Azure Cosmos DB-instans.
Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden, kan du ta bort dem genom att ta bort resursgruppen.
På menyn eller startsidan i Azure-portalen väljer du Resursgrupper. Välj sedan myResourceGroup på sidan Resursgrupper.
På sidan myResourceGroup kontrollerar du att resurserna i listan är de som du vill ta bort.
Välj Ta bort resursgrupp, skriv myResourceGroup i textrutan för att bekräfta och välj sedan Ta bort.
Nästa steg
Mer information om bindning till en Azure Cosmos DB-instans finns i Azure Functions Azure Cosmos DB-bindningar.
- Utlösare och bindningar i Azure Functions
Lär dig hur Functions kan integreras med andra tjänster. - Azure Functions, info för utvecklare
Ger mer teknisk information om Functions-runtime och en referens för kodning av funktioner och definiering av utlösare och bindningar. - Koda och testa Azure Functions lokalt
Beskriver alternativen för att utveckla dina funktioner lokalt.