如何在Step Functions中使用JSON Lambada输出?

0

【以下的问题经过翻译处理】 我有一个返回JSON对象的(Python)Lambda函数。我想将该对象加入到我的Step Functions状态中,并在下一个状态中访问其子字段...像这样:# Lambda函数 def handler(event, context): return json.dumps({"ThingARN": "...", "AnotherField": "..."}) { "StartAt":"LambdaStuff", "States":{ "LambdaStuff":{ "Type":"Task", "Resource":"arn:aws:states :::lambda:invoke", "Parameters":{ "FunctionName":"MyCoolLambdaFunction", "Payload . $": "$"}, "ResultPath":"$ .LambdaResult", "Next":"NextActivity"}, "NextActivity":{ "Type":"Task", "Resource":"...", "Parameters":{ "ARN。$": "$。LambdaResult。ThingARN" }, "ResultPath":"$ .AnotherResult", "End":true}}}``...但我的状态机失败了(取消了NextActivity任务),因为填充到$.LambdaResult的内容是一个带有Lambda元数据和字符串化结果有效负载的大对象,像这样:````` { "ExecutedVersion":"$LATEST", "Payload":“ { \”ThingARN \“:\”...\”,\”AnotherField \“:\”...\”}”, "SdkHttpMetadata":{ "HttpHeaders":{...},//各种奇奇怪怪的东西 "HttpStatusCode":200}, "SdkResponseMetadata":{ "RequestId":"..."}, "StatusCode":200}}```[这个文档页面](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-state-machine-data.html#concepts-state-machine-data-state-input-output)似乎暗示我想要做的是可能的,但示例显然非常简化/削减。我找到的所有其他示例(例如[“InputPath,OutputPath和ResultPath示例”](https://docs.amazonaws.cn/en_us/step-functions/latest/dg/input-output-example.html))似乎只返回简单的字符串,而不是结构化对象。我猜我可能漏掉了一些明显的东西。

profile picture
专家
已提问 4 年前14 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果您在SFN中使用资源属性中的完整函数ARN调用lambda函数,则只会返回Lambda函数返回的内容。此外,您不想使用json.dump返回的对象,只需返回一个映射,它将包含在您的输出中。例如,以下函数:def lambda_handler(event, context): # TODO implement body = { 'Test': 'abc', 'Value': 123 } return body`当像这样调用时:`"Hello": { "Type": "Task", "Resource": "arn:aws:lambda:eu-west-1:xxxxxxxxx:function:HelloWorld:$LATEST", "ResultPath": "$.LambdaResult", "Next": "World"},`使用以下输入:`{ "Input": "My input"}`返回以下内容:`{ "Input": "My input", "LambdaResult": { "Test": "abc", "Value": 123 }}

profile picture
专家
已回答 4 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则