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 :
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_PORT
prostř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:
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 hodnotuDAPR_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ý.
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