Rozšíření Dapr pro Azure Functions

Rozšíření Dapr pro Azure Functions je sada nástrojů a služeb, které vývojářům umožňují snadnou integraci Azure Functions s platformou Dapr (Distributed Application Runtime).

Azure Functions je výpočetní služba řízená událostmi, která poskytuje sadu triggerů a vazeb pro snadné připojení k dalším službám Azure. Dapr poskytuje sadu stavebních bloků a osvědčených postupů pro vytváření distribuovaných aplikací, včetně mikroslužeb, správy stavu, pub/sub messaging a dalších.

Díky integraci mezi Dapr a Functions můžete vytvářet funkce, které reagují na události z Dapr nebo externích systémů.

Akce Směr Typ
Trigger u vstupní vazby Dapr daprBindingTrigger
Aktivace při vyvolání služby Dapr daprServiceInvocationTrigger
Aktivace v předplatném tématu Dapr daprTopicTrigger
Vyžádání stavu Dapr pro provedení V daprState
Načtení tajných kódů Dapr pro spuštění V daprSecret
Uložení hodnoty do stavu Dapr Ven daprState
Vyvolání jiné aplikace Dapr Ven daprInvoke
Publikování zprávy do tématu Dapr Ven daprPublish
Odeslání hodnoty výstupní vazbě Dapr Ven daprBinding

Instalace rozšíření

Balíček NuGet rozšíření, který nainstalujete, závisí na režimu jazyka C# v procesu nebo izolovaném pracovním procesu , který používáte ve své aplikaci funkcí:

Toto rozšíření je k dispozici instalací balíčku NuGet verze 1.0.0.

Pomocí rozhraní příkazového řádku .NET:

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

Instalace sady

Příponu můžete přidat přidáním nebo nahrazením následujícího kódu v host.json souboru:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

Povolení dapr

Dapr můžete nakonfigurovat pomocí různých [argumentů a poznámek][dapr-args] na základě kontextu modulu runtime. Dapr pro Azure Functions můžete nakonfigurovat prostřednictvím dvou kanálů:

  • Šablony infrastruktury jako kódu (IaC) jako v šablonách Bicep nebo Azure Resource Manageru (ARM)
  • Azure Portal

Při použití šablony IaC zadejte následující argumenty v properties části definice prostředku aplikace kontejneru.

DaprConfig: {
  enabled: true
  appId: '${envResourceNamePrefix}-funcapp'
  appPort: 3001
  httpReadBufferSize: ''
  httpMaxRequestSize: ''
  logLevel: ''
  enableApiLogging: true
}

Výše uvedené hodnoty konfigurace Dapr se považují za změny oboru aplikace. Když spustíte aplikaci typu kontejner v režimu více revizí, změny těchto nastavení nevytvoří novou revizi. Místo toho se všechny existující revize restartují, aby se zajistilo, že jsou nakonfigurované s nejaktuálnějšími hodnotami.

Při konfiguraci Dapr pomocí webu Azure Portal přejděte do aplikace funkcí a v nabídce na levé straně vyberte Dapr :

Snímek obrazovky ukazující, kde najít povolení Dapr pro aplikaci funkcí na webu Azure Portal

Porty a naslouchací procesy Dapr

Když aktivujete funkci z Dapr, rozšíření automaticky zpřístupní port 3001 pro naslouchání příchozím požadavkům ze sajdkáru Dapr.

Důležité

Port 3001 se zobrazí a naslouchá jenom v případě, že je v aplikaci funkcí definovaný trigger Dapr. Při použití Dapr čeká sajdkárna na přijetí odpovědi z definovaného portu před dokončením instance. Nedefinujte poznámku dapr.io/port nebo --app-port pokud nemáte aktivační událost. To může aplikaci uzamknout ze sajdkáru Dapr.

Pokud používáte jenom vstupní a výstupní vazby, 3001 port nemusí být vystaven ani definován.

Když se Azure Functions pokusí komunikovat s Dapr, ve výchozím nastavení volá Dapr přes port přeložený z proměnné DAPR_HTTP_PORTprostředí . Pokud má tato proměnná hodnotu null, výchozí hodnota je port 3500.

Adresu Dapr používanou vstupními a výstupními vazbami můžete přepsat nastavením DaprAddress vlastnosti pro function.json vazbu (nebo atributu). Ve výchozím nastavení používá http://localhost:{DAPR_HTTP_PORT}.

Aplikace funkcí stále zveřejňuje další port a koncový bod pro věci, jako jsou triggery HTTP, které se místně ve výchozím nastavení nastaví 7071, ale v kontejneru se ve výchozím nastavení nastaví 80.

Typy vazeb

Typy vazeb podporované pro .NET závisí na režimu spouštění rozšíření i jazyka C#, což může být jedna z následujících možností:

Knihovna tříd v procesu je kompilovaná funkce jazyka C# spuštěná ve stejném procesu jako modul runtime služby Functions.

Rozšíření Dapr podporuje typy parametrů podle následující tabulky.

Vazba Typy parametrů
Trigger Dapr daprBindingTrigger
daprServiceInvocationTrigger
daprTopicTrigger
Vstup Dapr daprState
daprSecret
Výstup Dapr daprState
daprInvoke
daprPublish
daprBinding

Příklady použití těchto typů najdete v úložišti GitHubu pro rozšíření.

