Dapr-bővítmény az Azure Functionshez

Fontos

Az Azure Functions Dapr-bővítménye jelenleg előzetes verzióban érhető el, és csak az Azure Container Apps-környezetekben támogatott.

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 Ennyi idő múlva: daprState
Dapr-titkos kulcsok lekérése végrehajtáshoz Ennyi idő múlva: 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 a NuGet-csomag 0.17.0-preview01-es verziójának telepítésével érhető el.

A .NET parancssori felületének használata:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr --prerelease

Csomag telepítése

Az előzetes verziójú bővítményt a következő kód hozzáadásával vagy cseréjével adhatja hozzá a host.json fájlhoz:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "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:

Screenshot demonstrating where to find Dapr enablement for a Function App in the Azure portal.

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_PORTfeloldott porton keresztül. Ha ez a változó null értékű, akkor alapértelmezés szerint a port 3500lesz.

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 7071a 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 HttpTriggera .
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 HttpTriggera .
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:

  1. 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.

  2. 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 
      

Következő lépések

További információ a Daprről.