Dapr-tillägg för Azure Functions
Dapr-tillägget för Azure Functions är en uppsättning verktyg och tjänster som gör det möjligt för utvecklare att enkelt integrera Azure Functions med dapr-plattformen (Distributed Application Runtime).
Azure Functions är en händelsedriven beräkningstjänst som tillhandahåller en uppsättning utlösare och bindningar för att enkelt ansluta till andra Azure-tjänster. Dapr tillhandahåller en uppsättning byggstenar och metodtips för att skapa distribuerade program, inklusive mikrotjänster, tillståndshantering, pub-/undermeddelanden med mera.
Med integreringen mellan Dapr och Functions kan du skapa funktioner som reagerar på händelser från Dapr eller externa system.
Åtgärd | Riktning | Typ |
---|---|---|
Utlösare för en Dapr-indatabindning | Ej tillämpligt | daprBindingTrigger |
Utlösare för ett anrop till En Dapr-tjänst | Ej tillämpligt | daprServiceInvocationTrigger |
Utlösare för en Dapr-ämnesprenumeration | Ej tillämpligt | daprTopicTrigger |
Hämta i Dapr-tillstånd för en körning | I | daprState |
Hämta Dapr-hemligheter för en körning | I | daprSecret |
Spara ett värde i ett Dapr-tillstånd | Ut | daprState |
Anropa en annan Dapr-app | Ut | daprInvoke |
Publicera ett meddelande till ett Dapr-ämne | Ut | daprPublish |
Skicka ett värde till en Dapr-utdatabindning | Ut | daprBinding |
Installera tillägget
Vilket NuGet-tilläggspaket som du installerar beror på den processbaserade eller isolerade arbetsprocessen i C#-läget som du använder i funktionsappen:
Installera paket
Du kan lägga till tillägget genom att lägga till eller ersätta följande kod i host.json
filen:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Dapr-aktivering
Du kan konfigurera Dapr med hjälp av olika [argument och anteckningar][dapr-args] baserat på körningskontexten. Du kan konfigurera Dapr för Azure Functions via två kanaler:
- IaC-mallar (Infrastruktur som kod) som i Bicep- eller Azure Resource Manager-mallar (ARM)
- Azure-portalen
När du använder en IaC-mall anger du följande argument i properties
avsnittet i resursdefinitionen för containerappen.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Ovanstående Dapr-konfigurationsvärden betraktas som ändringar i programomfattningen. När du kör en containerapp i läget för flera revisioner kommer ändringar i dessa inställningar inte att skapa någon ny revision. I stället startas alla befintliga revisioner om för att säkerställa att de är konfigurerade med de senaste värdena.
När du konfigurerar Dapr med Hjälp av Azure-portalen går du till funktionsappen och väljer Dapr på menyn till vänster:
Dapr-portar och lyssnare
När du utlöser en funktion från Dapr exponerar tillägget porten 3001
automatiskt för att lyssna på inkommande begäranden från Dapr-sidovagnen.
Viktigt!
Porten 3001
exponeras och lyssnas bara på om en Dapr-utlösare definieras i funktionsappen. När du använder Dapr väntar sidovagnen på att få ett svar från den definierade porten innan instansieringen slutförs. Definiera inte anteckningen dapr.io/port
eller --app-port
såvida du inte har en utlösare. Om du gör det kan du låsa programmet från Dapr-sidovagnen.
Om du bara använder indata- och utdatabindningar behöver porten 3001
inte exponeras eller definieras.
När Azure Functions som standard försöker kommunicera med Dapr anropas Dapr via porten som matchas från miljövariabeln DAPR_HTTP_PORT
. Om variabeln är null är den som standard port 3500
.
Du kan åsidosätta Dapr-adressen som används av indata- och utdatabindningar genom att ange DaprAddress
egenskapen i function.json
för bindningen (eller attributet). Som standard använder http://localhost:{DAPR_HTTP_PORT}
den .
Funktionsappen exponerar fortfarande en annan port och slutpunkt för saker som HTTP-utlösare, som lokalt standardvärdet 7071
är , men i en container, är standardvärdet 80
.
Bindningstyper
Vilka bindningstyper som stöds för .NET beror på både tilläggsversionen och C#-körningsläget, vilket kan vara något av följande:
Ett kursbibliotek i processen är en kompilerad C#-funktion som körs i samma process som Functions-körningen.
Dapr-tillägget stöder parametertyper enligt tabellen nedan.
Bindning | Parametertyper |
---|---|
Dapr-utlösare | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Dapr-indata | daprState daprSecret |
Dapr-utdata | daprState daprInvoke daprPublish daprBinding |
Exempel som använder dessa typer finns i GitHub-lagringsplatsen för tillägget.
Prova Dapr-tillägget för Azure Functions
Lär dig hur du använder Dapr-tillägget för Azure Functions via de angivna exemplen.
Exempel | beskrivning |
---|---|
Snabbstart | Kom igång med Dapr Pub/sub-bindningen och HttpTrigger . |
Dapr Kafka | Lär dig hur du använder Azure Functions Dapr-tillägget med Dapr-komponenten Kafka-bindningar. |
.NET i processen | Lär dig hur du använder en processmodell i Azure Functions för att integrera med flera Dapr-komponenter i .NET, till exempel Tjänstanrop, Pub/sub, Bindningar och Tillståndshantering. |
.NET Isolerad | Integrera med Dapr-komponenter i .NET med hjälp av OOP-körningsmodellen (Azure Functions out-of-proc). |
Prova Dapr-tillägget för Azure Functions
Lär dig hur du använder Dapr-tillägget för Azure Functions via de angivna exemplen.
Exempel | beskrivning |
---|---|
Java Functions | Lär dig hur du använder Azure Functions Dapr-tillägget med Java. |
Prova Dapr-tillägget för Azure Functions
Lär dig hur du använder Dapr-tillägget för Azure Functions via de angivna exemplen.
Exempel | beskrivning |
---|---|
Snabbstart | Kom igång med Dapr Pub/sub-bindningen och HttpTrigger . |
Dapr Kafka | Lär dig hur du använder Azure Functions Dapr-tillägget med Dapr-komponenten Kafka-bindningar. |
JavaScript | Kör ett JavaScript Dapr-funktionsprogram och integrera med Dapr Service Invocation, Pub/sub, Bindings och State Management med hjälp av Azure Functions. |
Prova Dapr-tillägget för Azure Functions
Lär dig hur du använder Dapr-tillägget för Azure Functions via de angivna exemplen.
Exempel | beskrivning |
---|---|
PowerShell-funktioner | Lär dig hur du använder Azure Functions Dapr-tillägget med PowerShell. |
Prova Dapr-tillägget för Azure Functions
Lär dig hur du använder Dapr-tillägget för Azure Functions via de angivna exemplen.
Exempel | beskrivning |
---|---|
Dapr Kafka | Lär dig hur du använder Azure Functions Dapr-tillägget med Dapr-komponenten Kafka-bindningar. |
Python v1 | Kör ett Dapr-ized Python-program och använd programmeringsmodellen Azure Functions Python v1 för att integrera med Dapr-komponenter. |
Python v2 | Starta ett Dapr-program med programmeringsmodellen Azure Functions Python v2 för att integrera med Dapr-komponenter. |
Felsökning
I det här avsnittet beskrivs hur du felsöker problem som kan uppstå när du använder Dapr-tillägget för Azure Functions.
Kontrollera att Dapr är aktiverat i din miljö
Om du använder Dapr-bindningar och utlösare i Azure Functions och Dapr inte är aktiverat i din miljö kan du få felmeddelandet: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
Aktivera Dapr i din miljö:
Om din Azure-funktion har distribuerats i Azure Container Apps kan du läsa Dapr-aktiveringsinstruktioner för Dapr-tillägget för Azure Functions.
Om din Azure-funktion har distribuerats i Kubernetes kontrollerar du att YAML-konfigurationen för din distribution har följande anteckningar:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...
Om du kör azure-funktionen lokalt kör du följande kommando för att se till att du kör funktionsappen med Dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Verifiera appportvärdet i Dapr-konfigurationen
Dapr-tillägget för Azure Functions startar som standard en HTTP-server på porten 3001
. Du kan konfigurera den här porten med hjälp av DAPR_APP_PORT
miljövariabeln.
Om du anger ett felaktigt appportvärde när du kör en Azure Functions-app kan du få felmeddelandet: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error).
Så här löser du det här felmeddelandet:
I dapr-inställningarna för containerappen:
Om du använder en Dapr-utlösare i koden kontrollerar du att appporten är inställd på
3001
eller värdet förDAPR_APP_PORT
miljövariabeln.Om du inte använder en Dapr-utlösare i koden kontrollerar du att appporten inte har angetts. Den ska vara tom.
Kontrollera att du anger rätt appportvärde i Dapr-konfigurationen.
Om du använder Azure Container Apps anger du appporten i Bicep:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
Om du använder en Kubernetes-miljö anger du kommentaren
dapr.io/app-port
:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
Om du utvecklar lokalt kontrollerar du att du anger
--app-port
när du kör funktionsappen med Dapr:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start