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

Uso de filtros de suscripción en Amazon CloudWatch Logs

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 CloudWatch Logs.

El escenario

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

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

Para obtener más información acerca de las suscripciones a CloudWatch Logs, consulteProcesamiento en tiempo real de datos de registros con suscripcionesen laGuía del usuario de Amazon CloudWatch Logs.

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 Lambda como destino para los eventos de registro. Tendrá que utilizar el ARN de esta función. Para obtener más información sobre la configuración de una función Lambda, consulteFiltros de suscripción conAWS Lambdaen laGuía del usuario de Amazon CloudWatch Logs.

  • Cree un rol de IAM cuya política concede permiso para invocar la función Lambda que ha creado y conceda acceso completo a CloudWatch Logs o aplique la siguiente política al rol de ejecución que cree para la función Lambda. Para obtener más información sobre la creación de un rol de IAM, consulteCreación de un rol para delegar permisos a unAWSService (Servicio)en laIAM User Guide.

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 acceder a CloudWatch Logs, cree unAWS.CloudWatchLogsobjeto de servicio. 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 muestra 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 acceder a CloudWatch Logs, cree unAWS.CloudWatchLogsobjeto de servicio. Cree un objeto JSON que contenga los parámetros necesarios para crear un filtro, como el ARN de la función 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 muestra 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 acceder a CloudWatch Logs, cree unAWS.CloudWatchLogsobjeto de servicio. 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 muestra se puede encontrar aquí en GitHub.