Vyzkoušení rozšíření Dapr pro Azure Functions

Naučte se používat rozšíření Dapr pro Azure Functions prostřednictvím poskytnutých ukázek.

Ukázky Popis
Rychlý start Začněte používat pub/dílčí vazbu Dapr a HttpTrigger.
Dapr Kafka Naučte se používat rozšíření Dapr služby Azure Functions s komponentou Dapr vazeb Kafka.
Proces .NET Naučte se používat model v procesu azure Functions k integraci s několika komponentami Dapr v .NET, jako je volání služby, pub/sub, vazby a správa stavů.
Izolované rozhraní .NET Integrace s komponentami Dapr v .NET pomocí modelu provádění mimo model OOP (Azure Functions).

Vyzkoušení rozšíření Dapr pro Azure Functions

Naučte se používat rozšíření Dapr pro Azure Functions prostřednictvím poskytnutých ukázek.

Ukázky Popis
Funkce Java Naučte se používat rozšíření Dapr služby Azure Functions pomocí Javy.

Vyzkoušení rozšíření Dapr pro Azure Functions

Naučte se používat rozšíření Dapr pro Azure Functions prostřednictvím poskytnutých ukázek.

Ukázky Popis
Rychlý start Začněte používat pub/dílčí vazbu Dapr a HttpTrigger.
Dapr Kafka Naučte se používat rozšíření Dapr služby Azure Functions s komponentou Dapr vazeb Kafka.
JavaScript Spusťte aplikaci funkcí Dapr JavaScriptu a integrujte ji s voláním služby Dapr, pub/sub, vazbami a správou stavu pomocí Azure Functions.

Vyzkoušení rozšíření Dapr pro Azure Functions

Naučte se používat rozšíření Dapr pro Azure Functions prostřednictvím poskytnutých ukázek.

Ukázky Popis
Funkce PowerShellu Naučte se používat rozšíření Dapr služby Azure Functions pomocí PowerShellu.

Vyzkoušení rozšíření Dapr pro Azure Functions

Naučte se používat rozšíření Dapr pro Azure Functions prostřednictvím poskytnutých ukázek.

Ukázky Popis
Dapr Kafka Naučte se používat rozšíření Dapr služby Azure Functions s komponentou Dapr vazeb Kafka.
Python v1 Spusťte aplikaci Dapr-ized Python a pomocí programovacího modelu Azure Functions v1 se integrujte s komponentami Dapr.
Python v2 Spusťte aplikaci Dapr pomocí programovacího modelu Azure Functions Python v2 pro integraci s komponentami Dapr.

Řešení problému

Tato část popisuje, jak řešit problémy, ke kterým může dojít při použití rozšíření Dapr pro Azure Functions.

Ujistěte se, že je ve vašem prostředí povolený Dapr.

Pokud ve službě Azure Functions používáte vazby a triggery Dapr a ve vašem prostředí není povolené dapr, může se zobrazit chybová zpráva: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information. Pokud chcete povolit dapr ve vašem prostředí:

  • Pokud je vaše funkce Azure Functions nasazená v Azure Container Apps, projděte si pokyny k povolení Dapr pro rozšíření Dapr pro Azure Functions.

  • Pokud je vaše funkce Azure Functions nasazená v Kubernetes, ověřte, že konfigurace YAML vašeho nasazení obsahuje následující poznámky:

    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>"
      ...
    
  • Pokud spouštíte funkci Azure Functions místně, spusťte následující příkaz, abyste měli jistotu, že používáte aplikaci funkcí s Dapr:

    dapr run --app-id functionapp --app-port <DAPR_APP_PORT>  --components-path <COMPONENTS_PATH> -- func host start 
    

Ověření hodnoty portu aplikace v konfiguraci Dapr

Rozšíření Dapr pro Azure Functions ve výchozím nastavení spouští server HTTP na portu 3001 . Tento port můžete nakonfigurovat pomocí DAPR_APP_PORT proměnné prostředí.

Pokud při spuštění aplikace Azure Functions zadáte nesprávnou hodnotu portu aplikace, může se zobrazit chybová zpráva: 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). Pokud chcete tuto chybovou zprávu vyřešit:

  1. V nastavení Dapr vaší aplikace kontejneru:

    • Pokud v kódu používáte trigger Dapr, ověřte, že je port aplikace nastavený na 3001 hodnotu proměnné prostředí nebo na hodnotu DAPR_APP_PORT proměnné prostředí.

    • Pokud ve svém kódu nepoužíváte trigger Dapr, ověřte, že port aplikace není nastavený. Měl by být prázdný.

  2. Ověřte, že v konfiguraci Dapr zadáte správnou hodnotu portu aplikace.

    • Pokud používáte Azure Container Apps, zadejte port aplikace v Bicep:

      DaprConfig: {
         ...
         appPort: <DAPR_APP_PORT>
         ...
      }
      
    • Pokud používáte prostředí Kubernetes, nastavte poznámku dapr.io/app-port :

      annotations:
         ...
         dapr.io/app-port: "<DAPR_APP_PORT>"
         ...
      
    • Pokud vyvíjíte místně, ověřte, že jste nastavili --app-port při spuštění aplikace funkcí pomocí Dapr:

      dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start 
      

Další kroky

Přečtěte si další informace o Dapr.