

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Envío de eventos a Amazon CloudWatch Events
<a name="cloudwatch-examples-sending-events"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="cloudwatch-examples-sending-events-scenario"></a>

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:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putRule-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putRule-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putTargets-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putTargets-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putEvents-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putEvents-property)

Para obtener más información acerca del uso de Eventos de CloudWatch, consulte [Agregar eventos con PutEvents](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/AddEventsPutEvents.html) la *Guía del usuario de Eventos de Amazon CloudWatch*.

## Tareas previas necesarias
<a name="cloudwatch-examples-sending-events-prerequisites"></a>

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](https://nodejs.org).
+ 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](loading-node-credentials-shared.md).
+ 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/LogEC2InstanceState.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

Utilice la siguiente política de funciones al crear la función de IAM.

------
#### [ JSON ]

****  

```
{
   "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.

------
#### [ JSON ]

****  

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

------

## Creación de una regla programada
<a name="cloudwatch-examples-sending-events-rules"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_putrule.js).

## Agregar un destino de la función de AWS Lambda
<a name="cloudwatch-examples-sending-events-targets"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_puttargets.js).

## Envío de eventos
<a name="cloudwatch-examples-sending-events-putevents"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_putevents.js).