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 Portal går du till sidan Start och väljer funktionsappen 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 function.json-filen för att definiera funktioner kan du skapa och redigera dessa funktioner direkt i Azure Portal. 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 Portal 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.

Skärmbild av funktionskoden och testredigeraren som visar den expanderade test-/körningsvyn med menyalternativ markerade.

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 något av dessa HTTP-testverktyg för att initiera en HTTP-begäran till funktionens slutpunkts-URL:

Varning

För scenarier där du har känsliga data, till exempel autentiseringsuppgifter, hemligheter, åtkomsttoken, API-nycklar och annan liknande information, bör du använda ett verktyg som skyddar dina data med nödvändiga säkerhetsfunktioner, fungerar offline eller lokalt, inte synkroniserar dina data till molnet och inte kräver att du loggar in på ett onlinekonto. På så sätt minskar du risken för att exponera känsliga data för allmänheten.

Du kan hämta URL-slutpunkten för en HTTP-utlösare genom att välja Hämta funktions-URL från funktionsdefinitionssidan i portalen.

Instrumentpanel för övervakning och Application Insights

Det är viktigt att kunna övervaka funktionerna både vid utveckling och i produktion. Azure Portal tillhandahåller en övervakningsinstrumentpanel som du aktiverar genom att aktivera Application Insights-integrering. På menyn Funktionsapp går du till Inställningar, väljer 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.

Skärmbild som visar instrumentpanelen för HTTP-funktionen Application Insights med funktionsresultat, motsvarande HTTP-statuskoder och menyalternativen Övervakning markerat.

Fönstret Direktuppspelningsloggar

När du har aktiverat Application Insights i Azure Portal 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.