5 amazon-web-services aws-lambda aws-step-functions
我目前正在创建一个 Step Functions 工作流程,其中包含一些 Lambda 和其他在一个任务与其他任务之间共享状态的服务。
我主要是在 Lambda 上执行一些外部请求,并在任务之间共享来处理这些数据。
当我尝试测试 Step Functions 工作流程时,收到以下错误:States.DataLimitExceeded,但当我在 Lambda 控制台上测试时,一切正常。
错误:
谁能帮助我了解我在 Step Functions 工作流程中做错了什么?
Step Functions 服务对 UTF-8 编码字符串数据的输入/有效负载有256KB(更必要的是262,144 字节)的限制。此配额会影响任务(活动、Lambda 函数或集成服务)、状态或执行输出以及计划任务、进入状态或开始执行时的输入数据。
在您的情况下,您在状态之间发送的数据似乎超过了此限制,这对于 Lambda 函数来说不是问题,因为 Lambda 事件限制为 6MB。
为了解决这个问题,您需要在 S3 等另一个服务中共享这些巨大的有效负载,然后在您的函数/状态之间发送此引用。
此外,如果您不需要在状态之间传递的所有数据,您可以使用带有 OutputPath 的过滤器输出或带有 ResultSelector选项的转换结果来转换或过滤输出,并仅共享下一个状态所需的所需数据。
例如,如果您决定在这种情况下使用 S3,我们可以执行以下操作:
-> Lambda do the request
-> Save on S3 the data
-> Send the response with the S3 object ARN
-> Get this file on the Lambda function and process the data
Run Code Online (Sandbox Code Playgroud)
这会阻止您直接在 Step 函数中发送有效负载,并且您无需担心 256Kb 输入限制。
如果你想转换或过滤你的状态的输出,你可以这样做:
此示例演示如何转换输出数据以仅获取对象中所需的属性,并过滤数组以仅获取数组中的第一个索引(您不必两者都需要)。
要了解有关 Step Functions 配额/限制的更多信息,请查看此处: Step Functions - 配额
| 归档时间: |
|
| 查看次数: |
5470 次 |
| 最近记录: |