Один Lambda вызывает другого синхронно, получает некоторые данные и продолжает обработку.
Это означает, что затраты учитываются для обоих Lambdas в период времени вызова.
Возможно ли в этом случае использовать пошаговые функции AWS, не разбивая обработку на блоки конечного автоматачто сделает код слишком сложным?
Node.js 8.10 код:
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda({ apiVersion: '2015-03-31' });
exports.handle = async event => {
try {
const packageId = event.pathParameters['id'];
const entry = await packageEntry(packageId);
const tags = await tagsForEntry(entry.id);
return httpResponse(200, { ...entry, tags });
}
catch (err) {
return httpResponse(500, err.message);
}
}
async function tagsForEntry(entryId) {
const response = await lambda.invoke({
FunctionName: process.env.TAGGING_LAMBDA,
InvocationType: 'RequestResponse',
Payload: JSON.stringify({
method: 'GET_TAGS',
payload: { entryId }
})
}).promise();
const payload = response.Payload ? JSON.parse(response.Payload.toString()) : {};
return payload.tags || [];
}
async function packageEntry(packageId) {
// return a package entry from a database
}
function httpResponse(statusCode, data) {
// return a HTTP response object
}