繁体   English   中英

在 AWS Step Functions 中将输入传递给输出

[英]Passthrough input to output in AWS Step Functions

如何将 AWS Step Functions 中Task状态的输入传递到输出?

在阅读了 AWS 文档中的输入和输出处理页面后,我使用了InputPathResultPathOutputPath各种组合。

状态定义:

"First State": {
    "Type": "Task",
    "Resource": "[My Lambda ARN]",
    "Next": "Second State",
    "InputPath": "$.someKey",
    "OutputPath": "$"
}

输入:

{
    "someKey": "someValue"
}

预期结果

我希望First State的输出(以及Second State的输入)为

{
    "someKey": "someValue"
}

实际结果

[empty]

如果输入更复杂怎么办,例如

{
    "firstKey": "firstValue",
    "secondKey": "secondValue"
}

我想转发所有内容而不必担心(子)路径。

Amazon States Language规范中指出:

如果 ResultPath 的值为 null,则意味着该状态自己的原始输出被丢弃,其原始输入成为其结果。

因此,我将我的状态定义更新为

"First State": {
    "Type": "Task",
    "Resource": "[My Lambda ARN]",
    "Next": "Second State",
    "ResultPath": null
}

结果,当传递输入示例时, Task输入有效负载将被复制到输出,即使对于像这样的丰富对象:

{
    "firstKey": "firstValue",
    "secondKey": "secondValue"
}

对于那些在这里使用 CDK 的人,解决方案是使用显式aws_stepfunctions.JsonPath.DISCARD枚举而不是 None/null。

from aws_cdk import (
    aws_stepfunctions,
    aws_stepfunctions_tasks,
)

aws_stepfunctions_tasks.LambdaInvoke(
    self,
    "my_function",
    lambda_function=lambda_function,
    result_path=aws_stepfunctions.JsonPath.DISCARD,
)

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-stepfunctions.JsonPath.html#static-discard

我正在寻找将输入从一个并行状态传递到另一个并行状态的解决方案,并且上述选项非常有效。 例如我的步骤函数是这样的... tas1->parallel task2 -> parallel trask3 -> task4。 所以当它从并行 task3 开始时,输入值会被清除,所以 ptask3 失败了。 使用上述选项,我能够将相同的输入从 ptask2 传递到 ptas3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM