Uso de filtros de suscripción en Registros 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.

Uso de filtros de suscripción en Registros 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 eliminar filtros para eventos de registro en Registros de CloudWatch.

El escenario

Las suscripciones proporcionan acceso a la fuente en tiempo real de eventos de registro de Registros de CloudWatch y envían esa fuente a otros servicios como, por ejemplo, un flujo de Amazon Kinesis o AWS Lambda, para el procesamiento, el análisis o la carga personalizados en otros sistemas. Un filtro de suscripción define el patrón que se utilizará para filtrar los eventos de registro que se envían a su recurso de AWS.

En este ejemplo se van a utilizar una serie de módulos de Node.js para enumerar, crear y administrar un filtro de suscripción en Registros de CloudWatch. El destino de los eventos de registro es una función de Lambda. Los módulos de Node.js usan el SDK para JavaScript para administrar filtros de suscripción mediante los métodos de clase de cliente de CloudWatchLogs siguientes:

Para obtener más información, consulte Procesamiento en tiempo real de datos de registro con suscripciones en la Guía del usuario de Registros 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 como destino para los eventos de registro. Tendrá que utilizar el ARN de esta función. Para obtener más información acerca de cómo configurar una función de Lambda, consulte Filtros de suscripción con AWS Lambda en la Guía del usuario de Registros de Amazon CloudWatch.

  • Cree un rol de IAM cuya política conceda permiso para invocar la función de Lambda que ha creado y conceda acceso completo a Registros de CloudWatch o aplique la siguiente política a la función de ejecución que cree para la función de Lambda. 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": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "*" ] } ] }

Descripción de los filtros de suscripción existentes

Cree un módulo de Node.js con el nombre de archivo cwl_describesubscriptionfilters.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a Registros de CloudWatch, cree un objeto de servicio de AWS.CloudWatchLogs. Cree un objeto JSON que contenga los parámetros necesarios para describir sus filtros existentes, como el nombre del grupo de registros y el número máximo de filtros que desea describir. Llame al método describeSubscriptionFilters.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { logGroupName: "GROUP_NAME", limit: 5, }; cwl.describeSubscriptionFilters(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.subscriptionFilters); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cwl_describesubscriptionfilters.js

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

Creación de un filtro de suscripción

Cree un módulo de Node.js con el nombre de archivo cwl_putsubscriptionfilter.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a Registros de CloudWatch, cree un objeto de servicio de AWS.CloudWatchLogs. Cree un objeto JSON que contenga los parámetros necesarios para crear un filtro, como el ARN de la función de Lambda de destino, el nombre del filtro, el patrón de cadena para el filtrado y el nombre del grupo de registros. Llame al método putSubscriptionFilters.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { destinationArn: "LAMBDA_FUNCTION_ARN", filterName: "FILTER_NAME", filterPattern: "ERROR", logGroupName: "LOG_GROUP", }; cwl.putSubscriptionFilter(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 cwl_putsubscriptionfilter.js

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

Eliminación de un filtro de suscripción

Cree un módulo de Node.js con el nombre de archivo cwl_deletesubscriptionfilters.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a Registros de CloudWatch, cree un objeto de servicio de AWS.CloudWatchLogs. Cree un objeto JSON que contenga los parámetros necesarios para eliminar un filtro, como los nombres del filtro y el grupo de registros. Llame al método deleteSubscriptionFilters.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { filterName: "FILTER", logGroupName: "LOG_GROUP", }; cwl.deleteSubscriptionFilter(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 cwl_deletesubscriptionfilter.js

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