Envío de eventos a Eventos de Amazon CloudWatch - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Envío de eventos a Eventos de Amazon CloudWatch

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo crear y actualizar una regla utilizada para desencadenar un evento.

  • Cómo definir uno o varios destinos para responder a un evento.

  • Cómo enviar eventos que se corresponden con los destinos para la gestión.

El escenario

Amazon CloudWatch Events proporciona un flujo de eventos de sistema casi en tiempo real que describen cambios en los recursos de Amazon Web Services a cualquiera de los distintos destinos. Mediante reglas sencillas, puede asignar los eventos y dirigirlos a uno o más flujos o funciones de destino.

En este ejemplo se van a utilizar una serie de módulos de Node.js para enviar eventos a CloudWatch Events. Los módulos de Node.js usan el SDK para JavaScript para gestionar instancias mediante los métodos de clase de cliente CloudWatchEvents siguientes:

Para obtener más información acerca del uso de Eventos de CloudWatch, consulte Agregar eventos con PutEvents la Guía del usuario de Eventos de Amazon CloudWatch.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Utilice la siguiente política de funciones al crear la función de 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" } ] }

Utilice la siguiente relación de confianza al crear la función de IAM.

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

Creación de una regla programada

Cree un módulo de Node.js con el nombre de archivo cwe_putrule.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a CloudWatch Events, cree un objeto de servicio de AWS.CloudWatchEvents. Cree un objeto JSON que contenga los parámetros necesarios para especificar la nueva regla programada, que incluye lo siguiente:

  • Un nombre para la regla

  • El ARN del rol de IAM que ha creado anteriormente

  • Una expresión para programar la activación de la regla cada cinco minutos

Llame al método putRule para crear la regla. La devolución de llamada devuelve al ARN o la regla nueva o actualizada.

// 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cwe_putrule.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Agregar un destino de la función de AWS Lambda

Cree un módulo de Node.js con el nombre de archivo cwe_puttargets.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a CloudWatch Events, cree un objeto de servicio de AWS.CloudWatchEvents. Cree un objeto JSON que contenga los parámetros necesarios para especificar la regla a la que desea asociar el destino, incluido el ARN de la función de Lambda que ha creado. Llame al método putTargets del objeto de servicio de 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cwe_puttargets.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Envío de eventos

Cree un módulo de Node.js con el nombre de archivo cwe_putevents.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a CloudWatch Events, cree un objeto de servicio de AWS.CloudWatchEvents. Cree un objeto JSON que contenga los parámetros necesarios para enviar eventos. Para cada evento, incluya el origen del evento, los ARN de cualquier recurso afectado por el evento y detalles del evento. Llame al método putEvents del objeto de servicio de 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cwe_putevents.js

Este código de ejemplo se puede encontrar aquí en GitHub.