【问题标题】:Lambda - SQS Event: Batch Size, number of container spawning and terminationLambda - SQS 事件:批量大小、容器产生和终止的数量
【发布时间】:2021-10-31 08:03:58
【问题描述】:

这是我的 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

我所做的一个假设是,单个 Lambda 容器生成由其特定的 STARTEND requestId 决定。如果有 5 个这样的 STARTEND requestId,则意味着生成了 5 个唯一容器。

现在这是否意味着在 STARTEND requestId 中,恰好处理了 1 消息,并为下一条消息生成了一个新容器,其中包含新的 START 和 END requestId 即使之前的容器有内存和时间来执行更多请求?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs aws-lambda-containers


    【解决方案1】:

    由于您已将批量大小指定为 1,因此请求将包含单个 SQS 消息。因此,“在 START 和 END requestId 之间”将是 Lambda 正在处理的单个消息的日志。

    但是,同一个容器在完成后可以通过另一个请求再次调用。 Containers in AWS Lambda can be reused。它们一次不能用于多个请求,但可以用于多个连续请求。

    AWS Lambda 函数的时间限制是处理单个请求所需的时间。因此,如果容器被重用,时间限制会随着每个请求重新开始。

    单个 Lambda 容器可以运行数小时/数天/数月等,如果它的利用率很高,或者如果您已预置并发。它最多只有 15 分钟(或更少,具体取决于配置)来处理单个请求。


    这是官方记录的here,位于“Lambda 执行环境生命周期”部分。

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2020-11-18
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多