Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const { backendConnector, consoleLogger } = require('@instana/serverless');
const arnParser = require('./arn');
const identityProvider = require('./identity_provider');
const metrics = require('./metrics');
const triggers = require('./triggers');
const processResult = require('./process_result');
const { tracing } = instanaCore;
const { constants, spanBuffer } = tracing;
let logger = consoleLogger;
let config;
// Initialize instrumentations early to allow for require statements after our package has been required but before the
// actual instana.wrap(...) call.
instanaCore.preInit();
/**
* Wraps an AWS Lambda handler so that metrics and traces are reported to Instana. This function will figure out if the
* Lambda handler uses the callback style or promise/async function style by inspecting the number of function arguments
* the function receives.
*/
exports.wrap = function wrap(_config, originalHandler) {
/* eslint-disable no-unused-vars */
if (arguments.length === 1) {
originalHandler = _config;
_config = null;
}
// Apparently the AWS Lambda Node.js runtime does not inspect the handlers signature for the number of arguments it
// accepts. But to be extra safe, we strive to return a function with the same number of arguments anyway.
switch (originalHandler.length) {
exports.currentSpan = function getHandleForCurrentSpan() {
return instanaNodeJsCore.tracing.getHandleForCurrentSpan();
};
exports.sdk = instanaNodeJsCore.tracing.sdk;
exports.setLogger = function(logger) {
config.logger = logger;
log.init(config, true);
};
if (
process.env.INSTANA_EARLY_INSTRUMENTATION != null &&
process.env.INSTANA_EARLY_INSTRUMENTATION.toLowerCase() === 'true'
) {
instanaNodeJsCore.preInit();
}