Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
L’extension Dapr pour Azure Functions est un ensemble d’outils et de services qui permettent aux développeurs d’intégrer facilement Azure Functions à la plateforme Dapr (Distributed Application Runtime).
Azure Functions est un service de calcul basé sur les événements qui fournit un ensemble de déclencheurs et de liaisons pour se connecter facilement à d’autres services Azure. Dapr fournit un ensemble de blocs de construction et de bonnes pratiques pour la création d’applications distribuées, notamment les microservices, la gestion de l’état, la publication/la messagerie secondaire, etc.
Avec l’intégration entre Dapr et Functions, vous pouvez créer des fonctions qui réagissent aux événements à partir de Dapr ou de systèmes externes.
| Action | Direction | Type |
|---|---|---|
| Déclencheur sur une liaison d’entrée Dapr | N/A | daprBindingTrigger |
| Déclencheur sur un appel de service Dapr | N/A | daprServiceInvocationTrigger |
| Déclencher sur un abonnement à une rubrique Dapr | N/A | daprTopicTrigger |
| Extraire l’état Dapr pour une exécution | In | daprState |
| Extraire des secrets Dapr pour une exécution | In | daprSecret |
| Enregistrer une valeur dans un état Dapr | Out | daprState |
| Appeler une autre application Dapr | Out | daprInvoke |
| Publier un message dans une rubrique Dapr | Out | daprPublish |
| Envoyer une valeur à une liaison de sortie Dapr | Out | daprBinding |
Installer l’extension
Le package NuGet d’extension que vous installez dépend du mode C# en cours ou du processus de travail isolé que vous utilisez dans votre application de fonction :
Cette extension est disponible en installant le package NuGet version 1.0.0.
Utilisation de l’interface CLI .NET :
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Installer l’offre groupée
Pour pouvoir utiliser cette extension de liaison dans votre application, assurez-vous que le fichier host.json à la racine de votre projet contient cette extensionBundle référence :
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Dans cet exemple, la version valeur de [4.0.0, 5.0.0) l’hôte Functions indique à l’hôte Functions d’utiliser une version groupée qui est au moins 4.0.0 mais inférieure à , qui inclut toutes les versions potentielles 5.0.0de 4.x. Cette notation gère efficacement votre application sur la dernière version mineure disponible de l’offre groupée d’extensions v4.x.
Si possible, vous devez utiliser la dernière version principale de l’offre groupée d’extensions et autoriser le runtime à gérer automatiquement la dernière version mineure. Vous pouvez afficher le contenu de la dernière offre groupée sur la page de publication des offres groupées d’extensions. Pour plus d’informations, consultez les bundles d’extensions Azure Functions.
Activation dapr
Vous pouvez configurer Dapr à l’aide de différents [arguments et annotations][dapr-args] en fonction du contexte d’exécution. Vous pouvez configurer Dapr pour Azure Functions via deux canaux :
- Modèles Infrastructure as Code (IaC), comme dans les modèles Bicep ou Azure Resource Manager (ARM)
- Le portail Azure
Lorsque vous utilisez un modèle IaC, spécifiez les arguments suivants dans la properties section de la définition de ressource de l’application conteneur.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Les valeurs de configuration Dapr ci-dessus sont considérées comme des modifications de l’étendue de l’application. Lorsque vous exécutez une application conteneur en mode de révision multiple, les modifications apportées à ces paramètres ne créent pas de révision. Au lieu de cela, toutes les révisions existantes sont redémarrées pour s’assurer qu’elles sont configurées avec les valeurs les plus up-to-date.
Lorsque vous configurez Dapr à l’aide du portail Azure, accédez à votre application de fonction et sélectionnez Dapr dans le menu de gauche :
Ports et écouteurs Dapr
Lorsque vous déclenchez une fonction à partir de Dapr, l’extension expose automatiquement le port 3001 pour écouter les requêtes entrantes à partir du side-car Dapr.
Important
Le port 3001 n’est exposé et écouté que si un déclencheur Dapr est défini dans l’application de fonction. Lors de l’utilisation de Dapr, le side-car attend de recevoir une réponse du port défini avant de terminer l’instanciation.
Ne définissez pas l’annotation dapr.io/port ou --app-port , sauf si vous avez un déclencheur. Cela peut verrouiller votre application à partir du side-car Dapr.
Si vous utilisez uniquement des liaisons d’entrée et de sortie, le port 3001 n’a pas besoin d’être exposé ou défini.
Par défaut, quand Azure Functions tente de communiquer avec Dapr, il appelle Dapr sur le port résolu à partir de la variable DAPR_HTTP_PORTd’environnement. Si cette variable a la valeur Null, elle est définie par défaut sur le port 3500.
Vous pouvez remplacer l’adresse Dapr utilisée par les liaisons d’entrée et de sortie en définissant la DaprAddress propriété dans la function.json liaison (ou l’attribut). Par défaut, il utilise http://localhost:{DAPR_HTTP_PORT}.
L’application de fonction expose toujours un autre port et point de terminaison pour des éléments tels que les déclencheurs HTTP, qui sont localement par défaut 7071, mais dans un conteneur, la valeur par défaut 80est .
Types de liaisons
Les types de liaisons pris en charge pour .NET dépendent à la fois de la version d’extension et du mode d’exécution C#, qui peut être l’un des éléments suivants :
Une bibliothèque de classes in-process est une fonction C# compilée s’exécute dans le même processus que le runtime Functions.
L’extension Dapr prend en charge les types de paramètres en fonction du tableau ci-dessous.
| Binding | Types de paramètres |
|---|---|
| Déclencheur Dapr |
daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
| Entrée Dapr |
daprState daprSecret |
| Sortie Dapr |
daprState daprInvoke daprPublish daprBinding |
Pour obtenir des exemples utilisant ces types, consultez le référentiel GitHub de l’extension.
Essayer l’extension Dapr pour Azure Functions
Découvrez comment utiliser l’extension Dapr pour Azure Functions via les exemples fournis.
| Samples | Descriptif |
|---|---|
| Démarrage rapide | Commencez à utiliser la liaison Pub/sous-dapr et HttpTrigger. |
| Dapr Kafka | Découvrez comment utiliser l’extension Dapr Azure Functions avec le composant Dapr des liaisons Kafka. |
| .NET in-process | Découvrez comment utiliser le modèle in-process Azure Functions pour s’intégrer à plusieurs composants Dapr dans .NET, tels que l’appel de service, pub/sous, liaisons et gestion d’état. |
| .NET isolé | Intégrez des composants Dapr dans .NET à l’aide du modèle d’exécution OOP (Out-of-Proc) d’Azure Functions. |
Essayer l’extension Dapr pour Azure Functions
Découvrez comment utiliser l’extension Dapr pour Azure Functions via les exemples fournis.
| Samples | Descriptif |
|---|---|
| Fonctions Java | Découvrez comment utiliser l’extension Dapr Azure Functions à l’aide de Java. |
Essayer l’extension Dapr pour Azure Functions
Découvrez comment utiliser l’extension Dapr pour Azure Functions via les exemples fournis.
| Samples | Descriptif |
|---|---|
| Démarrage rapide | Commencez à utiliser la liaison Pub/sous-dapr et HttpTrigger. |
| Dapr Kafka | Découvrez comment utiliser l’extension Dapr Azure Functions avec le composant Dapr des liaisons Kafka. |
| JavaScript | Exécutez une application de fonction Dapr JavaScript et intégrez à Dapr Service Invocation, Pub/sub, Bindings et State Management à l’aide d’Azure Functions. |
Essayer l’extension Dapr pour Azure Functions
Découvrez comment utiliser l’extension Dapr pour Azure Functions via les exemples fournis.
| Samples | Descriptif |
|---|---|
| Fonctions PowerShell | Découvrez comment utiliser l’extension Dapr Azure Functions avec PowerShell. |
Essayer l’extension Dapr pour Azure Functions
Découvrez comment utiliser l’extension Dapr pour Azure Functions via les exemples fournis.
| Samples | Descriptif |
|---|---|
| Dapr Kafka | Découvrez comment utiliser l’extension Dapr Azure Functions avec le composant Dapr des liaisons Kafka. |
| Python v1 | Exécutez une application Python dapr et utilisez le modèle de programmation Python v1 Azure Functions pour l’intégrer aux composants Dapr. |
| Python v2 | Lancez une application Dapr à l’aide du modèle de programmation Python v2 Azure Functions pour l’intégrer aux composants Dapr. |
Résolution des problèmes
Cette section explique comment résoudre les problèmes qui peuvent se produire lors de l’utilisation de l’extension Dapr pour Azure Functions.
Vérifier que Dapr est activé dans votre environnement
Si vous utilisez des liaisons et des déclencheurs Dapr dans Azure Functions et que Dapr n’est pas activé dans votre environnement, vous pouvez recevoir le message d’erreur : Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information. Pour activer Dapr dans votre environnement :
Si votre fonction Azure est déployée dans Azure Container Apps, reportez-vous aux instructions d’activation Dapr pour l’extension Dapr pour Azure Functions.
Si votre fonction Azure est déployée dans Kubernetes, vérifiez que la configuration YAML de votre déploiement comporte les annotations suivantes :
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>" ...Si vous exécutez votre fonction Azure localement, exécutez la commande suivante pour vous assurer que vous exécutez l’application de fonction avec Dapr :
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Vérifier la valeur du port d’application dans la configuration dapr
L’extension Dapr pour Azure Functions démarre un serveur HTTP sur le port 3001 par défaut. Vous pouvez configurer ce port à l’aide de la variable d’environnementDAPR_APP_PORT.
Si vous fournissez une valeur de port d’application incorrecte lors de l’exécution d’une application Azure Functions, vous pouvez recevoir le message d’erreur : 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). Pour résoudre ce message d’erreur :
Dans les paramètres Dapr de votre application conteneur :
Si vous utilisez un déclencheur Dapr dans votre code, vérifiez que le port d’application est défini
3001sur ou sur la valeur de laDAPR_APP_PORTvariable d’environnement.Si vous n’utilisez pas de déclencheur Dapr dans votre code, vérifiez que le port de l’application n’est pas défini. Il doit être vide.
Vérifiez que vous fournissez la valeur de port d’application correcte dans la configuration Dapr.
Si vous utilisez Azure Container Apps, spécifiez le port d’application dans Bicep :
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }Si vous utilisez un environnement Kubernetes, définissez l’annotation
dapr.io/app-port:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...Si vous développez localement, vérifiez que vous définissez
--app-portlors de l’exécution de l’application de fonction avec Dapr :dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start