Compartir a través de


Tutorial: Trabajo controlado por eventos mediante enlaces de Dapr

En este tutorial, se crea un microservicio para demostrar la API de enlaces de Dapr para trabajar con sistemas externos como entradas y salidas. Hará lo siguiente:

  • Ejecutar la aplicación localmente.
  • Implemente la aplicación en Azure Container Apps a través de Azure Developer CLI con el Bicep proporcionado.

El servicio escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de PostreSql.

Diagram of the Dapr binding application.

Requisitos previos

Ejecutar la aplicación Node.js. localmente

Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de JavaScript localmente con Docker Compose y Dapr.

Preparación del proyecto

  1. Clone la aplicación Dapr de ejemplo en el equipo local.

    git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
    
  2. Vaya al directorio raíz del ejemplo.

    cd bindings-dapr-nodejs-cron-postgres
    

Ejecución de la aplicación de Dapr mediante la CLI de Dapr

  1. En el directorio raíz del ejemplo, cambie los directorios a db.

    cd db
    
  2. Ejecute el contenedor de PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Abra una nueva ventana de terminal y vaya a /batch en el directorio de ejemplo.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Instale las dependencias.

    npm install
    
  5. Ejecute la aplicación de servicio JavaScript con Dapr.

    dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
    

    El comando dapr run ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.

    Salida prevista

    El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de 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. En el terminal de ./db, detenga el contenedor de PostgreSQL.

    docker compose stop
    

Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI

Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.

Preparación del proyecto

Vaya al directorio raíz del ejemplo.

cd bindings-dapr-nodejs-cron-postgres

Aprovisionamiento e implementación mediante Azure Developer CLI

  1. Ejecute azd init para inicializar el proyecto.

    azd init
    
  2. Cuando se le solicite en el terminal, proporcione los parámetros siguientes.

    Parámetro Descripción
    Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure.
    Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL.
    Suscripción de Azure La suscripción de Azure para los recursos.
  3. Ejecute azd up para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.

    azd up
    

    Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando azd up, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómo azd up hace lo siguiente:

    • Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio ./infra mediante azd provision. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:
      • main.parameters.json
      • main.bicep
      • Un directorio de recursos de app organizado por funcionalidad
      • Biblioteca de referencia de core que contiene los módulos de Bicep usados por la plantilla de azd
    • Implementa el código mediante azd deploy

    Salida prevista

    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
    

Confirmación de la implementación correcta

En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.

  1. Copie el nombre de la aplicación contenedora de la salida del terminal.

  2. Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.

  3. En el panel de Container App, seleccione Supervisión>Flujo de registro.

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

  4. Confirme que el contenedor registra la misma salida que en el terminal anterior.

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

¿Qué ha ocurrido?

Tras completar correctamente el comando azd up:

  • Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio ./infra del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal.
  • La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.

Ejecución de la aplicación de Python localmente

Preparación del proyecto

  1. Clone la aplicación Dapr de ejemplo en el equipo local.

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. Vaya al directorio raíz del ejemplo.

    cd bindings-dapr-python-cron-postgres
    

Ejecución de la aplicación de Dapr mediante la CLI de Dapr

Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de Python localmente con Docker Compose y Dapr.

  1. En el directorio raíz del ejemplo, cambie los directorios a db.

    cd db
    
  2. Ejecute el contenedor de PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Abra una nueva ventana de terminal y vaya a /batch en el directorio de ejemplo.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Instale las dependencias.

    pip install -r requirements.txt
    
  5. Ejecute la aplicación de servicio Python con Dapr.

    dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
    

    El comando dapr run ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.

    Salida prevista

    El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de 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. En el terminal de ./db, detenga el contenedor de PostgreSQL.

    docker compose stop
    

Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI

Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.

Preparación del proyecto

Vaya al directorio raíz del ejemplo.

cd bindings-dapr-python-cron-postgres

Aprovisionamiento e implementación mediante Azure Developer CLI

  1. Ejecute azd init para inicializar el proyecto.

    azd init
    
  2. Cuando se le solicite en el terminal, proporcione los parámetros siguientes.

    Parámetro Descripción
    Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure.
    Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL.
    Suscripción de Azure La suscripción de Azure para los recursos.
  3. Ejecute azd up para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.

    azd up
    

    Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando azd up, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómo azd up hace lo siguiente:

    • Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio ./infra mediante azd provision. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:
      • main.parameters.json
      • main.bicep
      • Un directorio de recursos de app organizado por funcionalidad
      • Biblioteca de referencia de core que contiene los módulos de Bicep usados por la plantilla de azd
    • Implementa el código mediante azd deploy

    Salida prevista

    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
    

Confirmación de la implementación correcta

En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.

  1. Copie el nombre de la aplicación contenedora de la salida del terminal.

  2. Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.

  3. En el panel de Container App, seleccione Supervisión>Flujo de registro.

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

  4. Confirme que el contenedor registra la misma salida que en el terminal anterior.

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

¿Qué ha ocurrido?

Tras completar correctamente el comando azd up:

  • Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio ./infra del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal.
  • La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.

Ejecución local de la aplicación .NET

Preparación del proyecto

  1. Clone la aplicación Dapr de ejemplo en el equipo local.

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. Vaya al directorio raíz del ejemplo.

    cd bindings-dapr-csharp-cron-postgres
    

Ejecución de la aplicación de Dapr mediante la CLI de Dapr

Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de .NET localmente con Docker Compose y Dapr.

  1. En el directorio raíz del ejemplo, cambie los directorios a db.

    cd db
    
  2. Ejecute el contenedor de PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Abra una nueva ventana de terminal y vaya a /batch en el directorio de ejemplo.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Instale las dependencias.

    dotnet build
    
  5. Ejecute la aplicación de servicio .NET con Dapr.

    dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
    

    El comando dapr run ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.

    Salida prevista

    El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de 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. En el terminal de ./db, detenga el contenedor de PostgreSQL.

    docker compose stop
    

Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI

Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.

Preparación del proyecto

Vaya al directorio raíz del ejemplo.

cd bindings-dapr-csharp-cron-postgres

Aprovisionamiento e implementación mediante Azure Developer CLI

  1. Ejecute azd init para inicializar el proyecto.

    azd init
    
  2. Cuando se le solicite en el terminal, proporcione los parámetros siguientes.

    Parámetro Descripción
    Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure.
    Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL.
    Suscripción de Azure La suscripción de Azure para los recursos.
  3. Ejecute azd up para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.

    azd up
    

    Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando azd up, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómo azd up hace lo siguiente:

    • Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio ./infra mediante azd provision. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:
      • main.parameters.json
      • main.bicep
      • Un directorio de recursos de app organizado por funcionalidad
      • Biblioteca de referencia de core que contiene los módulos de Bicep usados por la plantilla de azd
    • Implementa el código mediante azd deploy

    Salida prevista

    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
    

Confirmación de la implementación correcta

En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.

  1. Copie el nombre de la aplicación contenedora de la salida del terminal.

  2. Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.

  3. En el panel de Container App, seleccione Supervisión>Flujo de registro.

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

  4. Confirme que el contenedor registra la misma salida que en el terminal anterior.

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

¿Qué ha ocurrido?

Tras completar correctamente el comando azd up:

  • Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio ./infra del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal.
  • La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.

Limpieza de recursos

Si no va a seguir usando esta aplicación, elimine los recursos de Azure que ha aprovisionado con el siguiente comando.

azd down

Pasos siguientes