aws-lambda - AWS Stepfunction 将数据传递给下一个 lambda,而无需所有额外的填充
问题描述
我用 AWD CDK(打字稿)创建了一个状态机,一切正常。它只是 Lambda 1 的输出,它是 Lambda 2 的输入,具有某种我不感兴趣的状态机填充。
状态机定义:
{
"StartAt": "",
"States": {
"...applicationPdf": {
"Next": "...setApplicationProcessed",
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "...applicationPdf",
"Payload.$": "$"
}
},
"...setApplicationProcessed": {
"Next": "Done",
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"...applicationPdf",
"Payload.$": "$"
}
},
"Done": {
"Type": "Succeed"
}
}
}
Lambda1 的输出(applicationPdf):
{
"ExecutedVersion": "$LATEST",
"Payload": {
...
},
"SdkHttpMetadata": {
"AllHttpHeaders": {
...
},
"HttpHeaders": {
....
},
"HttpStatusCode": 200
},
"SdkResponseMetadata": {
....
},
"StatusCode": 200
}
所以我只对Payload
,而不是所有其他的东西感兴趣。我想做的原因是我想单独运行第二个 lambda 我只想让事件进入 Lambda,成为 Payload 对象,而不是带有ExecutedVersion etc
.
有谁知道如何做到这一点?我会看看Parameters
定义的选项,也许答案就在那里。
解决方案
感谢您提出问题并感谢您对 Step Functions 的兴趣。
ResultSelector和OutputPath字段可用于操作状态的输出,这在状态输出不需要在后续状态中访问的值时特别有用。它们之间的区别在于 ResultSelector 在应用状态的 ResultPath 之前应用,而 OutputPath 应用在它之后。
如您所述,您可以使用 OutputPath 过滤掉任何不需要的元数据,然后再传递到下一个状态。
推荐阅读
- terraform - Terraform 动态循环列表中的元素并根据值扩展
- r - GGPlot2 Boxplot 只显示线条
- r - 将 2d 矩阵转换为 3d 矩阵
- pine-script - Pine Script - 无法用我的逻辑编写 Strategy.exit
- javascript - Textarea数据提交和显示-Wordpress
- go - 来自 cgo 的未定义函数
- pandas - Pandas 根据具有不同列标题的另一个数据框将多个列和行值设置为 nan
- c# - 无法创建 Android.Widget.ArrayAdapter`1[T] 的实例,因为 Type.ContainsGenericParameters 为 true
- css - How to create an image background fade when mapping an array of images with React
- asp.net-core - 在 ASP.NET Core MVC 中有多个索引视图时如何重定向