sdk_contrib/fastify/lib/private/configure-aws-x-ray-sync.js (37 lines of code) (raw):
// @ts-check
const AWSXRay = require('aws-xray-sdk-core');
const { middleware: mwUtils } = AWSXRay;
/**
*
* @param {import('fastify').FastifyInstance} fastify
* @param {*} opts
*/
module.exports = function configureAWSXRaySync(fastify, opts) {
const defaultOptions = {
automaticMode: true,
logger: fastify.log,
};
const localOptions = { ...defaultOptions, ...opts };
if (localOptions.logger) {
AWSXRay.setLogger(localOptions.logger);
} else {
AWSXRay.setLogger(fastify.log);
}
const segmentName = localOptions.segmentName;
if (!segmentName) {
throw new Error('segmentName is required');
}
mwUtils.setDefaultName(segmentName);
if (localOptions.automaticMode) {
AWSXRay.enableAutomaticMode();
} else {
AWSXRay.enableManualMode();
}
if (localOptions.plugins) {
AWSXRay.config(localOptions.plugins);
}
if (localOptions.captureAWS) {
AWSXRay.captureAWS(require('aws-sdk'));
}
if (localOptions.captureHTTP) {
AWSXRay.captureHTTPsGlobal(require('http'), true);
AWSXRay.captureHTTPsGlobal(require('https'), true);
}
if (localOptions.capturePromises) {
AWSXRay.capturePromise();
}
};