@michaelfecher/lambda-powertools-correlation-ids v1.28.1
lambda-powertools-correlation-ids
A helper module for recording correlation IDs.
Main features:
allows you to fetch, update, and delete correlation IDs
respects convention for correlation IDs - i.e.
x-correlation-Manually enable/disable debug logging (
debug-log-enabled) to be picked up by other/downstream middlewareallows you to store more than one correlation IDs, which allows you to correlate logs on multiple dimensions (e.g. by
x-correlation-user-id, orx-correlation-order-id, etc.)
Getting Started
Install from NPM: npm install @michaelfecher/lambda-powertools-correlation-ids
API
const CorrelationIds = require('@michaelfecher/lambda-powertools-correlation-ids')
// automatically inserts 'x-correlation-' prefix if not provided
CorrelationIds.set('id', '12345678') // records id as x-correlation-id
CorrelationIds.set('x-correlation-username', 'theburningmonk') // records as x-correlation-username
// Manully enable debug logging (debug-log-enabled)
CorrelationIds.debugLoggingEnabled = true
const myCorrelationIds = CorrelationIds.get()
// {
// 'x-correlation-id': '12345678',
// 'x-correlation-username': 'theburningmonk',
// 'debug-log-enabled': 'true'
// }
CorrelationIds.clearAll() // removes all recorded correlation IDs
CorrelationIds.replaceAllWith({ // bypasses the 'x-correlation-' convention
'debug-log-enabled': 'true',
'User-Agent': 'jest test'
})
// Disable debug logging
CorrelationIds.debugLoggingEnabled = falseIn practice, you're likely to only need set when you want to record correlation IDs from your function.
The middleware, @michaelfecher/lambda-powertools-middleware-correlation-ids, would automatically capture the correlation IDs from the invocation event for supported event sources:
API Gateway (via HTTP headers)
Kinesis (via the JSON payload)
SNS (via message attributes)
any invocation event with the special field
__context__(which is how we inject them with the Step Functions and Lambda clients below)
Whilst other power tools would use get to make use of the correlation IDs:
@michaelfecher/lambda-powertools-loggerincludes recorded correlation IDs in logs@michaelfecher/lambda-powertools-http-clientincludes recorded correlation IDs as HTTP headers when you make a HTTP request@michaelfecher/lambda-powertools-sns-clientincludes recorded correlation IDs as SNS message attributes when you publish a message to SNS (ie.SNS.publish)@michaelfecher/lambda-powertools-kinesis-clientinjects recorded correlation IDs as part of the event payload when you publish event(s) to Kinesis (ie.Kinesis.putRecordandKinesis.putRecords)@michaelfecher/lambda-powertools-step-functions-clientinjects recorded correlation IDs as part of the payload when you start a Step Functions execution (ie.SFN.startExecution)@michaelfecher/lambda-powertools-lambda-clientinjects recorded correlation IDs as part of the invocation payload when you invoke a Lambda function directly (ie.Lambda.invokeandLambda.invokeAsync)
5 years ago