

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tutorial: Creación de una aplicación de muestra de Amazon EventBridge
<a name="eb-tutorial-get-started"></a>

Puede usar EventBridge para enrutar [eventos](eb-events.md) a funciones de Lambda específicas mediante [reglas](eb-rules.md).

En este tutorial, usará la AWS CLI, Node.js, y el código del [repositorio de GitHub](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) para crear lo siguiente:
+ Una función de [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) que produce eventos para las transacciones bancarias en cajeros automáticos.
+ Tres funciones de Lambda para usar como [destinos](eb-targets.md) de una regla de EventBridge.
+ y la regla que enruta los eventos creados a la función descendente correcta en función de un [patrón de eventos](eb-event-patterns.md).

En este ejemplo, se utilizan plantillas de AWS SAM para definir las reglas de EventBridge. Para obtener más información sobre el uso de plantillas de AWS SAM con EventBridge, consulte [Uso de AWS Serverless Application Model plantillas para implementar EventBridge los recursos de Amazon](eb-use-sam.md).

En el repositorio, el subdirectorio *atmProducer* contiene `handler.js`, que representa el servicio de cajero automático que produce eventos. Este código es un controlador de Lambda escrito en Node.js y publica eventos en EventBridge a través del [SDK de AWS](https://www.npmjs.com/package/aws-sdk) mediante esta línea de código JavaScript.

```
const result = await eventbridge.putEvents(params).promise()
```

Este directorio también contiene `events.js`, una lista de varias transacciones de prueba en una matriz de entradas. Un único evento se define en JavaScript de la siguiente manera:

```
{
  // Event envelope fields
  Source: 'custom.myATMapp',
  EventBusName: 'default',
  DetailType: 'transaction',
  Time: new Date(),

  // Main event body
  Detail: JSON.stringify({
    action: 'withdrawal',
    location: 'MA-BOS-01',
    amount: 300,
    result: 'approved',
    transactionId: '123456',
    cardPresent: true,
    partnerBank: 'Example Bank',
    remainingFunds: 722.34
  })
}
```

La sección *Detalle* del evento especifica los atributos de la transacción. Incluyen la ubicación del cajero automático, el importe, el banco asociado y el resultado de la transacción.

El archivo `handler.js` del subdirectorio *atmConsumer* contiene tres funciones:

```
exports.case1Handler = async (event) => {
  console.log('--- Approved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case2Handler = async (event) => {
  console.log('--- NY location transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case3Handler = async (event) => {
  console.log('--- Unapproved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}
```

Cada función recibe eventos de transacciones, que se registran a través de las instrucciones de `console.log` en [Registros de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html). Las funciones de consumo funcionan de forma independiente del productor y desconocen el origen de los eventos.

La lógica de enrutamiento está incluida en las reglas de EventBridge que implementa la plantilla de AWS SAM de la aplicación. Las reglas evalúan el flujo entrante de eventos y enrutan los eventos coincidentes a las funciones de Lambda de destino.

Las reglas utilizan patrones de eventos que son objetos JSON con la misma estructura que los eventos con los que coinciden. Este es el patrón de eventos de una de las reglas.

```
{
  "detail-type": ["transaction"],
  "source": ["custom.myATMapp"],
  "detail": {
    "location": [{
      "prefix": "NY-"
    }]
  }
}
```

**Topics**
+ [Requisitos previos](#eb-gs-prereqs)
+ [Paso 1: Crear una aplicación](#eb-gs-create-application)
+ [Paso 2: Ejecutar la aplicación](#eb-gs-run-application)
+ [Paso 3: Verificar los registros y el funcionamiento de la aplicación](#eb-gs-check-logs)
+ [Paso 4: Eliminar los recursos](#cleanup)

## Requisitos previos
<a name="eb-gs-prereqs"></a>

Para completar este tutorial necesitará los siguientes recursos:
+ Una cuenta de AWS. [Cree una cuenta de AWS](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) si no dispone todavía de una.
+ AWS CLI instalada. Para instalar la AWS CLI más reciente, consulte [Instalación, actualización y desinstalación de la versión 2 de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ Se instaló la versión 12.x de Node.js. Para instalar Node.js, consulte [Descargas](https://nodejs.org/en/download/).

## Paso 1: Crear una aplicación
<a name="eb-gs-create-application"></a>

Para configurar la aplicación de ejemplo, usará la AWS CLI y Git para crear los recursos de AWS que necesitará.

**Para crear la aplicación**

1. [Inicie sesión en AWS](https://console.aws.amazon.com/console/home).

1. [Instale Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) e [instale la CLI de AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) en su máquina local.

1. Cree un directorio nuevo y, a continuación, vaya a ese directorio en un terminal.

1. En la línea de comandos, introduzca `git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example`.

1. En la línea de comandos, ejecute el comando siguiente:

   ```
   cd ./amazon-eventbridge-producer-consumer-example
   sam deploy --guided
   ```

1. Haga lo siguiente en el terminal:

   1. En `Stack Name`, escriba un nombre para la pila. Por ejemplo, llame a la pila `Test`.

   1. En `AWS Region`, introduzca la región. Por ejemplo, `us-west-2`.

   1. En `Confirm changes before deploy`, introduzca `Y`.

   1. En `Allow SAM CLI IAM role creation`, introduzca `Y`

   1. En `Save arguments to configuration file`, introduzca `Y`

   1. En `SAM configuration file`, introduzca `samconfig.toml`.

   1. En `SAM configuration environment`, introduzca `default`.

## Paso 2: Ejecutar la aplicación
<a name="eb-gs-run-application"></a>

Ahora que ha configurado los recursos, utilizará la consola para probar las funciones.

**Cómo ejecutar la aplicación**

1. Abra la [Consola de Lambda](https://console.aws.amazon.com/lambda/) en la misma región en la que implementó la aplicación de AWS SAM.

1. Hay cuatro funciones de Lambda con el prefijo **atm-demo**. Seleccione la función **atmProducerFn** y, a continuación, elija **Acciones**, **Prueba**.

1. Escriba `Test` en **Nombre**.

1. Seleccione **Probar**.

## Paso 3: Verificar los registros y el funcionamiento de la aplicación
<a name="eb-gs-check-logs"></a>

Ahora que ha ejecutado la aplicación, utilizará la consola para comprobar los Registros de CloudWatch.

**Para consultar los registros**

1. Abra la [Consola de CloudWatch](https://console.aws.amazon.com/cloudwatch/) en la misma región en la que implementó la aplicación de AWS SAM.

1. Elija **Logs** (Registros) y, a continuación, elija **Log groups** (Grupo de registro).

1. Seleccione el grupo de registro que contiene **atmConsumerCase1**. Verá dos flujos que representan las dos transacciones aprobadas por el cajero automático. Elija el flujo de registro para ver el resultado.

1. Vuelva a la lista de grupos de registro y, a continuación, seleccione el grupo de registro que contiene **atmConsumerCase2**. Verá dos flujos que representan las dos transacciones que coinciden con el filtro de ubicación *Nueva York*.

1. Vuelva a la lista de grupos de registro y, a continuación, seleccione el grupo de registro que contiene **atmConsumerCase3**. Abra el flujo para ver las transacciones denegadas.

## Paso 4: Eliminar los recursos
<a name="cleanup"></a>

A menos que desee conservar los recursos que creó para este tutorial, puede eliminarlos ahora. Si elimina los recursos de AWS que ya no utiliza, evitará gastos innecesarios en su cuenta de AWS.

**Para eliminar las reglas de EventBridge**

1. Abra la página [Reglas](https://console.aws.amazon.com/events/home#/rules) en la consola de EventBridge.

1. Seleccione las reglas que creó.

1. Elija **Eliminar**.

1. Elija **Eliminar**.

**Para eliminar las funciones de Lambda**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Seleccione las funciones que creó.

1. Elija **Actions** (Acciones), **Delete** (Eliminar).

1. Elija **Eliminar**.

**Para eliminar los grupos de registro de Registros de CloudWatch**

1. Abra la [consola de CloudWatch](https://console.aws.amazon.com/Cloudwatch/home).

1. Elija **Registros**, **Grupos de registro**.

1. Seleccione los grupos de registro que se crearon en este tutorial.

1. Elija **Acciones**, **Eliminar grupo(s) de registro(s)**.

1. Elija **Eliminar**.