@benie/lambda-lib
Version:
Builders and tools for creating AWS Lambda function handlers that provides automation for things such as logging, instrumentation and parameters propagation
42 lines (33 loc) • 1.11 kB
JavaScript
const AWS = require('aws-sdk');
const Kinesis = new AWS.Kinesis();
const log = require('../log');
const correlationIds = require('../correlation-ids');
function tryJsonParse(data) {
if ( data && (typeof data === 'string') ) {
return null;
}
try {
return JSON.parse(data);
} catch (err) {
log.warn('only JSON string data can be modified to insert correlation IDs');
return null;
}
}
function addCorrelationIds(data) {
// only do with with JSON string data
const payload = tryJsonParse(data);
if (!payload) {
return data;
}
const context = correlationIds.get();
const newData = Object.assign({ __context__: context }, payload);
return JSON.stringify(newData);
}
function putRecord(params, cb) {
const newData = addCorrelationIds(params.Data);
params = Object.assign({}, params, { Data: newData });
log.info('Publishing to Kinesis stream', params);
return Kinesis.putRecord(params, cb);
}
const client = Object.assign({}, Kinesis, { putRecord });
module.exports = client;