Поскольку вы явно не указываете тип вызова, вы вызываете свою вторую функцию AWS Lambda из своей первой AWS Lambda синхронно.Таким образом, пока работает ваша вторая лямбда-функция AWS, первая также будет работать, ожидая ответа второй функции.Вот почему ваша первая лямбда-функция AWS истечет, если сумма времени работы первой и второй лямбда-функции AWS превысит настроенное максимальное время ожидания первой лямбда-функции AWS (в вашем случае 15 минут).
Синхронный вызов лямбда-функции AWS из другой лямбда-функции AWS - плохая практика, так как вы можете столкнуться с проблемами тайм-аута, которые возникают у вас прямо сейчас, и тратить деньги на запуск первой лямбда-функции AWS, когда работает вторая лямбда-функция AWS.
Что вы можете сделать, это вызвать вторую лямбда-функцию AWS асинхронно, установив правильный тип вызова для вашего InvokeRequest
:
InvokeRequest req = new InvokeRequest().withFunctionName(random_arn)
.withPayload(jsonString)
.withInvocationType(InvocationType.Event);
Это, конечно, работаетесли вы не зависите от выхода второй лямбда-функции AWS для завершения своей первой функции.
Вероятно, лучшим вариантом, поскольку вы уже используете функции шага AWS, является использование конечного автомата пошаговых функцийчтобы организовать вызов второй функции AWS Lambdan, как описано в следующем учебном пособии: https://aws.amazon.com/de/getting-started/tutorials/create-a-serverless-workflow-step-functions-lambda/
В зависимости от того, как работает ваша лямбда-функция AWS, может иметь смысл разделить первую лямбда-функцию AWS, которая в настоящее время вызывает вторую лямбда-функцию AWS, на две работающие частидо и после вызванной лямбда-функции.