Как запустить AWS лямбда-функции последовательно - PullRequest
0 голосов
/ 08 марта 2019

У меня есть несколько лямбда-функций, и я хочу вызывать эти лямбда-функции одну за другой в C #.Я создал очередь AWS, которая содержит имена лямбда-функций в теле сообщения.Я использовал цикл for для каждого сообщения, полученного из очереди для выполнения функции.Но моя программа завершает работу, как только выполняется первая лямбда-функция.

foreach (var message in response.Messages)
{
    Console.WriteLine("For message ID '" + message.MessageId + "':");
    Console.WriteLine("  Body: " + message.Body);

    if (message.Body == "Function1")
    {
        LambdaClient.InvokeAsync(new InvokeRequest
        {
            FunctionName = "Function1",
        }).Wait();
    }

    if (message.Body == "Function2")
    {
        LambdaClient.InvokeAsync(new InvokeRequest
        {
            FunctionName = "Function2",
        }).Wait();
    }
}

В этой функции цикл for повторяется только один раз и прекращает выполнение.Любая идея о том, как вызывать все функции одну за другой.

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Использование очереди SQS для последовательного вызова лямбда-функций не очень хорошая идея. Хотя я думаю, что вы могли бы заставить это работать, это определенно не правильный способ сделать это, и есть куча ненужных вещей, с которыми вам придется справиться самостоятельно.

AWS предоставляет вам очень четкий способ обработки этого сценария с использованием конечного автомата, который называется Step Functions. Используя пошаговые функции, вы можете смоделировать свой последовательный поток лямбда-выполнений без каких-либо дополнительных операционных издержек, а также предоставить вам хороший график, на котором вы можете увидеть, как именно выполняется ваш поток и где ошибка в случае сбоя.

0 голосов
/ 08 марта 2019

Лямбда-функции не предназначены для этого. Если вы хотите вызвать другую лямбду из одной, вы можете использовать пошаговые функции AWS, которые вы можете настроить для последовательного вызова (с некоторыми обходными путями и конфигурацией конечных автоматов). Обратите внимание на эти пошаговые функции, потому что они не предназначены для передачи больших данных (максимальный размер полезной нагрузки составляет 1 МБ, если я не ошибаюсь), и если вам нужен больший размер, вы должны использовать S3 (в основном сервис хранения AWS).

...