Criar uma regra que é acionada em um evento do Amazon RDS - Amazon Relational Database Service

Criar uma regra que é acionada em um evento do Amazon RDS

Com o Amazon CloudWatch Events e o Amazon EventBridge, é possível automatizar os produtos da AWS e responder a eventos do sistema, como problemas de disponibilidade da aplicação ou alterações de recursos.

Criação de regras para enviar eventos do Amazon RDS para o CloudWatch Events

É possível gravar regras simples para indicar quais eventos do Amazon RDS são interessantes para você e quais ações automatizadas devem ser realizadas quando um evento corresponder a uma regra. É possível definir uma variedade de destinos, como uma função do AWS Lambda ou um tópico do Amazon SNS, que recebem eventos no formato JSON. Por exemplo, é possível configurar o Amazon RDS para enviar eventos ao CloudWatch Events ou Amazon EventBridge sempre que uma instância de banco de dados é criada ou excluída. Para obter mais informações, consulte o Guia do usuário de do Amazon CloudWatch Events e o Guia do usuário do Amazon EventBridge.

Para criar uma regra que é acionada em um evento do RDS:
  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Em Events (Eventos), no painel de navegação, escolha Rules (Regras).

  3. Escolha Create rule (Criar regra).

  4. Em Origem do evento, faça o seguinte:

    1. Escolha Event Pattern (Padrão de evento).

    2. Em Service Name (Nome do serviço), escolha Relational Database Service (RDS).

    3. Em Event Type (Tipo de evento), escolha o tipo de recurso do Amazon RDS que aciona o evento. Por exemplo, se uma instância de banco de dados acionar o evento, escolha RDS DB Instance Event (Evento de instância de banco de dados do RDS).

  5. Em Targets (Destinos), escolha Add Target (Adicionar destino) e escolha o serviço da AWS que deve agir quando um evento do tipo selecionado é detectado.

  6. Em outros campos nesta seção, insira informações específicas para esse tipo de destino, se necessário.

  7. Para muitos tipos de destino, o CloudWatch Events precisa de permissões para enviar eventos ao destino. Nesses casos, o CloudWatch Events pode criar o perfil do IAM necessário à execução de seu evento:

    • Para criar um perfil do IAM automaticamente, escolha Create a new role for this specific resource (Criar novo perfil para este recurso específico).

    • Para usar um perfil do IAM que você criou antes, escolha Use existing role (Usar perfil existente).

  8. Opcionalmente, repita as etapas de 5 a 7 para adicionar outro destino a esta regra.

  9. Escolha Configure details (Configurar detalhes). Em Definição de regra, digite um nome e uma descrição para a regra.

    O nome da regra deve ser exclusivo dentro dessa região.

  10. Escolha Create rule (Criar regra).

Para obter mais informações, consulte Criação de uma regra do CloudWatch Events que é acionada em um evento no Guia do usuário do Amazon CloudWatch.

Tutorial: Registro de alterações de estado de uma instância de banco de dados usando o Amazon EventBridge

Neste tutorial, você pode criar uma função do AWS Lambda que registra as alterações de estado para uma instância do Amazon RDS. 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.

Etapa 1: Criar uma função do AWS Lambda

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/.

  2. 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).

  3. Escolha Author from scratch.

  4. 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.

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

    3. Em Architecture (Arquitetura), escolha x86_64.

    4. 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.

    5. Escolha Create function.

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

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

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

    3. Insira o seguinte código:

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

Etapa 2: Criar uma regra

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/.

  2. No painel de navegação, escolha Rules (Regras).

  3. Escolha Create rule (Criar regra).

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

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

  6. Em Event source (Origem do evento), escolha Eventos da AWS ou eventos de parceiro do EventBridge.

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

  8. Para Event source (Origem do evento), escolha Serviços da AWS.

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

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

  11. Mantenha o padrão de eventos predefinido. Em seguida, escolha Next (Próximo).

  12. Em Target types (Tipos de destinos), escolha AWS service (Serviço da ).

  13. Em Select a target (Selecionar um destino), escolha Lambda function (Função do Lambda).

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

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

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

Etapa 3: Testar a regra

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/.

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

  3. Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

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

  5. 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.

  6. 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.

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

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

  9. 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 Amazon RDS.

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