Лямбда - Событие SQS: размер пакета, количество порожденных и завершенных контейнеров
Вот моя лямбда-функция:
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
Description: Lambda Function that is spawned via an SQSEvent
FunctionName: LambdaFunctionName
Handler: 'com.amazon.krakenscreenruleengineservicelambda.handler.RulesSubscriptionConsumerHandler::handleRequest'
Runtime: java8
Events:
SubscriptionEvent:
Type: SQS
Properties:
Queue:
Fn::GetAtt: [SubscriptionQueue, Arn]
BatchSize: 1
Timeout: 890
MemorySize: 1024
Я установил
BatchSize
в качестве .
Одно предположение, которое я делаю, заключается в том, что порождение одного контейнера Lambda определяется его конкретными START и END . Если таких START и END 5 , это означает, что было создано 5 уникальных контейнеров.
Означает ли это, что в пределах START и END точно
1
сообщение обрабатывается, и для следующего сообщения создается новый контейнер с новыми START и END
requestId
ДАЖЕ, если у предыдущего контейнера была память и время для выполнения большего количества запросов?
1 ответ
Поскольку вы указали размер пакета 1, запрос будет включать одно сообщение SQS. Таким образом, «между START и END requestId» будет журнал для одного сообщения, обрабатываемого Lambda.
Однако тот же контейнер может быть вызван снова с другим запросом после его завершения. Контейнеры в AWS Lambda можно использовать повторно . Они не используются более чем для одного запроса одновременно, но их можно использовать для множества последовательных запросов.
Ограничение по времени для функции AWS Lambda - это время, необходимое для обработки одного запроса. Поэтому, если контейнер используется повторно, ограничение по времени начинается с каждого запроса.
Один контейнер Lambda может работать часы / дни / месяцы и т. Д., Если он сильно загружен или если вы подготовили параллелизм. У него просто максимум 15 минут (или меньше, в зависимости от конфигурации) для обработки одного запроса.
Это официально задокументировано здесь , в разделе «Жизненный цикл среды выполнения Lambda».