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.

Use as etapas a seguir para criar uma regra do CloudWatch Events que é acionada em um evento emitido por um produto da AWS.

Para criar uma regra que é acionada em um evento:

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

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

  3. Selecione Create rule (Criar regra).

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

    1. Escolha Padrão de evento.

    2. Em Service Name (Nome do serviço), selecione 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 a função do IAM necessária para o seu evento ser executado:

    • Para criar uma função do IAM automaticamente, escolha Create a new role for this specific resource (Criar nova função para este recurso específico).

    • Para usar uma função do IAM que você criou antes, escolha Use existing role (Usar função 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. Selecione 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 Execution role (Função de execução), selecione Create a new role with basic Lambda permissions (Criar uma função com permissões básicas do Lambda). Em Existing role (Função existente), selecione sua função de execução básica. Caso contrário, crie uma função de execução básica.

    4. Escolha Create function.

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

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

    2. Clique com o botão direito do mouse em index.js e selecione Open (Abrir).

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

    4. Insira o seguinte código:

      console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
    5. 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, selecione Rules (Regras).

  3. Selecione Create rule (Criar regra).

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

  5. Em Define pattern (Definir padrão), faça o seguinte:

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

    2. Escolha Pre-defined pattern by service (Padrão predefinido por serviço).

    3. Em Service provider (Provedor de serviços), escolha AWS.

    4. Em Service Name (Nome do serviço), selecione Relational Database Service (RDS).

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

  6. Em Select event bus (Selecionar barramento de eventos), escolha AWS default event bus (Barramento de eventos padrão da AWS). Quando um serviço da AWS em sua conta emite um evento, ele sempre vai para o barramento de eventos padrão da sua conta.

  7. Em Target (Destino), escolha Lambda function (Função Lambda).

  8. Em Function (Função), selecione a função do Lambda que você criou.

  9. Escolha Create (Criar OpsItem).

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, selecione Rules (Regras) e selecione o nome da regra criada por você.

  5. Em Rule details (Detalhes da regra), selecione Metrics for the rule (Métricas para a regra).

    O sistema redireciona você para o console do Amazon 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.