

# Criar uma regra que é acionada em um evento do Amazon Aurora
<a name="rds-cloud-watch-events"></a>

Usando o Amazon EventBridge, é possível automatizar serviços da AWS e responder aos eventos do sistema, como problemas de disponibilidade da aplicação ou alterações de recursos. 

**Topics**
+ [Tutorial: Registro de alterações de estado de uma instância de banco de dados usando o Amazon EventBridge](#log-rds-instance-state)

## Tutorial: Registro de alterações de estado de uma instância de banco de dados usando o Amazon EventBridge
<a name="log-rds-instance-state"></a>

Neste tutorial, você pode criar uma função do AWS Lambda que registra as alterações de estado para uma instância do . Depois, crie uma regra que execute a função sempre que houver uma alteração de estado de uma instância de banco de dados do RDS existente. O tutorial pressupõe que você tem uma pequena instância de teste em execução que você pode desligar temporariamente.

**Importante**  
Não execute este tutorial em uma instância de banco de dados de produção em execução.

**Topics**
+ [Etapa 1: Criar uma função do AWS Lambda](#rds-create-lambda-function)
+ [Etapa 2: Criar uma regra](#rds-create-rule)
+ [Etapa 3: Testar a regra](#rds-test-rule)

### Etapa 1: Criar uma função do AWS Lambda
<a name="rds-create-lambda-function"></a>

Crie uma função Lambda para registrar em log os eventos de alteração de estado. Você especifica essa função quando cria sua regra.

**Como criar uma função do Lambda**

1. Abra o console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Se você estiver começando a usar o Lambda, verá uma página de boas-vindas. Escolha **Get Started Now (Começar agora)**. Do contrário, escolha **Create function (Criar função)**.

1. Escolha **Author from scratch**.

1. Na página **Create function (Criar função)**, faça o seguinte:

   1. Digite um nome e uma descrição para a função Lambda. Por exemplo, atribua à função o nome **RDSInstanceStateChange**. 

   1. Em **Runtime** (Tempo de execução), selecione **Node.js 14x**. 

   1. Em **Architecture** (Arquitetura), escolha **x86\$164**.

   1. Em **Execution role** (Perfil de execução), realize um dos seguintes procedimentos:
      + Escolha **Create a new role with basic Lambda permissions (Criar uma nova função com permissões básicas do Lambda)**.
      + Em **Existing role** (Perfil existente), escolha **Use an existing role** (Usar um perfil existente). Escolha o perfil que deseja usar. 

   1. Escolha **Create function**.

1. Na página **RDSinstAncestateChange**, faça o seguinte:

   1. Em **Code source** (Fonte do código), selecione **index.js**. 

   1. No painel de **index.js**, exclua o código existente.

   1. Insira o seguinte código:

      ```
      console.log('Loading function');
      
      exports.handler = async (event, context) => {
          console.log('Received event:', JSON.stringify(event));
      };
      ```

   1. Escolha **Deploy (Implantar)**.

### Etapa 2: Criar uma regra
<a name="rds-create-rule"></a>

Crie uma regra para executar sua função do Lambda sempre que executar uma instância do Amazon RDS.

**Como criar a regra do EventBridge**

1. Abra o console do Amazon EventBridge em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. No painel de navegação, escolha **Regras**.

1. Escolha **Create rule**.

1. Insira um nome e uma descrição para a regra. Por exemplo, digite **RDSInstanceStateChangeRule**.

1. Escolha **Rule with an event pattern** (Regra com padrão de eventos), depois selecione **Next** (Próximo).

1. Em **Origem do evento**, escolha **Eventos da AWS ou eventos de parceiro do EventBridge**.

1. Role para baixo até a seção **Event pattern** (Padrão de eventos).

1. Para **Origem do evento**, escolha **Serviços da AWS**.

1. Em **Serviço da AWS**, escolha **Relational Database Service (RDS)**.

1. Em **Event type** (Tipo de evento), escolha **RDS DB Instance Event** (Evento de instância de banco de dados do RDS).

1. Mantenha o padrão de eventos predefinido. Escolha **Próximo**.

1. Em **Target types** (Tipos de destino), escolha **AWS service** (Serviço da AWS).

1. Para **Selecionar um destino**, escolha **Função do Lambda**.

1. Em **Function** (Função), selecione a função do Lambda que você criou. Em seguida, escolha **Próximo**.

1. Em **Configure tags** (Configurar etiquetas), escolha **Next** (Próximo).

1. Revise as etapas da sua regra. Em seguida, escolha **Create rule** (Criar regra).

### Etapa 3: Testar a regra
<a name="rds-test-rule"></a>

Para testar sua regra, desligue uma instância de banco de dados do RDS. Depois de esperar alguns minutos para a instância ser inicializada e executada, verifique se a sua função do Lambda foi chamada.

**Como testar a regra ao interromper uma instância de banco de dados**

1. Abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Interrupção de uma instância de banco de dados do RDS.

1. Abra o console do Amazon EventBridge em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. No painel de navegação, escolha **Rules** (Regras) e escolha o nome da regra criada por você.

1. Em **Detalhes da regra**, escolha **Monitoramento**.

   O sistema redireciona você para o console do Amazon CloudWatch. Se você não for redirecionado, clique em **Visualizar as métricas no CloudWatch**.

1. Em **All metrics** (Todas as métricas), escolha o nome da regra que você criou.

   O gráfico deve indicar que a regra foi invocada.

1. No painel de navegação, escolha **Log groups (Grupos de logs)**.

1. Escolha o nome do grupo de logs para a sua função do Lambda (**/aws/lambda/*nome-da-função***).

1. Escolha o nome do fluxo de logs para visualizar os dados fornecidos pela função para a instância que você iniciou. Será exibido um resultado semelhante ao seguinte:

   ```
   {
       "version": "0",
       "id": "12a345b6-78c9-01d2-34e5-123f4ghi5j6k",
       "detail-type": "RDS DB Instance Event",
       "source": "aws.rds",
       "account": "111111111111",
       "time": "2021-03-19T19:34:09Z",
       "region": "us-east-1",
       "resources": [
           "arn:aws:rds:us-east-1:111111111111:db:testdb"
       ],
       "detail": {
           "EventCategories": [
               "notification"
           ],
           "SourceType": "DB_INSTANCE",
           "SourceArn": "arn:aws:rds:us-east-1:111111111111:db:testdb",
           "Date": "2021-03-19T19:34:09.293Z",
           "Message": "DB instance stopped",
           "SourceIdentifier": "testdb",
           "EventID": "RDS-EVENT-0087"
       }
   }
   ```

   Para obter mais exemplos de eventos do RDS no formato JSON, consulte [Visão geral dos eventos para Aurora](working-with-events.md#rds-cloudwatch-events.sample).

1. (Opcional) Ao terminar, você poderá abrir o console do Amazon RDS e iniciar a instância interrompida.