Tutoriel : Travail piloté par les événements avec des Liaisons Dapr
Dans ce tutoriel, vous allez créer un microservice pour illustrer l’utilisation de l’API Bindings de Dapr afin de travailler avec des systèmes externes en tant qu’entrées et sorties. Vous allez :
- Exécuter localement l’application.
- Déployez l’application sur Azure Container Apps via Azure Developer CLI avec le Bicep fourni.
Le service écoute les événements de liaison d’entrée d’un système CRON, puis génère le contenu des données locales vers une liaison de sortie PostgreSql.
Prérequis
- Installer Azure Developer CLI
- Installer et initialiser Dapr
- Docker Desktop
- Installer Git
Exécuter l’application Node.js localement
Avant de déployer l’application sur Azure Container Apps, commencez par exécuter le conteneur PostgreSQL et le service JavaScript localement avec Docker Compose et Dapr.
Préparer le projet
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-nodejs-cron-postgres
Exécuter l’application Dapr à l’aide de l’interface CLI Dapr
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
db
.cd db
Exécutez le conteneur PostgreSQL avec Docker Compose.
docker compose up -d
Ouvrez une nouvelle fenêtre de terminal et accédez à
/batch
dans le répertoire de l’exemple.cd bindings-dapr-nodejs-cron-postgres/batch
Installez les dépendances.
npm install
Exécutez l’application de service JavaScript avec Dapr.
dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
La commande
dapr run
exécute l’application de liaison Dapr localement. Une fois l’application exécutée avec succès, la fenêtre de terminal affiche les données de liaison de sortie.Sortie attendue
Le service batch écoute les événements de liaison d’entrée d’un système CRON, puis génère le contenu des données locales vers une liaison de sortie PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
Dans le terminal
./db
, arrêtez le conteneur PostgreSQL.docker compose stop
Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI
Maintenant que vous avez exécuté l’application localement, nous allons déployer l’application Dapr Bindings sur Azure Container Apps à l’aide de azd
. Pendant le déploiement, nous remplacerons le composant PostgreSQL conteneurisé local par un composant Azure PostgreSQL.
Préparer le projet
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-nodejs-cron-postgres
Provisionner et déployer à l’aide d’Azure Developer CLI
Exécutez
azd init
pour initialiser le projet.azd init
Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.
Paramètre Description Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure. Emplacement Azure L’emplacement Azure pour vos ressources. Veillez à sélectionner un emplacement disponible pour Azure PostgreSQL. Abonnement Azure L’abonnement Azure pour vos ressources. Exécutez
azd up
pour provisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.azd up
Ce processus peut prendre un certain temps. Une fois la commande
azd up
terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd provision
. Une fois le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent les ressources Azure sont les suivants :main.parameters.json
main.bicep
- Un répertoire de ressources
app
organisé par fonctionnalité - Une bibliothèque de référence
core
qui contient les modules Bicep utilisés par le modèleazd
- Déploie le code à l’aide de
azd deploy
Sortie attendue
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que l’application conteneur batch journalise chaque insertion dans Azure PostgreSQL toutes les 10 secondes.
Copiez le nom de l’application conteneur à partir de la sortie du terminal.
Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.
Que s’est-il passé ?
Une fois la commande azd up
terminée :
- Azure Developer CLI a provisionné les ressources Azure référencées dans le répertoire
./infra
de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure. - L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.
Exécuter l’application Python localement
Préparer le projet
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-python-cron-postgres
Exécuter l’application Dapr à l’aide de l’interface CLI Dapr
Avant de déployer l’application sur Azure Container Apps, commencez par exécuter le conteneur PostgreSQL et le service Python localement avec Docker Compose et Dapr.
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
db
.cd db
Exécutez le conteneur PostgreSQL avec Docker Compose.
docker compose up -d
Ouvrez une nouvelle fenêtre de terminal et accédez à
/batch
dans le répertoire de l’exemple.cd bindings-dapr-python-cron-postgres/batch
Installez les dépendances.
pip install -r requirements.txt
Exécutez l’application de service Python avec Dapr.
dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
La commande
dapr run
exécute l’application de liaison Dapr localement. Une fois l’application exécutée avec succès, la fenêtre de terminal affiche les données de liaison de sortie.Sortie attendue
Le service batch écoute les événements de liaison d’entrée d’un système CRON, puis génère le contenu des données locales vers une liaison de sortie PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
Dans le terminal
./db
, arrêtez le conteneur PostgreSQL.docker compose stop
Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI
Maintenant que vous avez exécuté l’application localement, nous allons déployer l’application Dapr Bindings sur Azure Container Apps à l’aide de azd
. Pendant le déploiement, nous remplacerons le composant PostgreSQL conteneurisé local par un composant Azure PostgreSQL.
Préparer le projet
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-python-cron-postgres
Provisionner et déployer à l’aide d’Azure Developer CLI
Exécutez
azd init
pour initialiser le projet.azd init
Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.
Paramètre Description Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure. Emplacement Azure L’emplacement Azure pour vos ressources. Veillez à sélectionner un emplacement disponible pour Azure PostgreSQL. Abonnement Azure L’abonnement Azure pour vos ressources. Exécutez
azd up
pour provisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.azd up
Ce processus peut prendre un certain temps. Une fois la commande
azd up
terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd provision
. Une fois le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent les ressources Azure sont les suivants :main.parameters.json
main.bicep
- Un répertoire de ressources
app
organisé par fonctionnalité - Une bibliothèque de référence
core
qui contient les modules Bicep utilisés par le modèleazd
- Déploie le code à l’aide de
azd deploy
Sortie attendue
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que l’application conteneur batch journalise chaque insertion dans Azure PostgreSQL toutes les 10 secondes.
Copiez le nom de l’application conteneur à partir de la sortie du terminal.
Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.
Que s’est-il passé ?
Une fois la commande azd up
terminée :
- Azure Developer CLI a provisionné les ressources Azure référencées dans le répertoire
./infra
de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure. - L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.
Exécuter l’application .NET localement
Préparer le projet
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-csharp-cron-postgres
Exécuter l’application Dapr à l’aide de l’interface CLI Dapr
Avant de déployer l’application sur Azure Container Apps, commencez par exécuter le conteneur PostgreSQL et le service .NET localement avec Docker Compose et Dapr.
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
db
.cd db
Exécutez le conteneur PostgreSQL avec Docker Compose.
docker compose up -d
Ouvrez une nouvelle fenêtre de terminal et accédez à
/batch
dans le répertoire de l’exemple.cd bindings-dapr-csharp-cron-postgres/batch
Installez les dépendances.
dotnet build
Exécutez l’application de service .NET avec Dapr.
dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
La commande
dapr run
exécute l’application de liaison Dapr localement. Une fois l’application exécutée avec succès, la fenêtre de terminal affiche les données de liaison de sortie.Sortie attendue
Le service batch écoute les événements de liaison d’entrée d’un système CRON, puis génère le contenu des données locales vers une liaison de sortie PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
Dans le terminal
./db
, arrêtez le conteneur PostgreSQL.docker compose stop
Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI
Maintenant que vous avez exécuté l’application localement, nous allons déployer l’application Dapr Bindings sur Azure Container Apps à l’aide de azd
. Pendant le déploiement, nous remplacerons le composant PostgreSQL conteneurisé local par un composant Azure PostgreSQL.
Préparer le projet
Accédez au répertoire racine de l’exemple.
cd bindings-dapr-csharp-cron-postgres
Provisionner et déployer à l’aide d’Azure Developer CLI
Exécutez
azd init
pour initialiser le projet.azd init
Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.
Paramètre Description Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure. Emplacement Azure L’emplacement Azure pour vos ressources. Veillez à sélectionner un emplacement disponible pour Azure PostgreSQL. Abonnement Azure L’abonnement Azure pour vos ressources. Exécutez
azd up
pour provisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.azd up
Ce processus peut prendre un certain temps. Une fois la commande
azd up
terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd provision
. Une fois le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent les ressources Azure sont les suivants :main.parameters.json
main.bicep
- Un répertoire de ressources
app
organisé par fonctionnalité - Une bibliothèque de référence
core
qui contient les modules Bicep utilisés par le modèleazd
- Déploie le code à l’aide de
azd deploy
Sortie attendue
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que l’application conteneur batch journalise chaque insertion dans Azure PostgreSQL toutes les 10 secondes.
Copiez le nom de l’application conteneur à partir de la sortie du terminal.
Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.
Que s’est-il passé ?
Une fois la commande azd up
terminée :
- Azure Developer CLI a provisionné les ressources Azure référencées dans le répertoire
./infra
de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure. - L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.
Nettoyer les ressources
Si vous ne souhaitez pas continuer à utiliser cette application, supprimez les ressources Azure que vous avez provisionnées avec la commande suivante :
azd down
Étapes suivantes
- Apprenez-en davantage sur le déploiement d’applications Dapr sur Azure Container Apps.
- Activer l’authentification par jeton pour les requêtes Dapr.
- Apprenez-en davantage sur Azure Developer CLI et comment rendre vos applications compatibles avec
azd
. - Mettre à l’échelle vos applications Dapr à l’aide de scalers KEDA