@scloud/lambda-local
Version:
Run typical Lambda handlers locally.
61 lines • 6.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.scheduledLocal = void 0;
// eslint-disable-next-line import/no-extraneous-dependencies
const express_1 = __importDefault(require("express"));
const eventTemplate = {
version: '0',
id: '0',
'detail-type': 'Scheduled Event',
source: 'aws.events',
account: '123456789012',
time: '1970-01-01T00:00:00Z',
region: 'us-east-1',
resources: [],
detail: {},
};
const contextTemplate = {
awsRequestId: '',
callbackWaitsForEmptyEventLoop: false,
functionName: 'test',
functionVersion: '',
invokedFunctionArn: '',
logGroupName: '',
logStreamName: '',
memoryLimitInMB: '',
getRemainingTimeInMillis: () => 0,
done: () => { },
fail: () => { },
succeed: () => { },
};
// eslint-disable-next-line no-unused-vars
function scheduledLocal(handler) {
const port = +(process.env.port || '3000');
const app = (0, express_1.default)();
app.all('/*', async (req, res) => {
try {
// Invoke the function handler:
const result = await handler(eventTemplate, contextTemplate);
if (result) {
console.log('Result:');
console.log(JSON.stringify(result));
}
// Send the response
res.status(200).send(JSON.stringify(result));
}
catch (e) {
// Log the error and send a 500 response
console.log(e);
console.log(e.stack);
res.status(500).send(`${e}`);
}
});
app.listen(port, () => {
console.log(`Scheduled Lambda handler can be invoked via POST http://localhost:${port}. The request body will be sent as an SQS message body`);
});
}
exports.scheduledLocal = scheduledLocal;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkTG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZWR1bGVkTG9jYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTZEO0FBQzdELHNEQUFxRDtBQUtyRCxNQUFNLGFBQWEsR0FBbUI7SUFDcEMsT0FBTyxFQUFFLEdBQUc7SUFDWixFQUFFLEVBQUUsR0FBRztJQUNQLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsTUFBTSxFQUFFLFlBQVk7SUFDcEIsT0FBTyxFQUFFLGNBQWM7SUFDdkIsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QixNQUFNLEVBQUUsV0FBVztJQUNuQixTQUFTLEVBQUUsRUFBRTtJQUNiLE1BQU0sRUFBRSxFQUFFO0NBQ1gsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFZO0lBQy9CLFlBQVksRUFBRSxFQUFFO0lBQ2hCLDhCQUE4QixFQUFFLEtBQUs7SUFDckMsWUFBWSxFQUFFLE1BQU07SUFDcEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixZQUFZLEVBQUUsRUFBRTtJQUNoQixhQUFhLEVBQUUsRUFBRTtJQUNqQixlQUFlLEVBQUUsRUFBRTtJQUNuQix3QkFBd0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2YsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDZixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUNuQixDQUFDO0FBRUYsMENBQTBDO0FBQzFDLFNBQWdCLGNBQWMsQ0FBQyxPQUErRTtJQUM1RyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7SUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBQSxpQkFBTyxHQUFFLENBQUM7SUFFdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQVksRUFBRSxHQUFhLEVBQUUsRUFBRTtRQUNsRCxJQUFJLENBQUM7WUFDSCwrQkFBK0I7WUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRTdELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELG9CQUFvQjtZQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCx3Q0FBd0M7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUUsQ0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxRUFBcUUsSUFBSSx3REFBd0QsQ0FBQyxDQUFDO0lBQ2pKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQTNCRCx3Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgZXhwcmVzcywgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHtcbiAgQ29udGV4dCwgU1FTQmF0Y2hSZXNwb25zZSwgU2NoZWR1bGVkRXZlbnQsXG59IGZyb20gJ2F3cy1sYW1iZGEnO1xuXG5jb25zdCBldmVudFRlbXBsYXRlOiBTY2hlZHVsZWRFdmVudCA9IHtcbiAgdmVyc2lvbjogJzAnLFxuICBpZDogJzAnLFxuICAnZGV0YWlsLXR5cGUnOiAnU2NoZWR1bGVkIEV2ZW50JyxcbiAgc291cmNlOiAnYXdzLmV2ZW50cycsXG4gIGFjY291bnQ6ICcxMjM0NTY3ODkwMTInLFxuICB0aW1lOiAnMTk3MC0wMS0wMVQwMDowMDowMFonLFxuICByZWdpb246ICd1cy1lYXN0LTEnLFxuICByZXNvdXJjZXM6IFtdLFxuICBkZXRhaWw6IHt9LFxufTtcblxuY29uc3QgY29udGV4dFRlbXBsYXRlOiBDb250ZXh0ID0ge1xuICBhd3NSZXF1ZXN0SWQ6ICcnLFxuICBjYWxsYmFja1dhaXRzRm9yRW1wdHlFdmVudExvb3A6IGZhbHNlLFxuICBmdW5jdGlvbk5hbWU6ICd0ZXN0JyxcbiAgZnVuY3Rpb25WZXJzaW9uOiAnJyxcbiAgaW52b2tlZEZ1bmN0aW9uQXJuOiAnJyxcbiAgbG9nR3JvdXBOYW1lOiAnJyxcbiAgbG9nU3RyZWFtTmFtZTogJycsXG4gIG1lbW9yeUxpbWl0SW5NQjogJycsXG4gIGdldFJlbWFpbmluZ1RpbWVJbk1pbGxpczogKCkgPT4gMCxcbiAgZG9uZTogKCkgPT4geyB9LFxuICBmYWlsOiAoKSA9PiB7IH0sXG4gIHN1Y2NlZWQ6ICgpID0+IHsgfSxcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZXhwb3J0IGZ1bmN0aW9uIHNjaGVkdWxlZExvY2FsKGhhbmRsZXI6IChldmVudDogU2NoZWR1bGVkRXZlbnQsIGNvbnRleHQ6IENvbnRleHQpID0+IFByb21pc2U8U1FTQmF0Y2hSZXNwb25zZT4pIHtcbiAgY29uc3QgcG9ydCA9ICsocHJvY2Vzcy5lbnYucG9ydCB8fCAnMzAwMCcpO1xuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG5cbiAgYXBwLmFsbCgnLyonLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEludm9rZSB0aGUgZnVuY3Rpb24gaGFuZGxlcjpcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoZXZlbnRUZW1wbGF0ZSwgY29udGV4dFRlbXBsYXRlKTtcblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zb2xlLmxvZygnUmVzdWx0OicpO1xuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VuZCB0aGUgcmVzcG9uc2VcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIExvZyB0aGUgZXJyb3IgYW5kIHNlbmQgYSA1MDAgcmVzcG9uc2VcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgY29uc29sZS5sb2coKGUgYXMgRXJyb3IpLnN0YWNrKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKGAke2V9YCk7XG4gICAgfVxuICB9KTtcblxuICBhcHAubGlzdGVuKHBvcnQsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NoZWR1bGVkIExhbWJkYSBoYW5kbGVyIGNhbiBiZSBpbnZva2VkIHZpYSBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS4gVGhlIHJlcXVlc3QgYm9keSB3aWxsIGJlIHNlbnQgYXMgYW4gU1FTIG1lc3NhZ2UgYm9keWApO1xuICB9KTtcbn1cbiJdfQ==