

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial: criar uma aplicação de exemplo do Amazon EventBridge
<a name="eb-tutorial-get-started"></a>

É possível usar o EventBridge para rotear [eventos](eb-events.md) para funções específicas do Lambda usando [regras](eb-rules.md).

Neste tutorial, serão usados a AWS CLI, o Node.js e o código no [repositório do GitHub](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) para criar o seguinte:
+ Uma função [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) que produz eventos para transações bancárias em caixas eletrônicos.
+ Para usar uma função do Lambda como [destinos](eb-targets.md) de uma regra do EventBridge.
+ e a regra que roteia os eventos criados para a função downstream correta com base em um [padrão de evento](eb-event-patterns.md).

Este exemplo usa modelos do AWS SAM para definir as regras do EventBridge. Para saber mais sobre o uso de modelos do AWS SAM com o EventBridge, consulte [Usando AWS Serverless Application Model modelos para implantar EventBridge recursos da Amazon](eb-use-sam.md).

No repositório, o subdiretório *atmProducer* contém `handler.js`, que representa o serviço ATM que produz eventos. Este código é um manipulador do Lambda escrito em Node.js e publica eventos no EventBridge por meio do [AWS SDK](https://www.npmjs.com/package/aws-sdk) usando esta linha de código em JavaScript.

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

Esse diretório também contém `events.js`, listando várias transações de teste em uma matriz de entradas. Um único evento é definido em JavaScript da seguinte forma:

```
{
  // 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
  })
}
```

A seção *Detalhes* do evento especifica os atributos da transação. Isso inclui a localização do caixa eletrônico, o valor, o banco parceiro e o resultado da transação.

O arquivo `handler.js` no subdiretório *atmConsumer* contém três funções:

```
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 função recebe eventos de transação, que são registrados por meio das declarações `console.log` no [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html). As funções do consumidor operam independentemente do produtor e desconhecem a origem dos eventos.

A lógica de roteamento está contida nas regras do EventBridge que são implantadas pelo modelo da aplicação do AWS SAM. As regras avaliam o fluxo de entrada de eventos e roteiam os eventos correspondentes para as funções do Lambda de destino.

As regras usam padrões de eventos que são objetos JSON com a mesma estrutura dos eventos aos quais correspondem. Aqui está o padrão do evento para uma das regras.

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

**Topics**
+ [Pré-requisitos](#eb-gs-prereqs)
+ [Etapa 1: criar uma aplicação](#eb-gs-create-application)
+ [Etapa 2: executar a aplicação](#eb-gs-run-application)
+ [Etapa 3: conferir os logs e verificar se a aplicação funciona](#eb-gs-check-logs)
+ [Etapa 4: limpar os recursos](#cleanup)

## Pré-requisitos
<a name="eb-gs-prereqs"></a>

Para concluir este tutorial, serão necessários os seguintes recursos:
+ Uma conta da AWS. [Crie uma conta da AWS](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html), se ainda não tiver uma.
+ AWS CLI instalada. Para instalar a AWS CLI, consulte [Instalar, atualizar e desinstalar a AWS CLI versão 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ Node.js 12.x instalado. Para instalar o Node.js, consulte [Downloads](https://nodejs.org/en/download/).

## Etapa 1: criar uma aplicação
<a name="eb-gs-create-application"></a>

Para configurar a aplicação de exemplo, serão usados a AWS CLI e o Git para criar os recursos da AWS necessários.

**Para criar o aplicativo**

1. [Faça login na AWS](https://console.aws.amazon.com/console/home).

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

1. Crie um novo diretório e navegue até esse diretório em um terminal.

1. Na linha de comando, insira `git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example`.

1. Na linha de comando, execute o seguinte comando:

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

1. No terminal, faça o seguinte:

   1. Em `Stack Name`, insira um nome para a pilha. Por exemplo, nomeie a pilha como `Test`.

   1. Em `AWS Region`, insira a região. Por exemplo, `us-west-2`.

   1. Em `Confirm changes before deploy`, digite `Y`.

   1. Em `Allow SAM CLI IAM role creation`, insira `Y`

   1. Em `Save arguments to configuration file`, insira `Y`

   1. Em `SAM configuration file`, digite `samconfig.toml`.

   1. Em `SAM configuration environment`, digite `default`.

## Etapa 2: executar a aplicação
<a name="eb-gs-run-application"></a>

Agora que os recursos foram configurados, o console será usado para testar as funções.

**Executar o aplicativo**

1. Abra o [console do Lambda](https://console.aws.amazon.com/lambda/) na mesma região em que implementou a aplicação do AWS SAM.

1. Existem quatro funções do Lambda com o prefixo **atm-demo**. Selecione a função **atmProducerFn** e escolha **Ações**, **Testar**.

1. Insira `Test` para o **Nome**.

1. Escolha **Testar**.

## Etapa 3: conferir os logs e verificar se a aplicação funciona
<a name="eb-gs-check-logs"></a>

Agora que executou a aplicação, usará o console para verificar os CloudWatch Logs.

**Para verificar os logs**

1. Abra o [console do CloudWatch](https://console.aws.amazon.com/cloudwatch/) na mesma região em que executou a aplicação do AWS SAM.

1. Escolha **Logs** e depois escolha **Grupo de logs**.

1. Selecione o grupo de logs que contém **atmConsumerCase1**. São vistos dois fluxos representando as duas transações aprovadas pelo caixa eletrônico. Escolha o fluxo de logs para visualizar a saída.

1. Navegue de volta para a lista de grupos de logs e selecione o grupo de log que contém **atmConsumerCase2**. Serão vistos dois fluxos representando as duas transações correspondentes ao filtro de localização de *Nova York*.

1. Navegue de volta para a lista de grupos de logs e selecione o grupo de log que contém **atmConsumerCase3**. Abra o fluxo para ver as transações negadas.

## Etapa 4: limpar os recursos
<a name="cleanup"></a>

Agora você pode excluir os recursos criados para este tutorial, a menos que queira mantê-los. Ao excluir os recursos da AWS que não estão mais sendo usados, são evitadas cobranças desnecessárias em sua conta da AWS.

**Para excluir as regras do EventBridge**

1. Abra a página [Regras](https://console.aws.amazon.com/events/home#/rules) no console do EventBridge.

1. Selecione as regras que foram criadas.

1. Escolha **Excluir**.

1. Selecione a opção **Excluir**.

**Para excluir as funções do Lambda**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Selecione as funções que foram criadas.

1. Selecione **Ações**, **Excluir**.

1. Escolha **Excluir**.

**Para excluir o grupo de logs do CloudWatch Logs**

1. Abra o [console do CloudWatch](https://console.aws.amazon.com/Cloudwatch/home).

1. Escolha **Logs**, **Grupos de logs**.

1. Selecione os grupos de logs que foram criados neste tutorial.

1. Selecione **Actions (Ações)**, **Delete log group(s) (Excluir grupo(s) de log)**.

1. Escolha **Excluir**.