您可以在哪里更改触发 AWS Lambda 函数的 SQS 队列的批量大小?
Where can you change the batch size for an SQS queue that triggers an AWS Lambda function?
我本可以发誓,有一种简单的方法可以更改配置为 Lambda 触发器的 SQS 队列的批量大小,但截至 2020 年 7 月,我再也找不到发生这种情况的地方。这可能与AWS上目前正在宣传的“新SQS控制台体验”有关
我可以看到队列的当前批量大小(屏幕截图),但该数字不可编辑。我也没有在 SQS 界面中看到任何与批量大小相关的内容。我当前的 IAM 凭证可能无法更改批量大小,并且对我隐藏了。有谁知道在哪里可以更改此值?
SQS 也不例外。 DynamoDB 和 Kinesis 流也是如此。我认为原因是 所有三个 服务通过 event source mappings 与 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"
}
此限制与 Amazon SQS 控制台无关。
它将与 AWS Lambda 相关,因为 Lambda 服务负责轮询 SQS 队列并指定要检索的批处理大小。
你是对的,在 Lambda 控制台中没有编辑批量大小的功能。
来自update-event-source-mapping — AWS CLI Command Reference,这是一个可以更新批量大小的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 控制台中删除触发器并创建一个新触发器。
之前不确定,但 lambda UI 现在允许您配置批量大小。
警告:您必须从 lamdba UI 而不是 SQS UI.
手动创建触发器
文档中列出的步骤
- 打开 Lambda 控制台上的函数页面。
- 选择一个函数。
- 在设计器下,选择添加触发器。
- 选择触发器类型。
- 配置所需的选项,然后选择“添加”。
我本可以发誓,有一种简单的方法可以更改配置为 Lambda 触发器的 SQS 队列的批量大小,但截至 2020 年 7 月,我再也找不到发生这种情况的地方。这可能与AWS上目前正在宣传的“新SQS控制台体验”有关
我可以看到队列的当前批量大小(屏幕截图),但该数字不可编辑。我也没有在 SQS 界面中看到任何与批量大小相关的内容。我当前的 IAM 凭证可能无法更改批量大小,并且对我隐藏了。有谁知道在哪里可以更改此值?
SQS 也不例外。 DynamoDB 和 Kinesis 流也是如此。我认为原因是 所有三个 服务通过 event source mappings 与 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"
}
此限制与 Amazon SQS 控制台无关。
它将与 AWS Lambda 相关,因为 Lambda 服务负责轮询 SQS 队列并指定要检索的批处理大小。
你是对的,在 Lambda 控制台中没有编辑批量大小的功能。
来自update-event-source-mapping — AWS CLI Command Reference,这是一个可以更新批量大小的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 控制台中删除触发器并创建一个新触发器。
之前不确定,但 lambda UI 现在允许您配置批量大小。
警告:您必须从 lamdba UI 而不是 SQS UI.
手动创建触发器文档中列出的步骤
- 打开 Lambda 控制台上的函数页面。
- 选择一个函数。
- 在设计器下,选择添加触发器。
- 选择触发器类型。
- 配置所需的选项,然后选择“添加”。