AWS SQS无法可靠地触发Lambda

Luc*_*cca 1 amazon-sqs amazon-web-services aws-lambda serverless

我已经使用Lambda和SQS设置了一个小型的无服务器应用程序。在我来说,我想触发一个拉姆达每一次消息添加到SQS队列。

我的serverless.yml中的功能

functions:
  collectGame:
    handler: js/collect.collectGame
    memorySize: 128
    timeout: 10
    events:
    - sqs:
        arn:
          Fn::GetAtt:
            - gameRequestQueue
            - Arn
    - http:
        method: post
        cors:
          origin: "https://my-api-url.com"
        path: get/game/{id}
        private: true
        request:
          parameters:
            paths:
              id:true
Run Code Online (Sandbox Code Playgroud)

我通过一次向队列发送31条消息来测试该过程,但意识到只有9个Lambda被执行(通过查看cloudwatch日志)。我查看了队列,可以确认队列中已填充所有消息,并且在触发9个Lambda之后可以确认队列为空。

我希望有31个Lambda死刑,但事实并非如此。有人知道消息未触发我的Lambda的潜在原因吗?

cem*_*cks 5

您的lambda函数可能正在被多个消息调用。如果您只希望在每个lambda调用中发送一条消息,则在创建事件源映射时,应该能够将BatchSize设置为1。

看起来您正在使用无服务器框架。请参阅其SQS事件文档以设置批次大小。