Skip to content

Instantly share code, notes, and snippets.

@jamesslomka
Created October 16, 2022 13:39
Show Gist options
  • Save jamesslomka/8a03b9c71d9744a1a074bbbfb76909b3 to your computer and use it in GitHub Desktop.
Save jamesslomka/8a03b9c71d9744a1a074bbbfb76909b3 to your computer and use it in GitHub Desktop.
Wrap all lambdas in the container with middleware
import { datadog } from 'datadog-lambda-js';
import { Registry } from '../../Registry';
import { TYPES } from '../../Types';
import {
AccessLoggerMiddlewareFactory,
LambdaUtils,
} from '@ssense/serverless-middlewares';
import { AccessLogger } from '@ssense/logger';
import { Handler } from 'aws-lambda';
import { LambdaHandler } from 'lambdas/LambdaHandler';
const container = Registry.getContainer();
const accessLogger = container.get<AccessLogger>(TYPES.AccessLogger);
const lambdas = container
.getAll<LambdaHandler>(TYPES.Lambda)
.reduce((acc: { [name: string]: Handler }, lambda) => {
if (!acc[lambda.lambdaName]) {
acc[lambda.lambdaName] = datadog(lambda.handler);
}
return acc;
}, {});
const wrappedLambdas = LambdaUtils.wrapWithMiddyMiddlewares(lambdas, [
AccessLoggerMiddlewareFactory.createApiGatewayAccessLoggerMiddleware(
accessLogger
),
]);
export = { ...wrappedLambdas };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment