Partager via


Extension Dapr pour Azure Functions

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 :

Capture d’écran montrant où rechercher l’activation dapr pour une application de fonction dans le portail Azure.

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 :

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 :

  1. 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 3001 sur ou sur la valeur de la DAPR_APP_PORT variable 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.

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

Étapes suivantes

En savoir plus sur Dapr.