Anunciamos
Envío de eventos a Eventos de Amazon CloudWatch
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:
Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el sitio web de Node.js
. Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte Carga de credenciales en Node.js desde el archivo de credenciales compartidas.
Cree una función de Lambda usando el esquema hello-world, que actuará como destino de los eventos. Para obtener información sobre cómo hacerlo, consulte Paso 1: Crear una función de AWS Lambda en la Guía del usuario de Amazon CloudWatch Events.
Cree un rol de IAM cuya política conceda permiso a CloudWatch Events y que incluya
events.amazonaws.com
como entidad de confianza. Para obtener más información sobre cómo crear un rol de IAM, consulte Creación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.
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