Anunciamos
Enviar eventos para o Amazon CloudWatch Events
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:
Instale o Node.js. Para obter mais informações sobre como instalar Node.js, consulte o website de Node.js
. Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhadas, consulte Carregar credenciais em Node.js do arquivo de credenciais compartilhado.
Crie uma função Lambda usando o modelo hello-world para servir como destino para eventos. Para saber como, consulte Etapa 1: Criar uma função do AWS Lambda no Guia do usuário do Amazon CloudWatch Events.
Crie um perfil do IAM cuja política conceda permissão para o CloudWatch Events e que inclua
events.amazonaws.com
como uma entidade confiável. Para obter mais informações sobre como criar um perfil do IAM, consulte Criação de uma função para delegar permissões a um serviço da AWS no Guia do usuário do IAM.
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