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

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Envío de eventos a Amazon CloudWatch Events

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

CloudWatch Events proporciona un flujo casi en tiempo real de eventos del sistema que describen cambios en recursos de Amazon Web Services en diversos 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 eventos de CloudWatch. Los módulos de Node.js usan el SDK para JavaScript para administrar instancias mediante estos métodos deCloudWatchEventsclase de cliente:

Para obtener más información acerca de eventos de CloudWatch, consulteAgregar eventos con PutEventsen laGuía del usuario de Amazon CloudWatch Events.

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 acceder a CloudWatch Events, cree unAWS.CloudWatchEventsobjeto de servicio. 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 de la función de IAM 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 muestra se puede encontrar aquí en GitHub.

Añadir unAWS Lambdadestino de la función

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 acceder a CloudWatch Events, cree unAWS.CloudWatchEventsobjeto de servicio. 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 Lambda creada. 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 muestra 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 acceder a CloudWatch Events, cree unAWS.CloudWatchEventsobjeto de servicio. 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 muestra se puede encontrar aquí en GitHub.