如何解决如何将参数传递给 Map 任务中的所有内部工作流任务?
我正在尝试在我的状态机中使用 Map 任务。设计很简单——我有一个 lambda 函数,它生成一个 Map 状态使用的列表。 Map 任务中的每个任务都应该有权访问列表的属性。
现在我观察到只有第一个任务“ETL”将每个列表元素作为输入,而不是第二个任务“WELL CALC”。
我的 Step Machine 出现故障
{
"error": "States.Runtime","cause": "An error occurred while executing the state 'WELL CALC' (entered at the event id #15). The JSONPath '$.basinName' specified for the field 'basin.$' Could not be found in the input '{}'"
}
上述错误为真,ETL lambda 任务的结果返回一个空对象。有没有办法可以将 Map 迭代的“当前项目”作为输入传递给所有任务?
这是我的状态机定义:
{
"StartAt": "Generate Basin List","States": {
"Generate Basin List": {
"Type": "Task","Resource": "arn:aws:lambda:us-east-1:451713003466:function:StepFunctionsSample-HelloLam-CheckStockPriceLambda-15TO7SRHAQYQV","Next": "Process Basins"
},"Process Basins": {
"Type": "Map","ItemsPath": "$.BasinList","End": true,"Iterator": {
"StartAt": "ETL","States": {
"ETL": {
"Type": "Task","Resource": "arn:aws:lambda:us-east-1:451713003466:function:StepFunctionsSample-HelloLambda0b4d-BuyStockLambda-1WW8B8JQSZ0SY","Next": "WELL CALC"
},"WELL CALC": {
"Type": "Task","Parameters": {
"basin.$":"$.basinName","phases.$":"$.phases"
},"Resource": "arn:aws:lambda:us-east-1:451713003466:function:StepFunctionsSample-HelloLambda0b4-SellStockLambda-15I8EE3RWDMS5"
}
}
}
}
}
}
这是“生成盆地列表”lambda:
exports.lambdaHandler = async (event,context) => {
return {
"BasinList": [
{
"basinName": "ARDMORE_AND_MARIETTA_BASINS","phases": "1,4,5,8,9,10,13"
}
]
}
};
解决方法
事实证明,我可以将 "ResultPath": null
字段添加到 Map 内的第一个状态 - ETL
这将导致整个输入状态作为输出传递到下一个状态(源 - { {3}}):
...
"ETL": {
"Type": "Task","Resource": "arn:aws:lambda:us..."
"Next": "WELL CALC","ResultPath": null
},...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。