faastjs
Version:
Serverless batch computing made simple.
63 lines • 8.58 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeTrampoline = exports.INVOCATION_TEST_QUEUE = exports.filename = void 0;
const client_sqs_1 = require("@aws-sdk/client-sqs");
const process_1 = require("process");
const error_1 = require("../error");
const serialize_1 = require("../serialize");
const aws_queue_1 = require("./aws-queue");
const aws_shared_1 = require("./aws-shared");
exports.filename = module.filename;
exports.INVOCATION_TEST_QUEUE = "*test*";
const CallIdAttribute = "callId";
function errorCallback(err) {
if (err.message.match(/SIGKILL/)) {
return new error_1.FaastError({ cause: err, name: error_1.FaastErrorNames.EMEMORY }, "possibly out of memory");
}
return err;
}
function makeTrampoline(wrapper) {
async function trampoline(event, context) {
const startTime = Date.now();
const region = process_1.env.AWS_REGION;
context.callbackWaitsForEmptyEventLoop = false;
const executionId = context.awsRequestId;
const { logGroupName, logStreamName } = context;
const logUrl = (0, aws_shared_1.getExecutionLogUrl)(region, logGroupName, logStreamName);
const callingContext = {
startTime,
logUrl,
executionId,
instanceId: logStreamName
};
if (CallIdAttribute in event) {
const call = event;
const cc = { call, ...callingContext };
await execute(cc, wrapper);
}
else {
const snsEvent = event;
for (const record of snsEvent.Records) {
const call = (0, serialize_1.deserialize)(record.Sns.Message);
const cc = { call, ...callingContext };
await execute(cc, wrapper);
}
}
}
return { trampoline };
}
exports.makeTrampoline = makeTrampoline;
async function execute(cc, wrapper) {
const { call } = cc;
const { ResponseQueueId: Queue } = call;
if (Queue === exports.INVOCATION_TEST_QUEUE) {
return;
}
const region = process_1.env.AWS_REGION;
const sqs = new client_sqs_1.SQS({ apiVersion: "2012-11-05", maxAttempts: 6, region });
await wrapper.execute(cc, {
errorCallback,
onMessage: msg => (0, aws_queue_1.sendResponseQueueMessage)(sqs, Queue, msg, cc)
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXRyYW1wb2xpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2F3cy10cmFtcG9saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG9EQUEwQztBQUMxQyxxQ0FBOEI7QUFDOUIsb0NBQXVEO0FBQ3ZELDRDQUEyQztBQUUzQywyQ0FBdUQ7QUFDdkQsNkNBQWtEO0FBRXJDLFFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFFM0IsUUFBQSxxQkFBcUIsR0FBRyxRQUFRLENBQUM7QUFFOUMsTUFBTSxlQUFlLEdBQTBDLFFBQVEsQ0FBQztBQUV4RSxTQUFTLGFBQWEsQ0FBQyxHQUFVO0lBQzdCLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksa0JBQVUsQ0FDakIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSx1QkFBZSxDQUFDLE9BQU8sRUFBRSxFQUM3Qyx3QkFBd0IsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsT0FBZ0I7SUFDM0MsS0FBSyxVQUFVLFVBQVUsQ0FBQyxLQUE4QixFQUFFLE9BQWdCO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsVUFBVyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLCtCQUFrQixFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdkUsTUFBTSxjQUFjLEdBQUc7WUFDbkIsU0FBUztZQUNULE1BQU07WUFDTixXQUFXO1lBQ1gsVUFBVSxFQUFFLGFBQWE7U0FDNUIsQ0FBQztRQUNGLElBQUksZUFBZSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFHLEtBQXFCLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFDdkQsTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxRQUFRLEdBQUcsS0FBaUIsQ0FBQztZQUNuQyxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQWlCLElBQUEsdUJBQVcsRUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLEVBQUUsR0FBbUIsRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBNUJELHdDQTRCQztBQUVELEtBQUssVUFBVSxPQUFPLENBQUMsRUFBa0IsRUFBRSxPQUFnQjtJQUN2RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLE1BQU0sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3hDLElBQUksS0FBSyxLQUFLLDZCQUFxQixFQUFFLENBQUM7UUFDbEMsT0FBTztJQUNYLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsVUFBVyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksZ0JBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDdEIsYUFBYTtRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUEsb0NBQXdCLEVBQUMsR0FBRyxFQUFFLEtBQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0tBQ25FLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTlNFdmVudCB9IGZyb20gXCJhd3MtbGFtYmRhL3RyaWdnZXIvc25zXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcImF3cy1sYW1iZGEvaGFuZGxlclwiO1xuaW1wb3J0IHsgU1FTIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zcXNcIjtcbmltcG9ydCB7IGVudiB9IGZyb20gXCJwcm9jZXNzXCI7XG5pbXBvcnQgeyBGYWFzdEVycm9yLCBGYWFzdEVycm9yTmFtZXMgfSBmcm9tIFwiLi4vZXJyb3JcIjtcbmltcG9ydCB7IGRlc2VyaWFsaXplIH0gZnJvbSBcIi4uL3NlcmlhbGl6ZVwiO1xuaW1wb3J0IHsgQ2FsbGluZ0NvbnRleHQsIEZ1bmN0aW9uQ2FsbCwgV3JhcHBlciB9IGZyb20gXCIuLi93cmFwcGVyXCI7XG5pbXBvcnQgeyBzZW5kUmVzcG9uc2VRdWV1ZU1lc3NhZ2UgfSBmcm9tIFwiLi9hd3MtcXVldWVcIjtcbmltcG9ydCB7IGdldEV4ZWN1dGlvbkxvZ1VybCB9IGZyb20gXCIuL2F3cy1zaGFyZWRcIjtcblxuZXhwb3J0IGNvbnN0IGZpbGVuYW1lID0gbW9kdWxlLmZpbGVuYW1lO1xuXG5leHBvcnQgY29uc3QgSU5WT0NBVElPTl9URVNUX1FVRVVFID0gXCIqdGVzdCpcIjtcblxuY29uc3QgQ2FsbElkQXR0cmlidXRlOiBFeHRyYWN0PGtleW9mIEZ1bmN0aW9uQ2FsbCwgXCJjYWxsSWRcIj4gPSBcImNhbGxJZFwiO1xuXG5mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycjogRXJyb3IpIHtcbiAgICBpZiAoZXJyLm1lc3NhZ2UubWF0Y2goL1NJR0tJTEwvKSkge1xuICAgICAgICByZXR1cm4gbmV3IEZhYXN0RXJyb3IoXG4gICAgICAgICAgICB7IGNhdXNlOiBlcnIsIG5hbWU6IEZhYXN0RXJyb3JOYW1lcy5FTUVNT1JZIH0sXG4gICAgICAgICAgICBcInBvc3NpYmx5IG91dCBvZiBtZW1vcnlcIlxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVRyYW1wb2xpbmUod3JhcHBlcjogV3JhcHBlcikge1xuICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW1wb2xpbmUoZXZlbnQ6IEZ1bmN0aW9uQ2FsbCB8IFNOU0V2ZW50LCBjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGVudi5BV1NfUkVHSU9OITtcbiAgICAgICAgY29udGV4dC5jYWxsYmFja1dhaXRzRm9yRW1wdHlFdmVudExvb3AgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBjb250ZXh0LmF3c1JlcXVlc3RJZDtcbiAgICAgICAgY29uc3QgeyBsb2dHcm91cE5hbWUsIGxvZ1N0cmVhbU5hbWUgfSA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGxvZ1VybCA9IGdldEV4ZWN1dGlvbkxvZ1VybChyZWdpb24sIGxvZ0dyb3VwTmFtZSwgbG9nU3RyZWFtTmFtZSk7XG4gICAgICAgIGNvbnN0IGNhbGxpbmdDb250ZXh0ID0ge1xuICAgICAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICAgICAgbG9nVXJsLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBpbnN0YW5jZUlkOiBsb2dTdHJlYW1OYW1lXG4gICAgICAgIH07XG4gICAgICAgIGlmIChDYWxsSWRBdHRyaWJ1dGUgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGwgPSBldmVudCBhcyBGdW5jdGlvbkNhbGw7XG4gICAgICAgICAgICBjb25zdCBjYzogQ2FsbGluZ0NvbnRleHQgPSB7IGNhbGwsIC4uLmNhbGxpbmdDb250ZXh0IH07XG4gICAgICAgICAgICBhd2FpdCBleGVjdXRlKGNjLCB3cmFwcGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNuc0V2ZW50ID0gZXZlbnQgYXMgU05TRXZlbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBzbnNFdmVudC5SZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsbDogRnVuY3Rpb25DYWxsID0gZGVzZXJpYWxpemUocmVjb3JkLlNucy5NZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYzogQ2FsbGluZ0NvbnRleHQgPSB7IGNhbGwsIC4uLmNhbGxpbmdDb250ZXh0IH07XG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZShjYywgd3JhcHBlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgdHJhbXBvbGluZSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlKGNjOiBDYWxsaW5nQ29udGV4dCwgd3JhcHBlcjogV3JhcHBlcikge1xuICAgIGNvbnN0IHsgY2FsbCB9ID0gY2M7XG4gICAgY29uc3QgeyBSZXNwb25zZVF1ZXVlSWQ6IFF1ZXVlIH0gPSBjYWxsO1xuICAgIGlmIChRdWV1ZSA9PT0gSU5WT0NBVElPTl9URVNUX1FVRVVFKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVnaW9uID0gZW52LkFXU19SRUdJT04hO1xuICAgIGNvbnN0IHNxcyA9IG5ldyBTUVMoeyBhcGlWZXJzaW9uOiBcIjIwMTItMTEtMDVcIiwgbWF4QXR0ZW1wdHM6IDYsIHJlZ2lvbiB9KTtcbiAgICBhd2FpdCB3cmFwcGVyLmV4ZWN1dGUoY2MsIHtcbiAgICAgICAgZXJyb3JDYWxsYmFjayxcbiAgICAgICAgb25NZXNzYWdlOiBtc2cgPT4gc2VuZFJlc3BvbnNlUXVldWVNZXNzYWdlKHNxcywgUXVldWUhLCBtc2csIGNjKVxuICAgIH0pO1xufVxuIl19
;