微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将参数传递给 Map 任务中的所有内部工作流任务?

如何解决如何将参数传递给 Map 任务中的所有内部工作流任务?

我正在尝试在我的状态机中使用 Map 任务。设计很简单——我有一个 lambda 函数,它生成一个 Map 状态使用的列表。 Map 任务中的每个任务都应该有权访问列表的属性

现在我观察到只有第一个任务“ETL”将每个列表元素作为输入,而不是第二个任务“WELL CALC”。

enter image description here

我的 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 举报,一经查实,本站将立刻删除。