Enviar eventos para o Amazon CloudWatch Events - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Enviar eventos para o Amazon CloudWatch Events

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como criar e atualizar uma regra usada para acionar um evento.

  • Como definir um ou mais destinos para responder a um evento.

  • Como enviar eventos correspondentes aos destinos para processamento.

O cenário

O CloudWatch Events oferece um fluxo quase em tempo real de eventos do sistema que descrevem as mudanças nos recursos da Amazon Web Services para vários destinos. Com regras simples, é possível corresponder eventos e roteá-los para um ou mais fluxos ou funções de destino.

Neste exemplo, uma série de módulos Node.js é usada para enviar eventos ao CloudWatch Events. Os módulos Node.js usam o SDK para JavaScript para gerenciar instâncias usando esses métodos da classe de cliente :

Para obter mais informações sobre o CloudWatch Events, consulte Adicionar eventos com o PutEvents no Guia do usuário do Amazon CloudWatch Events.

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

Use a política de função a seguir ao criar a função do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

Use o relacionamento de confiança a seguir ao criar a função do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Criar uma regra programada

Crie um módulo do Node.js com o nome de arquivo cwe_putrule.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o CloudWatch Events, crie um objeto de serviço de AWS.CloudWatchEvents. Crie um objeto JSON que contenha os parâmetros necessários para especificar a nova regra programada, que inclua o seguinte:

  • Um nome para a regra

  • O ARN da função do &IAM; que você criou anteriormente

  • Uma expressão para programar o acionamento da regra a cada cinco minutos

Chame o método putRule para criar a regra. O retorno de chamada retorna o ARN da regra nova ou atualizada.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; cwevents.putRule(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node cwe_putrule.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Adicionar o destino da função AWS Lambda

Crie um módulo do Node.js com o nome de arquivo cwe_puttargets.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o CloudWatch Events, crie um objeto de serviço de AWS.CloudWatchEvents. Crie um objeto JSON que contém os parâmetros necessários para especificar a regra à qual você deseja anexar o destino, inclusive o ARN da função do Lambda criada. Chame o método putTargets do objeto de serviço do AWS.CloudWatchEvents.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", Id: "myCloudWatchEventsTarget", }, ], }; cwevents.putTargets(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node cwe_puttargets.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Enviar eventos

Crie um módulo do Node.js com o nome de arquivo cwe_putevents.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o CloudWatch Events, crie um objeto de serviço de AWS.CloudWatchEvents. Crie um objeto JSON que contenha os parâmetros necessários para enviar eventos. Para cada caso, inclua a fonte do evento, os ARNs de todos os recursos afetados pelo evento e os detalhes do evento. Chame o método putEvents do objeto de serviço do AWS.CloudWatchEvents.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: ["RESOURCE_ARN"], Source: "com.company.app", }, ], }; cwevents.putEvents(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); } });

Para executar o exemplo, digite o seguinte na linha de comando.

node cwe_putevents.js

Este código de exemplo pode ser encontrado aqui no GitHub.