在哪里可以更改触发 AWS Lambda 函数的 SQS 队列的批量大小?

问题描述 投票:0回答:5

我发誓有一种简单的方法可以更改配置为 Lambda 触发器的 SQS 队列的批量大小,但截至 2020 年 7 月,我再也找不到发生这种情况的地方。这可能与目前 AWS 上面正在宣传的“全新 SQS 控制台体验”有关

我可以看到队列的当前批量大小(屏幕截图),但该数字不可编辑。我在 SQS 界面中也没有看到任何与批量大小相关的内容。我当前的 IAM 凭证可能无法更改批量大小,并且对我来说是隐藏的。有谁知道这个值可以在哪里更改吗?

amazon-web-services aws-lambda amazon-sqs
5个回答
17
投票

此限制 与 Amazon SQS 控制台无关。

它将与 AWS Lambda 相关,因为 Lambda 服务负责轮询 SQS 队列并指定要检索的批量大小。

您是对的,Lambda 控制台中没有编辑批量大小的功能。

来自

update-event-source-mapping — AWS CLI 命令参考,以下是可以更新批量大小的 AWS CLI 命令:

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --batch-size 8
输出:

{ "UUID": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "StateTransitionReason": "USER_INITIATED", "LastModified": 1569284520.333, "BatchSize": 8, "State": "Updating", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "EventSourceArn": "arn:aws:sqs:us-west-2:123456789012:mySQSqueue" }
或者,只需在 Lambda 控制台中删除触发器并创建一个新触发器。


16
投票
SQS也不例外。

同样适用于 DynamoDB 和 Kinesis 流。我认为原因是所有三个服务通过事件源映射与 lambda 配合使用。没有其他东西在使用映射。

但是,也无法通过控制台更新

event source mappings

。您可以使用 CLI 或 SDK 来实现此目的,但这也需要获取要修改的映射的 
UUID
。遗憾的是,控制台中也没有提供 
UUID。 要在 CLI 中使用,您必须分

两步

完成。 1 获取UUID

aws lambda list-event-source-mappings --query 'EventSourceMappings[].[UUID, EventSourceArn]' --output table

-------------------------------------------------------------------------------------------------------------------------------
|                                                   ListEventSourceMappings                                                   |
+---------------------------------------+-------------------------------------------------------------------------------------+
|  5ab44863-82c2-4acc-b9dc-b14ad368effa |  arn:aws:kinesis:us-east-1:xxxxx:stream/kstream                              |
|  7479947c-bde5-4041-a438-5eb08f350505 |  arn:aws:dynamodb:us-east-1:xxxx:table/test/stream/2020-07-28T23:13:41.006  |
|  40040139-32fb-4297-b094-3f08368c980c |  arn:aws:sqs:us-east-1:xxxxx:Messages                                        |
|  a2b22aa6-f37a-4603-895b-3a044661ebdf |  arn:aws:sqs:us-east-1:xxx:test-queue                                      |
+---------------------------------------+-------------------------------------------------------------------------------------+

2.更新映射(例如 SQS)

aws lambda update-event-source-mapping --uuid a2b22aa6-f37a-4603-895b-3a044661ebdf --batch-size 5

{
    "UUID": "a2b22aa6-f37a-4603-895b-3a044661ebdf",
    "BatchSize": 5,
    "EventSourceArn": "arn:aws:sqs:us-east-1:xxx:test-queue",
    "FunctionArn": "arn:aws:lambda:us-east-1:xxxx:function:testsfd",
    "LastModified": 1595978738.458,
    "State": "Updating",
    "StateTransitionReason": "USER_INITIATED"
}



2
投票

警告:您必须从 lamdba UI 而不是从 SQS UI 手动创建触发器。

文档中概述的步骤

打开 Lambda 控制台上的函数页面。
  1. 选择一个功能。
  2. 在设计器下,选择添加触发器。
  3. 选择触发类型。
  4. 配置所需的选项,然后选择添加。
将队列配置为事件源


0
投票

转到您的 Lambda 函数概述(其中显示带有触发器、函数和目标的图表)。
  • 在图表下方,选择
  • 配置
  • 选项卡。 在侧面菜单中选择
  • 触发器
  • 从列表中选择您的触发器。
  • 单击上面菜单中的
  • 编辑
  • 按钮。 出现
  • 触发器配置
  • 菜单。在这里,您可以编辑批量大小

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.