Вызвать AWS Lambda через функции шага AWS? - PullRequest
0 голосов
/ 28 февраля 2019

Один 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
}

1 Ответ

0 голосов
/ 28 февраля 2019

Единственная модификация, которую вам нужно сделать - это вернуть данные из 1-й функции, которая требуется для 2-й функции.Шаговая функция автоматически получит выходные данные первой функции как входные данные 2-й функции.

Кроме того, вам не нужно обрабатывать вызовы функций между лямбда-функциями, конечный автомат будет обрабатывать это.

Кроме того, за услугу не будет взиматься дополнительная плата, кроме стоимости выполнения лямбды, поэтому ваша стоимость остается прежней.

...