Partage via


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.

Diagram of the Dapr binding application.

Prérequis

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

  1. Clonez l’exemple d’application Dapr sur votre machine locale.

    git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
    
  2. 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

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire db.

    cd db
    
  2. Exécutez le conteneur PostgreSQL avec Docker Compose.

    docker compose up -d
    
  3. 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
    
  4. Installez les dépendances.

    npm install
    
  5. 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
    
  6. 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

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. 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.
  3. 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 comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd 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èle azd
    • 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
    

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.

  1. Copiez le nom de l’application conteneur à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

  4. Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.

    Screenshot of the container app's log stream in the Azure portal.

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

  1. Clonez l’exemple d’application Dapr sur votre machine locale.

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. 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.

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire db.

    cd db
    
  2. Exécutez le conteneur PostgreSQL avec Docker Compose.

    docker compose up -d
    
  3. 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
    
  4. Installez les dépendances.

    pip install -r requirements.txt
    
  5. 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
    
  6. 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

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. 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.
  3. 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 comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd 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èle azd
    • 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
    

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.

  1. Copiez le nom de l’application conteneur à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

  4. Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.

    Screenshot of the container app's log stream in the Azure portal.

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

  1. Clonez l’exemple d’application Dapr sur votre machine locale.

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. 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.

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire db.

    cd db
    
  2. Exécutez le conteneur PostgreSQL avec Docker Compose.

    docker compose up -d
    
  3. 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
    
  4. Installez les dépendances.

    dotnet build
    
  5. 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
    
  6. 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

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. 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.
  3. 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 comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd 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èle azd
    • 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
    

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.

  1. Copiez le nom de l’application conteneur à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

  4. Vérifiez que le conteneur journalise la même sortie que dans le terminal précédemment.

    Screenshot of the container app's log stream in the Azure portal.

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