【问题标题】:Use JSON Input to Replace 'Variable' in AWS Step Function使用 JSON 输入替换 AWS Step Function 中的“变量”
【发布时间】:2020-05-05 02:31:30
【问题描述】:

我有一个 AWS Step Function,我想通过开始执行时包含的 JSON 输入向它传递一个值。 Step 函数启动 ETL 作业并通过调用执行所述任务的 Lambda 函数检查其状态。 StartGlueJob Lambda 函数通过 JobName JSON 输入启动。我想传入的值是名为“regionalCenters”的粘合作业的参数,在这种情况下,所需的值将是“LA”。

如下所示,我尝试使用 $.value 语法从 JSON 输入中传递,但这并没有按预期运行,我不知道为什么。

Lambda 代码片段:

let jobInfo = await glue.startJobRun({ JobName: jobName, Arguments: arguments }).promise();

JSON 输入

{
    "value": "LA"
}

阶梯函数

{
  "StartAt": "InitStartEtl",
  "States": {
    "InitStartEtl": {
      "Type": "Pass",
      "Result": {
        "jobName": "name-of-my-etl-job",
        "arguments": {"regionalCenters": "$.value"}
      }
    },
    "StartEtl": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:<redacted>",
      "Next": "WaitForForEtlCheck"
    },
    "WaitForForEtlCheck": {
      "Type": "Wait",
      "Seconds": 10,
      "Next": "GetEtlState"
    },
    "GetEtlState": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:<redacted>",
      "Next": "IsEtlFinished"
    },
    "IsEtlFinished": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.state",
          "StringEquals": "READY",
          "Next": "EtlDone"
        }
      ],
      "Default": "WaitForForEtlCheck"
    },
    "EtlDone": {
      "Type": "Pass",
      "End": true
    }
  }
}

【问题讨论】:

    标签: aws-lambda aws-step-functions


    【解决方案1】:

    你最后错过了 .$ 区域中心

    应该是 “参数”:{“regionalCenters.$”:“$.value”}

    看这里 https://docs.aws.amazon.com/step-functions/latest/dg/connect-parameters.html

    【讨论】:

      【解决方案2】:

      我能够通过更改 Result 并添加 ResultPath 来解决我自己的问题,a la:

      {
        "StartAt": "InitStartEtl",
        "States": {
          "InitStartEtl": {
            "Type": "Pass",
            "Result": "name-of-my-etl-job",
            "ResultPath": "$.jobName",
            "Next": "StartEtl"
          },
      

      更改结果允许我通过 ResultPath 将字符串添加到 .jobName 节点,同时将 {"value": "LA"} 的输入附加到输出

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 2022-10-14
        • 1970-01-01
        • 1970-01-01
        • 2022-08-26
        • 2020-03-27
        • 2021-02-07
        • 2018-10-18
        • 1970-01-01
        相关资源
        最近更新 更多