Package Exports
- @dazn/lambda-powertools-correlation-ids
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dazn/lambda-powertools-correlation-ids) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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 @dazn/lambda-powertools-correlation-ids
API
const CorrelationIds = require('@dazn/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, @dazn/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:
@dazn/lambda-powertools-loggerincludes recorded correlation IDs in logs@dazn/lambda-powertools-http-clientincludes recorded correlation IDs as HTTP headers when you make a HTTP request@dazn/lambda-powertools-sns-clientincludes recorded correlation IDs as SNS message attributes when you publish a message to SNS (ie.SNS.publish)@dazn/lambda-powertools-kinesis-clientinjects recorded correlation IDs as part of the event payload when you publish event(s) to Kinesis (ie.Kinesis.putRecordandKinesis.putRecords)@dazn/lambda-powertools-step-functions-clientinjects recorded correlation IDs as part of the payload when you start a Step Functions execution (ie.SFN.startExecution)@dazn/lambda-powertools-lambda-clientinjects recorded correlation IDs as part of the invocation payload when you invoke a Lambda function directly (ie.Lambda.invokeandLambda.invokeAsync)