Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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