gpt4 book ai didi

amazon-web-services - AWS Step Functions : Combine task input with *partial* task output

转载 作者:行者123 更新时间:2023-12-03 15:55:16 26 4
gpt4 key购买 nike

我正在研究 AWS Step 函数。我已经阅读了 InputPath, OutputPath, and ResultPath 上的文档.我的问题是我想将输入到 Lambda 任务的值与任务的部分输出相结合。

任务的输入类似于以下内容。我想继续将这些值传递给后续任务。

{
"previous_task_result": 100,
"next_task_input": "asdf"
}

我想要的是让我的 Lambda 任务的输出看起来像这样:
{
"previous_task_result": 100,
"next_task_input": "asdf",
"current_task_result": {
"val1": "ghjk",
"val2": [0,2,13,100]
}
}

具体问题是 Lambda 任务的原始输出看起来像这样。我只关心 Payload节点。其余的输出是样板文件,我宁愿不通过 Step Function。
{
"resourceType": "lambda",
"resource": "invoke",
"output": {
"ExecutedVersion": "$LATEST",
"Payload": {
"val1": "ghjk",
"val2": [0,2,13,100]
},
"SdkHttpMetadata": {
"HttpHeaders": {
"Connection": "keep-alive",
"Content-Length": "42",
"Content-Type": "application/json",
"Date": "Tue, 25 Feb 2020 14:36:29 GMT",
"X-Amz-Executed-Version": "$LATEST",
"x-amzn-Remapped-Content-Length": "0"
},
"HttpStatusCode": 200
},
"SdkResponseMetadata": {
"RequestId": "redacted"
},
"StatusCode": 200
}
}

我了解如何使用 ResultPathOutputPath将输入与输出组合,或将输出分配给特定节点,但我找不到一种仅合并 Payload 的方法节点与现有输入的结果。

最佳答案

使用 Lambda 任务状态时,您可以通过 3 种方式构建任务状态:
1. 请求响应:
此方法返回完整的 API 响应,包括 SdkHttpMetadata 字段。我怀疑返回完整 HTTP 响应的原因是因为这是您可以从 Step Function 异步调用 Lambda 函数的唯一方法(异步 Lambda 调用仅返回状态代码)。例子:

"CallLambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "MyFunction",
"InvocationType": "Event|RequestResponse|DryRun",
"Payload.$": "$"
},
"End": true
}
2. Lambda ARN 作为资源:
我相信这就是你正在寻找的。将 Lambda 函数的 ARN 指定为资源时,Step Functions 将同步调用您的 Lambda 函数并仅返回来自您的 Lambda 函数的结果,而没有 API 响应元数据。在这种情况下,您的状态输入将作为负载传递给您的 Lambda 函数,或者您可以使用 InputPath/Parameters 过滤/修改作为负载发送的数据。
"CallLambda": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
"ResultPath": "$.current_task_result",
"End": true
}
使用您的示例中的输入,上述任务将为您提供如下输出:
{
"previous_task_result": 100,
"next_task_input": "asdf",
"current_task_result": {
<Your Lambda Functions Result>
}
}
3. .WaitForTaskToken:
将 token 传递给您的函数,暂停执行,直到收到对 SendTaskSuccess 或 SendTaskFailed 的调用(此方法将仅返回来自 SendTaskSuccess 或 SendTaskFailed 的结果/错误,而没有额外的 HTTP 元数据)。
"CallLambda": {
"Type": "Task",
"Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters": {
"FunctionName": "MyFunction",
"Payload":{
"token.$":"$$.Task.Token"
}
},
"End": true
}

关于amazon-web-services - AWS Step Functions : Combine task input with *partial* task output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60398436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com