/** * @fileoverview * * This CloudFormation Trigger creates a handler which awaits the other handlers * specified in the `MODULES` env var, located at `./${MODULE}`. */ /** * The names of modules to load are stored as a comma-delimited string in the * `MODULES` env var. */ const moduleNames = process.env.MODULES.split(','); /** * The array of imported modules. */ const modules = moduleNames.map((name) => require(`./${name}`)); /** * This async handler iterates over the given modules and awaits them. * * @see https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html#nodejs-handler-async * @type {import('@types/aws-lambda').APIGatewayProxyHandler} * */ exports.handler = async (event, context) => { /** * Instead of naively iterating over all handlers, run them concurrently with * `await Promise.all(...)`. This would otherwise just be determined by the * order of names in the `MODULES` var. */ await Promise.all(modules.map((module) => module.handler(event, context))); return event; };