Dapr-bővítmény az Azure Functionshez
Az Azure Functions Dapr-bővítménye olyan eszközök és szolgáltatások készlete, amelyek lehetővé teszik a fejlesztők számára, hogy könnyen integrálják az Azure Functionst az Elosztott alkalmazás futtatókörnyezeti (Dapr) platformmal.
Az Azure Functions egy eseményvezérelt számítási szolgáltatás, amely triggerek és kötések készletét biztosítja a többi Azure-szolgáltatáshoz való egyszerű kapcsolódáshoz. A Dapr számos építőelemet és ajánlott eljárást kínál az elosztott alkalmazások létrehozásához, beleértve a mikroszolgáltatásokat, az állapotkezelést, a pub/alüzenet-kezelést stb.
A Dapr és a Functions integrációjával olyan függvényeket hozhat létre, amelyek a Dapr vagy külső rendszerek eseményeire reagálnak.
Művelet | Irány | Típus |
---|---|---|
Eseményindító dapr bemeneti kötésen | n/a | daprBindingTrigger |
Eseményindító egy Dapr-szolgáltatáshíváson | n/a | daprServiceInvocationTrigger |
Eseményindító Dapr-témakör-előfizetésen | n/a | daprTopicTrigger |
Lekérés Dapr állapotban végrehajtáshoz | In | daprState |
Dapr-titkos kulcsok lekérése végrehajtáshoz | In | daprSecret |
Érték mentése Dapr-állapotba | Ki | daprState |
Másik Dapr-alkalmazás meghívása | Ki | daprInvoke |
Üzenet közzététele Dapr-témakörben | Ki | daprPublish |
Érték küldése Dapr kimeneti kötésre | Ki | daprBinding |
A bővítmény telepítése
A telepített NuGet-csomag a C# módtól függ a függvényalkalmazásban használt C#-módtól vagy izolált feldolgozói folyamattól:
Ez a bővítmény az 1.0.0-s verziójú NuGet-csomag telepítésével érhető el.
A .NET parancssori felületének használata:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Csomag telepítése
A bővítmény hozzáadásához adja hozzá vagy cserélje le a következő kódot a host.json
fájlban:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Dapr-engedélyezés
A Dapr konfigurálható különböző [argumentumok és széljegyzetek][dapr-args] használatával a futtatókörnyezet alapján. Az Azure Functionshez készült Dapr két csatornán konfigurálható:
- Infrastruktúra kódsablonokként (IaC) a Bicep- vagy az Azure Resource Manager-sablonokhoz hasonlóan
- Az Azure Portal
IaC-sablon használatakor adja meg a következő argumentumokat a properties
tárolóalkalmazás erőforrásdefiníciójának szakaszában.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
A fenti Dapr-konfigurációs értékek alkalmazáshatókör-módosításoknak minősülnek. Ha több változatú módban futtat egy tárolóalkalmazást, a beállítások módosítása nem hoz létre új változatot. Ehelyett az összes meglévő változat újraindul, hogy a legfrissebb értékekkel legyen konfigurálva.
Ha a Daprt az Azure Portallal konfigurálja, keresse meg a függvényalkalmazást, és válassza a Dapr elemet a bal oldali menüből:
Dapr-portok és -figyelők
Amikor egy függvényt aktivál a Dapr-ból, a bővítmény automatikusan elérhetővé teszi a portot 3001
, hogy a Dapr oldalkocsiból érkező bejövő kéréseket figyelje.
Fontos
A port 3001
csak akkor lesz közzétéve és figyelve, ha egy Dapr-eseményindító van definiálva a függvényalkalmazásban. A Dapr használatakor az oldalkocsi megvárja, hogy választ kapjon a megadott portról a példányosítás befejezése előtt. Ne definiálja a dapr.io/port
széljegyzetet, vagy --app-port
ha nincs eseményindítója. Ezzel zárolhatja az alkalmazást a Dapr oldalkocsiról.
Ha csak bemeneti és kimeneti kötéseket használ, a portot 3001
nem kell felfedni vagy definiálni.
Alapértelmezés szerint, amikor az Azure Functions megpróbál kommunikálni a Daprvel, meghívja a Daprt a környezeti változóból DAPR_HTTP_PORT
feloldott porton keresztül. Ha ez a változó null értékű, akkor alapértelmezés szerint a port 3500
lesz.
A bemeneti és kimeneti kötések által használt Dapr-címet felülbírálhatja a DaprAddress
kötés (vagy az attribútum) tulajdonságának function.json
beállításával. Alapértelmezés szerint a következőt használja http://localhost:{DAPR_HTTP_PORT}
: .
A függvényalkalmazás továbbra is egy másik portot és végpontot tesz elérhetővé a HTTP-eseményindítókhoz hasonlóan, amelyek helyileg alapértelmezés szerint 7071
a tárolóban alapértelmezettek 80
.
Kötéstípusok
A .NET-hez támogatott kötéstípusok a bővítményverziótól és a C# végrehajtási módtól is függenek, ami az alábbiak egyike lehet:
A folyamatközi osztálykódtár egy lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet.
A Dapr-bővítmény az alábbi táblázatnak megfelelően támogatja a paramétertípusokat.
Kötés | Paramétertípusok |
---|---|
Dapr-eseményindító | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Dapr-bemenet | daprState daprSecret |
Dapr-kimenet | daprState daprInvoke daprPublish daprBinding |
Az ilyen típusokat használó példákért tekintse meg a bővítmény GitHub-adattárát.
Az Azure Functions Dapr-bővítményének kipróbálása
Megtudhatja, hogyan használhatja az Azure Functions Dapr-bővítményét a megadott mintákon keresztül.
Példák | Leírás |
---|---|
Gyors útmutató | Ismerkedés a Dapr Pub/alkötés és HttpTrigger a . |
Dapr Kafka | Megtudhatja, hogyan használhatja az Azure Functions Dapr bővítményt a Kafka bindings Dapr összetevővel. |
.NET Folyamatban | Megtudhatja, hogyan integrálható az Azure Functions folyamatalapú modellje több Dapr-összetevővel a .NET-ben, például a Szolgáltatáshívás, a Pub/sub, a Kötések és az Állapotkezelés. |
.NET izolált | Integrálható Dapr-összetevőkkel a .NET-ben az Azure Functions out-of-proc (OOP) végrehajtási modelljével. |
Az Azure Functions Dapr-bővítményének kipróbálása
Megtudhatja, hogyan használhatja az Azure Functions Dapr-bővítményét a megadott mintákon keresztül.
Példák | Leírás |
---|---|
Java-függvények | Megtudhatja, hogyan használhatja az Azure Functions Dapr bővítményt a Java használatával. |
Az Azure Functions Dapr-bővítményének kipróbálása
Megtudhatja, hogyan használhatja az Azure Functions Dapr-bővítményét a megadott mintákon keresztül.
Példák | Leírás |
---|---|
Gyors útmutató | Ismerkedés a Dapr Pub/alkötés és HttpTrigger a . |
Dapr Kafka | Megtudhatja, hogyan használhatja az Azure Functions Dapr bővítményt a Kafka bindings Dapr összetevővel. |
JavaScript | Futtasson egy JavaScript Dapr-függvényalkalmazást, és integrálható a Dapr Service Invocation, Pub/sub, Bindings és State Management használatával az Azure Functions használatával. |
Az Azure Functions Dapr-bővítményének kipróbálása
Megtudhatja, hogyan használhatja az Azure Functions Dapr-bővítményét a megadott mintákon keresztül.
Példák | Leírás |
---|---|
PowerShell-függvények | Megtudhatja, hogyan használhatja az Azure Functions Dapr bővítményt a PowerShell-lel. |
Az Azure Functions Dapr-bővítményének kipróbálása
Megtudhatja, hogyan használhatja az Azure Functions Dapr-bővítményét a megadott mintákon keresztül.
Példák | Leírás |
---|---|
Dapr Kafka | Megtudhatja, hogyan használhatja az Azure Functions Dapr bővítményt a Kafka bindings Dapr összetevővel. |
Python v1 | Futtasson egy Dapr-alapú Python-alkalmazást, és az Azure Functions Python v1 programozási modell használatával integrálható a Dapr-összetevőkkel. |
Python v2 | Egy Dapr-alkalmazás indítása az Azure Functions Python v2 programozási modellel a Dapr-összetevőkkel való integrációhoz. |
Hibaelhárítás
Ez a szakasz azt ismerteti, hogyan háríthatja el az Azure Functions Dapr-bővítményének használatakor felmerülő problémákat.
Győződjön meg arról, hogy a Dapr engedélyezve van a környezetben
Ha Dapr-kötéseket és -triggereket használ az Azure Functionsben, és a Dapr nincs engedélyezve a környezetben, a következő hibaüzenet jelenhet meg: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
A Dapr engedélyezése a környezetben:
Ha az Azure-függvény az Azure Container Appsben van üzembe helyezve, tekintse meg az Azure Functions Dapr-bővítményének Dapr-engedélyezési utasításait.
Ha az Azure-függvény telepítve van a Kubernetesben, ellenőrizze, hogy az üzembe helyezés YAML-konfigurációja a következő megjegyzésekkel rendelkezik-e:
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>" ...
Ha helyileg futtatja az Azure-függvényt, futtassa a következő parancsot annak ellenőrzéséhez, hogy a függvényalkalmazást a Daprrel futtatja-e:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Alkalmazásport értékének ellenőrzése a Dapr-konfigurációban
Az Azure Functions Dapr-bővítménye alapértelmezés szerint elindít egy HTTP-kiszolgálót a porton 3001
. Ezt a portot a DAPR_APP_PORT
környezeti változóval konfigurálhatja.
Ha helytelen alkalmazásportértéket ad meg egy Azure Functions-alkalmazás futtatásakor, a következő hibaüzenet jelenhet meg: 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).
A hibaüzenet megoldása:
A tárolóalkalmazás Dapr-beállításaiban:
Ha Dapr-eseményindítót használ a kódban, ellenőrizze, hogy az alkalmazásport a környezeti változó értékére vagy értékére
DAPR_APP_PORT
van-e állítva3001
.Ha nem használ Dapr-eseményindítót a kódban, ellenőrizze, hogy nincs-e beállítva az alkalmazásport. Ez most még üres.
Ellenőrizze, hogy a Dapr-konfigurációban a megfelelő alkalmazásport-értéket adja-e meg.
Az Azure Container Apps használata esetén adja meg az alkalmazásportot a Bicepben:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
Ha Kubernetes-környezetet használ, állítsa be a
dapr.io/app-port
megjegyzést:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
Ha helyi fejlesztést végzett, ellenőrizze, hogy a függvényalkalmazás Dapr-beli futtatásakor be van-e állítva
--app-port
:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start