Lambda - SQS 事件:批量大小、容器产生和终止的数量
Lambda - SQS Event: Batch Size, number of container spawning and termination
这是我的 Lambda 函数:
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
设置为 1
。
1 我所做的假设是,单个 Lambda 容器的生成取决于它特定的 START 和 END requestId
.如果有 5 个这样的 START 和 END requestId
,则意味着生成了 5 个独特的容器。
现在这是否意味着在 START 和 END requestId
中,恰好 1
消息被处理对于下一条消息,会生成一个带有新开始和结束的新容器 requestId
即使之前的容器有足够的内存和时间来执行更多请求?
由于您指定的批量大小为 1,因此请求将包含单个 SQS 消息。因此,“在 START 和 END requestId 之间”将是 Lambda 正在处理的单个消息的日志。
但是,同一个容器可以在完成后用另一个请求再次调用。 Containers in AWS Lambda can be reused。它们一次不会用于多个请求,但它们可用于许多顺序请求。
AWS Lambda 函数的时间限制是处理单个请求所需的时间。因此,如果容器被重复使用,则时间限制从每个请求开始。
单个 Lambda 容器可以 运行 用于 hours/days/months,等等,如果它的利用率很高,或者如果您配置了并发。它最多只有 15 分钟(或更短时间,具体取决于配置)来处理单个请求。
这在“Lambda 执行环境生命周期”部分下有正式记录here。
这是我的 Lambda 函数:
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
设置为 1
。
1 我所做的假设是,单个 Lambda 容器的生成取决于它特定的 START 和 END requestId
.如果有 5 个这样的 START 和 END requestId
,则意味着生成了 5 个独特的容器。
现在这是否意味着在 START 和 END requestId
中,恰好 1
消息被处理对于下一条消息,会生成一个带有新开始和结束的新容器 requestId
即使之前的容器有足够的内存和时间来执行更多请求?
由于您指定的批量大小为 1,因此请求将包含单个 SQS 消息。因此,“在 START 和 END requestId 之间”将是 Lambda 正在处理的单个消息的日志。
但是,同一个容器可以在完成后用另一个请求再次调用。 Containers in AWS Lambda can be reused。它们一次不会用于多个请求,但它们可用于许多顺序请求。
AWS Lambda 函数的时间限制是处理单个请求所需的时间。因此,如果容器被重复使用,则时间限制从每个请求开始。
单个 Lambda 容器可以 运行 用于 hours/days/months,等等,如果它的利用率很高,或者如果您配置了并发。它最多只有 15 分钟(或更短时间,具体取决于配置)来处理单个请求。
这在“Lambda 执行环境生命周期”部分下有正式记录here。