Rozszerzenie dapr dla usługi Azure Functions
Rozszerzenie Dapr dla usługi Azure Functions to zestaw narzędzi i usług, które umożliwiają deweloperom łatwe integrowanie usługi Azure Functions z platformą Distributed Application Runtime (Dapr).
Azure Functions to oparta na zdarzeniach usługa obliczeniowa, która udostępnia zestaw wyzwalaczy i powiązań umożliwiających łatwe łączenie się z innymi usługami platformy Azure. Język Dapr udostępnia zestaw bloków konstrukcyjnych i najlepszych rozwiązań dotyczących tworzenia aplikacji rozproszonych, w tym mikrousług, zarządzania stanem, obsługi komunikatów pub/podrzędnych i nie tylko.
Dzięki integracji między językami Dapr i Functions można tworzyć funkcje reagujące na zdarzenia z języka Dapr lub systemów zewnętrznych.
Akcja | Kierunek | Typ |
---|---|---|
Wyzwalanie w powiązaniu wejściowym języka Dapr | Nie dotyczy | daprBindingTrigger |
Wyzwalanie wywołania usługi Dapr | Nie dotyczy | daprServiceInvocationTrigger |
Wyzwalanie w subskrypcji tematu dapr | Nie dotyczy | daprTopicTrigger |
Ściąganie stanu dapr na potrzeby wykonania | W | daprState |
Ściąganie wpisów tajnych języka Dapr na potrzeby wykonywania | W | daprSecret |
Zapisywanie wartości w stanie dapr | Out | daprState |
Wywoływanie innej aplikacji Dapr | Out | daprInvoke |
Publikowanie komunikatu w temacie języka Dapr | Out | daprPublish |
Wysyłanie wartości do powiązania wyjściowego języka Dapr | Out | daprBinding |
Instalowanie rozszerzenia
Instalowany pakiet NuGet rozszerzenia zależy od trybu W# w procesie lub izolowanym procesie roboczym używanym w aplikacji funkcji:
To rozszerzenie jest dostępne przez zainstalowanie pakietu NuGet w wersji 1.0.0.
Korzystanie z interfejsu wiersza polecenia platformy .NET:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Instalowanie pakietu
Rozszerzenie można dodać, dodając lub zastępując następujący kod w host.json
pliku:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Włączanie języka Dapr
Język Dapr można skonfigurować przy użyciu różnych [argumentów i adnotacji][dapr-args] na podstawie kontekstu środowiska uruchomieniowego. Język Dapr dla usługi Azure Functions można skonfigurować za pomocą dwóch kanałów:
- Szablony infrastruktury jako kodu (IaC), jak w szablonach Bicep lub Azure Resource Manager (ARM)
- Azure Portal
W przypadku korzystania z szablonu IaC określ następujące argumenty w properties
sekcji definicji zasobu aplikacji kontenera.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Powyższe wartości konfiguracji języka Dapr są uznawane za zmiany zakresu aplikacji. Po uruchomieniu aplikacji kontenera w trybie wielokrotnej wersji zmiany tych ustawień nie będą tworzyć nowej poprawki. Zamiast tego wszystkie istniejące poprawki są uruchamiane ponownie, aby upewnić się, że są skonfigurowane z najbardziej aktualnymi wartościami.
Podczas konfigurowania języka Dapr przy użyciu witryny Azure Portal przejdź do aplikacji funkcji i wybierz pozycję Dapr z menu po lewej stronie:
Porty i odbiorniki języka Dapr
Po wyzwoleniu funkcji z języka Dapr rozszerzenie uwidacznia port 3001
automatycznie w celu nasłuchiwania żądań przychodzących z przyczepki Dapr.
Ważne
Port 3001
jest uwidoczniony i nasłuchuje tylko wtedy, gdy wyzwalacz języka Dapr jest zdefiniowany w aplikacji funkcji. W przypadku korzystania z języka Dapr przyczepka czeka na odebranie odpowiedzi ze zdefiniowanego portu przed ukończeniem tworzenia wystąpienia. Nie należy definiować dapr.io/port
adnotacji ani --app-port
nie mieć wyzwalacza. Może to spowodować zablokowanie aplikacji z przyczepki Dapr.
Jeśli używasz tylko powiązań wejściowych i wyjściowych, port 3001
nie musi być uwidoczniony ani zdefiniowany.
Domyślnie gdy usługa Azure Functions próbuje nawiązać komunikację z językiem Dapr, wywołuje metodę Dapr przez port rozpoznany ze zmiennej środowiskowej DAPR_HTTP_PORT
. Jeśli ta zmienna ma wartość null, wartość domyślna to port 3500
.
Możesz zastąpić adres Dapr używany przez powiązania wejściowe i wyjściowe, ustawiając DaprAddress
właściwość w elemecie function.json
dla powiązania (lub atrybutu). Domyślnie używa polecenia http://localhost:{DAPR_HTTP_PORT}
.
Aplikacja funkcji nadal uwidacznia inny port i punkt końcowy dla elementów, takich jak wyzwalacze HTTP, które lokalnie domyślnie są domyślnie ustawione na 7071
, ale w kontenerze wartość domyślna to 80
.
Typy powiązań
Typy powiązań obsługiwane dla platformy .NET zależą zarówno od wersji rozszerzenia, jak i trybu wykonywania języka C#, który może być jednym z następujących elementów:
Biblioteka klas w procesie jest skompilowaną funkcją języka C# uruchamianą w tym samym procesie co środowisko uruchomieniowe usługi Functions.
Rozszerzenie Języka Dapr obsługuje typy parametrów zgodnie z poniższą tabelą.
Wiązanie | Typy parametrów |
---|---|
Wyzwalacz języka Dapr | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Dane wejściowe języka Dapr | daprState daprSecret |
Dane wyjściowe języka Dapr | daprState daprInvoke daprPublish daprBinding |
Przykłady użycia tych typów można znaleźć w repozytorium GitHub dla rozszerzenia.
Wypróbuj rozszerzenie Dapr dla usługi Azure Functions
Dowiedz się, jak używać rozszerzenia Dapr dla usługi Azure Functions za pośrednictwem podanych przykładów.
Przykłady | opis |
---|---|
Szybki start | Rozpocznij pracę przy użyciu powiązania usługi Dapr Pub/sub i HttpTrigger . |
Dapr Kafka | Dowiedz się, jak używać rozszerzenia Dapr usługi Azure Functions z składnikiem Dapr powiązania platformy Kafka. |
Proces in-process platformy .NET | Dowiedz się, jak używać modelu przetwarzania usługi Azure Functions do integracji z wieloma składnikami języka Dapr na platformie .NET, takimi jak wywołanie usługi, pub/pod, powiązania i zarządzanie stanem. |
Izolowana platforma .NET | Integracja ze składnikami języka Dapr na platformie .NET przy użyciu modelu wykonywania out-of-of-proc (OOP) usługi Azure Functions. |
Wypróbuj rozszerzenie Dapr dla usługi Azure Functions
Dowiedz się, jak używać rozszerzenia Dapr dla usługi Azure Functions za pośrednictwem podanych przykładów.
Przykłady | opis |
---|---|
Funkcje Języka Java | Dowiedz się, jak używać rozszerzenia Dapr usługi Azure Functions przy użyciu języka Java. |
Wypróbuj rozszerzenie Dapr dla usługi Azure Functions
Dowiedz się, jak używać rozszerzenia Dapr dla usługi Azure Functions za pośrednictwem podanych przykładów.
Przykłady | opis |
---|---|
Szybki start | Rozpocznij pracę przy użyciu powiązania usługi Dapr Pub/sub i HttpTrigger . |
Dapr Kafka | Dowiedz się, jak używać rozszerzenia Dapr usługi Azure Functions z składnikiem Dapr powiązania platformy Kafka. |
JavaScript | Uruchom aplikację funkcji Języka Dapr języka JavaScript i zintegruj się z wywołaniem usługi Dapr, pubem/sub, powiązaniami i zarządzaniem stanem przy użyciu usługi Azure Functions. |
Wypróbuj rozszerzenie Dapr dla usługi Azure Functions
Dowiedz się, jak używać rozszerzenia Dapr dla usługi Azure Functions za pośrednictwem podanych przykładów.
Przykłady | opis |
---|---|
Funkcje programu PowerShell | Dowiedz się, jak używać rozszerzenia Dapr usługi Azure Functions za pomocą programu PowerShell. |
Wypróbuj rozszerzenie Dapr dla usługi Azure Functions
Dowiedz się, jak używać rozszerzenia Dapr dla usługi Azure Functions za pośrednictwem podanych przykładów.
Przykłady | opis |
---|---|
Dapr Kafka | Dowiedz się, jak używać rozszerzenia Dapr usługi Azure Functions z składnikiem Dapr powiązania platformy Kafka. |
Python v1 | Uruchom aplikację języka Python z obsługą języka Dapr i użyj modelu programowania Języka Python w wersji 1 usługi Azure Functions do integracji ze składnikami języka Dapr. |
Python v2 | Uruchom aplikację dapr przy użyciu modelu programowania języka Python w języku Python w usłudze Azure Functions w wersji 2, aby zintegrować ją ze składnikami języka Dapr. |
Rozwiązywanie problemów
W tej sekcji opisano sposób rozwiązywania problemów, które mogą wystąpić podczas korzystania z rozszerzenia Dapr dla usługi Azure Functions.
Upewnij się, że język Dapr jest włączony w danym środowisku
Jeśli używasz powiązań i wyzwalaczy języka Dapr w usłudze Azure Functions, a język Dapr nie jest włączony w danym środowisku, może zostać wyświetlony komunikat o błędzie: Aby włączyć język Dapr w środowisku: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
Jeśli funkcja platformy Azure jest wdrożona w usłudze Azure Container Apps, zapoznaj się z instrukcjami dotyczącymi włączania języka Dapr dla rozszerzenia Dapr dla usługi Azure Functions.
Jeśli funkcja platformy Azure jest wdrożona na platformie Kubernetes, sprawdź, czy konfiguracja YAML wdrożenia ma następujące adnotacje:
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>" ...
Jeśli używasz funkcji platformy Azure lokalnie, uruchom następujące polecenie, aby upewnić się, że używasz aplikacji funkcji z językiem Dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Weryfikowanie wartości portu aplikacji w konfiguracji języka Dapr
Rozszerzenie Dapr dla usługi Azure Functions domyślnie uruchamia serwer HTTP na porcie 3001
. Ten port można skonfigurować przy użyciu zmiennej środowiskowejDAPR_APP_PORT
.
Jeśli podasz nieprawidłową wartość portu aplikacji podczas uruchamiania aplikacji usługi Azure Functions, może zostać wyświetlony komunikat o błędzie: Aby rozwiązać ten komunikat o błędzie: 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).
W ustawieniach języka Dapr aplikacji kontenera:
Jeśli używasz wyzwalacza języka Dapr w kodzie, sprawdź, czy port aplikacji jest ustawiony na
3001
lub na wartość zmiennej środowiskowejDAPR_APP_PORT
.Jeśli nie używasz wyzwalacza języka Dapr w kodzie, sprawdź, czy port aplikacji nie został ustawiony. Powinien być pusty.
Sprawdź, czy w konfiguracji języka Dapr podasz poprawną wartość portu aplikacji.
Jeśli używasz usługi Azure Container Apps, określ port aplikacji w aplikacji Bicep:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
Jeśli używasz środowiska Kubernetes, ustaw adnotację
dapr.io/app-port
:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
Jeśli programujesz lokalnie, sprawdź, czy skonfigurowana
--app-port
podczas uruchamiania aplikacji funkcji przy użyciu języka Dapr:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start