Köra din kod på begäran med Azure Functions

Slutförd

Nu när vi har skapat en funktionsapp ska vi titta på hur du skapar, konfigurerar och kör en funktion. Vi kör vår funktion i nästa övning, så du behöver inte utföra några uppgifter i den här lektionen.

Utlösare

Funktioner är aktivitetsdrivna, vilket innebär att de körs som svar på en händelse. Typen av händelse som startar en funktion kallas för en utlösare. Varje funktion måste konfigureras med exakt en utlösare.

Du kan utlösa funktionskörning med hjälp av HTTP-begäranden, en schemalagd timer och händelser från följande Azure-tjänster:

Azure-tjänst Beskrivning av utlösare
Blob Storage Startar en funktion när en ny eller uppdaterad blob identifieras.
Azure Cosmos DB Starta en funktion när infogningar och uppdateringar identifieras.
Event Grid Startar en funktion när en händelse tas emot från Event Grid.
Event Hubs Startar en funktion när en händelse tas emot från Event Hubs.
Queue Storage Startar en funktion när ett nytt objekt tas emot i en kö. Kömeddelandet anges som indata till funktionen.
Service Bus Startar en funktion som svar på meddelanden från en Service Bus-kö.

Bindningar

En bindning är ett deklarativt sätt att ansluta data och tjänster till din funktion. Bindningar interagerar med olika datakällor, vilket innebär att du inte behöver skriva koden i din funktion för att ansluta till datakällor och hantera anslutningar. Plattformen tar hand om den komplexiteten som en del av bindningskoden. Varje bindning har en riktning: Koden läser data från indatabindningar och skriver data till utdatabindningar . Varje funktion kan ha noll eller flera bindningar för att hantera indata och utdata som bearbetas av funktionen.

En utlösare är en typ av indatabindning som har möjlighet att initiera körning av viss kod.

Azure tillhandahåller ett stort antal bindningar för att ansluta till olika lagringsenheter och meddelandetjänster.

Definiera en exempelbindning

Nu ska vi titta på ett exempel på hur du konfigurerar en funktion med en indatabindning (utlösare) och en utdatabindning. Anta att vi vill skriva en ny rad till Azure Table Storage när ett nytt meddelande visas i Azure Queue Storage. Det här scenariot kan implementeras med hjälp av en Azure Queue Storage-utlösare och en Azure Table Storage-utdatabindning.

Följande kodavsnitt är function.json-filen för det här scenariot.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Vår JSON-konfiguration anger att vår funktion utlöses när ett meddelande läggs till i en kö med namnet myqueue-items. Returvärdet för vår funktion skrivs sedan till outTable i Azure Table Storage.

För PowerShell-funktioner skriver du till utgående bindningar explicit med Push-OutputBinding-cmdleten.

Det här exemplet är en enkel illustration av hur vi konfigurerar bindningar för en funktion. Vi kan ändra utdata till ett e-postmeddelande med hjälp av en SendGrid-bindning eller placera en händelse på en Service Bus för att meddela någon annan komponent i vår arkitektur. Vi kan till och med ha flera utdatabindningar för att skicka data till olika tjänster.

Dricks

Om du vill visa och redigera innehållet i function.json i Azure-portalen väljer du funktionsappen på startsidan och väljer JSON-vy i den högra rutan. I vyn Resurs-JSON visas resurs-ID och den redigerbara JSON-koden. Om du vill stänga JSON-vyn väljer du X i det övre högra hörnet i fönstret.

Alla språk som stöds av Functions använder inte filen function.json för att definiera funktioner.

Skapa en funktion i Azure-portalen

Azure Functions har fördefinierade funktionsmallar som baseras på en viss typ av utlösare. De här mallarna på det valda språket gör det enkelt att komma igång med att skapa din första funktion.

Den här modulen stöds inte för alla språk som stöds av Functions och själva portalen har inte stöd för att skapa funktioner på alla språk som stöds av Functions.

För språk som stöds som använder filen function.json för att definiera funktioner kan du skapa och redigera dessa funktioner direkt i Azure-portalen. Dessa portalstödda språk är: JavaScript, PowerShell, Python och C#-skript (.csx). Språk som definierar funktioner direkt i själva koden måste utvecklas utanför portalen och distribueras till Azure. Dessa språk som inte stöds är: C#, Java, Python (v2-programmeringsmodell) och JavaScript/TypeScript (Node.js v4-programmeringsmodell).

