【问题标题】:Pass Step Function variable to AWS Glue Job Not Working将 Step Function 变量传递给 AWS Glue 作业不工作
【发布时间】:2021-09-08 19:41:54
【问题描述】:

我正在尝试将 AWS Step Function 变量传递给 Glue Job 参数,类似于: aws-passing-job-parameters-value-to-glue-job-from-step-function

但是,这对我不起作用。粘合作业错误消息表明它正在获取传递的变量名称 - 而不是变量的实际值。这是我的 Step Function 代码:

{
  "Comment": "Converts CSV files to parquet for a date range.",
  "StartAt": "ConfigureCount",
  "States": {
    "ConfigureCount": {
      "Type": "Pass",
      "Result": {
        "start": 201601,
        "end": 201602,
        "index": 201601
      },
      "ResultPath": "$.iterator",
      "Next": "Iterator"
    },
    "Iterator": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:eu-west-1:123456789:function:date-iterator",
      "ResultPath": "$.iterator",
      "Next": "IsCountReached"
    },
    "IsCountReached": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.iterator.continue",
          "BooleanEquals": true,
          "Next": "ConvertToParquet"
        }
      ],
      "OutputPath": "$.iterator",
      "Default": "Done"
    },
    
    "ConvertToParquet": {
      "Comment": "Your application logic, to run a specific number of times",
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Parameters": {
        "JobName": "convert-to-parquet",
        "Arguments": {
          "--DATE_RANGE": "$.iterator.index"
        }
      },
      "ResultPath": "$.iterator.index",
      "Next": "Iterator"
    },
    "Done": {
      "Type": "Pass",
      "End": true
    }
  }
}

“迭代器”步骤调用一个名为“日期迭代器”的 Lambda,它返回类似于以下内容的 JSON:

{
  "start": "201601",
  "end": "201602",
  "index": "201601"
}

这是基于这篇文章,所以我可以遍历值:Iterating a Loop Using Lambda

我的 Step Function 失败,说“$.iterator.index”不是有效日期。

如何传递这个值,而不是变量名?

【问题讨论】:

    标签: aws-lambda aws-glue aws-step-functions


    【解决方案1】:

    来自亚马逊状态语言 (https://states-language.net/spec.html):

    如果有效负载模板中的任何字段(无论嵌套多深)的名称以字符“.$”结尾,则其值将根据以下规则进行转换,并重命名该字段以去除“.$”后缀。

    基于添加 .$ 应该可以解决您的问题:

    "Parameters": {
            "JobName": "convert-to-parquet",
            "Arguments": {
              "--DATE_RANGE.$": "$.iterator.index"
            }
          },
    

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 2022-08-11
      • 1970-01-01
      • 2022-08-26
      • 2021-03-10
      • 2015-01-14
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多