Utlösare och bindningar i Azure Functions
I den här artikeln får du lära dig mer om de avancerade begreppen kring utlösare och bindningar för funktioner.
Utlösare är det som gör att en funktion körs. En utlösare definierar hur en funktion anropas och en funktion måste ha exakt en utlösare. Utlösare har associerade data, vilka vanligtvis är nyttolasten för funktionen.
Bindning till en funktion är ett sätt att deklarativt ansluta en annan resurs till funktionen. bindningar kan anslutas som indatabindningar, utdatabindningar eller både och. Data från bindningar skickas som parametrar till funktionen.
Du kan blanda och matcha olika bindningar så att de passar dina behov. Bindningar är valfria och en funktion kan ha en eller flera indata- och/eller utdatabindningar.
Med utlösare och bindningar kan du undvika att hårdkoda åtkomsten till andra tjänster. Funktionen tar emot data (till exempel innehållet i ett kömeddelande) i funktionsparametrar. Du kan skicka data (t.ex. för att skapa ett kömeddelande) med hjälp av returvärdet för funktionen.
Titta på följande exempel på hur du kan implementera olika funktioner.
| Exempelscenario | Utlösare | Indatabindning | Utdatabindning |
|---|---|---|---|
| Ett nytt kömeddelande tas emot som kör en funktion för att skriva till en annan kö. | Kö* | Ingen | Kö* |
| Ett schemalagt jobb läser Blob Storage innehåll och skapar ett nytt Cosmos DB dokument. | Timer | Blob Storage | Cosmos DB |
| Den Event Grid används för att läsa en bild från Blob Storage och ett dokument från Cosmos DB skicka ett e-postmeddelande. | Event Grid | Blob Storage och Cosmos DB | SendGrid |
| En webhook som använder Microsoft Graph för att uppdatera ett Excel-blad. | HTTP | Ingen | Microsoft Graph |
* Representerar olika köer
De här exemplen är inte avsedda att vara fullständiga, utan tillhandahålls för att illustrera hur du kan använda utlösare och bindningar tillsammans.
Utlösar- och bindningsdefinitioner
Utlösare och bindningar definieras olika beroende på utvecklingsspråk.
| Språk | Utlösare och bindningar konfigureras av... |
|---|---|
| C#-klassbibliotek | methods and parameters med C#-attribut |
| Java | methods and parameters med Java-anteckningar |
| JavaScript/PowerShell/Python/TypeScript | uppdatera function.jspå (schema) |
För språk som är function.jspå tillhandahåller portalen ett användargränssnitt för att lägga till bindningar på fliken Integrering. Du kan också redigera filen direkt i portalen på fliken Kod + test för funktionen. Visual Studio Code kan du enkelt lägga till en bindning function.jsen fil genom att följa en lämplig uppsättning prompter.
I .NET och Java definierar parametertypen datatypen för indata. Använd till exempel för att binda till texten i en köutlösare, en bytematris som ska läsas som binär och en anpassad typ för string att de-serialisera till ett objekt. Eftersom .NET-klassbiblioteksfunktioner och Java-funktioner inte förlitar sig påfunction.jsför bindningsdefinitioner kan de inte skapas och redigeras i portalen. Redigering i C#-portalen baseras på C#-skript, som använderfunction.jspå i stället för attribut.
Mer information om hur du lägger till bindningar till befintliga funktioner finns i Ansluta funktioner till Azure-tjänster med hjälp av bindningar.
För språk som har dynamiskt typat, till exempel JavaScript, använder dataType du egenskapen ifunction.js på filen. Om du till exempel vill läsa innehållet i en HTTP-begäran i binärt format anger dataType du till binary :
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
Andra alternativ för dataType är stream och string .
Bindningsriktning
Alla utlösare och bindningar har direction en egenskap ifunction.js på filen:
- För utlösare är riktningen alltid
in - Indata- och utdatabindningar
inanvänder ochout - Vissa bindningar stöder en särskild
inoutriktning. Om du använderinoutär endast avancerad redigerare tillgänglig via fliken Integrera i portalen.
När du använder attribut i ett klassbibliotek för att konfigurera utlösare och bindningar anges riktningen i en attributkonstruktor eller här härledas från parametertypen.
Lägga till bindningar i en funktion
Du kan ansluta din funktion till andra tjänster med hjälp av indata- eller utdatabindningar. Lägg till en bindning genom att lägga till dess specifika definitioner i funktionen. Mer information finns i Lägga till bindningar till en befintlig funktion i Azure Functions.
Bindningar som stöds
Den här tabellen visar de bindningar som stöds i de större versionerna av Azure Functions runtime:
| Typ | 1.x | 2.x och högre1 | Utlösare | Indata | Resultat |
|---|---|---|---|---|---|
| Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure SQL (förhandsversion) | ✔ | ✔ | ✔ | ||
| Dapr3 | ✔ | ✔ | ✔ | ✔ | |
| Event Grid | ✔ | ✔ | ✔ | ✔ | |
| Event Hubs | ✔ | ✔ | ✔ | ✔ | |
| HTTP & webhooks | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ✔ | |
| Kafka2 | ✔ | ✔ | ✔ | ||
| Mobile Apps | ✔ | ✔ | ✔ | ||
| Notification Hubs | ✔ | ✔ | |||
| Queue Storage | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ2 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Service Bus | ✔ | ✔ | ✔ | ✔ | |
| SignalR | ✔ | ✔ | ✔ | ||
| Table Storage | ✔ | ✔ | ✔ | ✔ | |
| Timer | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1 Från och med version 2.x-körningen måste alla bindningar utom HTTP och Timer registreras. Se Registrera bindningstillägg.
2 Utlösare stöds inte i förbrukningsplanen. Kräver körningsdrivna utlösare.
3 Stöds endast i Kubernetes, IoT Edge och andra lägen med egen värd.
Information om vilka bindningar som är i förhandsversion eller är godkända för produktionsanvändning finns i Språk som stöds.
Kodexempel för bindningar
Använd följande tabell för att hitta exempel på specifika bindningstyper som visar hur du arbetar med bindningar i dina funktioner. Välj först den språkflik som motsvarar ditt projekt.
| Tjänst | Exempel | Exempel |
|---|---|---|
| Blob Storage | Utlösare Indata Resultat |
Länk |
| Azure Cosmos DB | Utlösare Indata Resultat |
Länk |
| Event Grid | Utlösare Resultat |
Länk |
| Event Hubs | Utlösare Resultat |
|
| IoT Hub | Utlösare Resultat |
|
| HTTP | Utlösare | Länk |
| Queue Storage | Utlösare Resultat |
Länk |
| RabbitMQ | Utlösare Resultat |
|
| SendGrid | Resultat | |
| Service Bus | Utlösare Resultat |
Länk |
| SignalR | Utlösare Indata Resultat |
|
| Table Storage | Indata Resultat |
|
| Timer | Utlösare | Länk |
| Twilio | Resultat | Länk |
Anpassade bindningar
Du kan skapa anpassade indata- och utdatabindningar. Bindningar måste redigeras i .NET, men kan användas från alla språk som stöds. Mer information om hur du skapar anpassade bindningar finns i Skapa anpassade indata- och utdatabindningar.
Resurser
- Bindningsuttryck och mönster
- Använda returvärdet för Azure-funktionen
- Registrera ett bindningsuttryck
- Testning:
- Hantera bindningsfel