Estoy intentando guardar nuestros registros de Cloudwatch en una base de datos de Postgres local. Actualmente estoy exportando registros a S3 y guardándolos en DynamoDB. Mi requisito ahora es conservarlo en nuestra base de datos, usando el nodo y AWS js-SDK. No soy muy bueno con node y js-SDK, así que agradeceré mucho cualquier idea.
Probé una implementación simple.
const pools = require('../src/common/db'), const AWS = require('aws-sdk'); // set the cwl let cwl = new AWS.CloudWatchLogs({ region: 'us-east-1', accessKeyId: 'ABCD1234', secretAccessKey: 'MNBV76543', Bucket: 'My_bucket' }); // Get the events cwl.getLogEvents({ logGroupName: 'OurLogGroupname', logStreamName: 'specifiedLogstream' }, (error, success ) =>{ if(error){ console.log(error) } console.log(success) }) // Try saving to db let sql = '' pools.query_db('abc', 'INSERT INTO logging.aws_logs(request_id, duration, billed_duration) VALUES (?,?,?)', function(err, res){ if(err) return callback(err); callback(); })Preferiría la siguiente manera, si realmente desea almacenar todos los mensajes de Cloudwatch en una base de datos:
Agregue una suscripción a su Cloudwatch LogGroup
Esta suscripción se puede configurar para activar un Lambda
La Lambda tendrá la siguiente lógica:
Un buen ejemplo de cómo extraer el mensaje de una invocación de suscripción de Cloudwatch sería el de enviar esos registros a Opensearch (buscar los planos)