【问题标题】:Cannot pass array to parameter in AWS StepFunction无法将数组传递给 AWS StepFunction 中的参数
【发布时间】:2021-08-09 06:26:01
【问题描述】:

我正在使用 EMR 开发 AWS StepFunction。 我的输入看起来像这样。

{
  "dt":"20210101"
}

因为我想在 EMR 中运行 spark-submit,所以我使用 HadoopJarStep 添加了一个步骤。 我的步骤是这样的。

    "Run first step": {
      "Type": "Task",
      "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
      "Parameters": {
        "ClusterId.$": "$.cluster.ClusterId",
        "Step": {
          "Name": "My first EMR step",
          "ActionOnFailure": "CONTINUE",
          "HadoopJarStep": {
            "Jar": "command-runner.jar",
            "Args.$": "States.Array('spark-submit','--deploy-mode','client', 's3://script_path.py','s3://some_path', '$.dt')"
          }
        }
      },
      "ResultPath": "$.firstStep",
      "Next": "Terminate Cluster"

我的问题点在这里"Args.$": "States.Array('spark-submit','--deploy-mode','client', 's3://script_path.py','s3://some_path', '$.dt')"

我必须将参数作为数组传递给该步骤,但“$.dt”不能正常工作。

我尝试了以下各种方式

"Args.$": "States.Array('spark-submit','--deploy-mode','client', 's3://script_path.py','States.Format(\\'s3://some_path\\', $.dt)')"
"Args.$": "States.Array('spark-submit','--deploy-mode','client', 's3://script_path.py','States.Format(s3://some_path, $.dt)')"
"Args.$": "['spark-submit','--deploy-mode','client', 's3://script_path.py','s3://some_path/$.dt']"

但它永远不会成功。

如何通过插值将参数作为数组传递?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-step-functions amazon-emr


    【解决方案1】:

    尝试在 $.dt 周围加上引号,这为我解决了这个问题:

    "Args.$": "States.Array('spark-submit','--deploy-mode','client', 's3://script_path.py','s3://some_path', $.dt)"
    

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2020-05-15
      • 2015-04-18
      • 1970-01-01
      相关资源
      最近更新 更多