Funktionsmallar

När du skapar din första funktion i portalen kan du välja en fördefinierad utlösare för funktionen. Baserat på dina val genererar Azure standardkod och konfigurationsinformation, till exempel att skapa en händelseloggpost när indata tas emot.

Om du väljer en mall i fönstret Lägg till funktion får du enkel åtkomst till de vanligaste utvecklingsmiljöerna, utlösarna och beroendena. När du skapar en funktion i Azure-portalen kan du välja mellan fler än 20 mallar. När du har skapat den kan du anpassa koden ytterligare.

När du skapar en funktion från en mall skapas flera filer, inklusive en konfigurationsfil, function.json och en källkodsfil, index.js.

Du kan skapa eller redigera funktioner för funktionsappen genom att välja Funktioner under kategorin Funktioner på menyn Funktionsapp.

När du väljer en funktion som du skapade i funktionsappen öppnas fönstret Funktion. Genom att välja Kod + Test på funktionsmenyn har du åtkomst till åtgärder i kommandofältet för att testa och köra koden, spara eller ignorera ändringar som du gör eller hämta den publicerade URL:en. Genom att välja Test/Kör i kommandofältet kan du köra användningsfall för begäranden som innehåller frågesträngar och värden. Funktionens sökväg ovanför kodrutan visar namnet på filen som är öppen. Du kan välja en specifik fil i listrutan för att testa eller redigera, till exempel function.json.

Screenshot of the function code and test editor showing the expanded Test/Run view, with menu options highlighted.

I föregående bild har den högra rutan flikarna Indata och Utdata . Genom att välja fliken Indata kan du skapa och testa funktionen genom att lägga till frågeparametrar och ange värden för frågesträngen. På fliken Utdata visas resultatet av begäran.

Testa Azure-funktionen

När du har skapat en funktion i portalen vill du testa den. Det finns två metoder:

  • Testa det i portalen
  • Köra den manuellt

Testa i Azure-portalen

Portalen erbjuder även ett bekvämt sätt att testa dina funktioner. Som tidigare beskrivits i föregående skärmbild. När du väljer Kör i det här fönstret visas resultatet automatiskt på fliken Utdata och fönstret Loggar öppnas för att visa statusen.

Kör funktionen manuellt

Du kan starta en funktion genom att manuellt utlösa den konfigurerade utlösaren. Om du till exempel använder en HTTP-utlösare kan du använda ett verktyg, till exempel Postman eller cURL, för att initiera en HTTP-begäran till din funktionsslutpunkts-URL, som är tillgänglig från funktionsdefinitionen (Hämta funktions-URL).

Instrumentpanel för övervakning och Application Insights

Det är viktigt att kunna övervaka funktionerna både vid utveckling och i produktion. Azure-portalen innehåller en instrumentpanel för övervakning som du aktiverar genom att aktivera Application Insights-integrering. På menyn Funktionsapp under Inställningar väljer du Application Insights, aktiverar Application Insights och väljer sedan Använd. I dialogrutan väljer du Ja. Application Insights-instrumentpanelen ger ett snabbt sätt att visa historiken för funktionsåtgärder genom att visa tidsstämpeln, resultatkoden, varaktigheten och åtgärds-ID:t som fylls i av Application Insights.

Screenshot showing the HTTP function Application Insights dashboard with function results, corresponding HTTP status codes, and the Monitoring menu items highlighted.

Fönstret Direktuppspelningsloggar

När du har aktiverat Application Insights i Azure-portalen kan du lägga till loggningsuttryck i funktionen för felsökning. De anropade metoderna för varje språk skickas ett "loggningsobjekt" som kan användas för att lägga till logginformation i fönstret Loggar i fönstret Kod + test när du kör ett test.

Skriv till loggar från koden med hjälp av log -metoden på context objektet, som skickas till hanteraren. Följande exempel skriver till standardloggnivån (information):

context.log('Enter your logging statement here');

Skriv till loggar från koden med hjälp av cmdleten Write-Host , som du ser i följande exempel:

Write-Host "Enter your logging statement here"

Fel, fel, varningar och avvikelser

Du kan använda Mått eller alternativ från kategorin Undersök på funktionsmenyn för att övervaka prestanda, diagnostisera fel eller konfigurera dussintals fördefinierade arbetsböcker för att hantera funktionsappen. Allt från kompileringsfel och varningar i koden till användningsstatistik efter roll.