AWS Step函数-字段'null'的值必须为STRING

问题描述

我正在尝试通过Lambda调用step函数。然后,lambda将输入的json转储到step函数。 这是Lambda对step函数的输入-

{
  "name": "Add step to EMR cluster","input": {
    "TransactionId": "c6a3ea17-db1b-11ea-bd00-a366cfd325b1","FileName": "NEA_FINAL_08072020_20.txt","BucketName": "catalyst-landing-stage"
  },"inputDetails": null
}

我正在尝试使用以下代码从输入json动态填充FileName-

{
  "Comment": "Running Catalist step on Amazon EMR","StartAt": "Add step to EMR cluster","States": {
    "Add step to EMR cluster": {
      "Type": "Task","Resource": "arn:aws:states:::elasticmapreduce:addStep.sync","Parameters": {
        "ClusterId": "j-JMJL7M823WT6","Step": {
          "Name": "Catalist_Step","ActionOnFailure": "CONTINUE","HadoopJarStep": {
            "Jar": "command-runner.jar","Args": [
              "spark-submit","s3://usercase1-test1/Code/Catalist_MemberExtract.py",{"FileName$.":"$.FileName"},"s3://usercase1-test1/yesterday.csv/part-00000-ec88bf25-cb22-42d0-b341-f68289ebc781-c000.csv","s3://usercase1-test1/MemberExtract_QC_08042020"
            ]
          }
        }
      },"End": true
    }
  }
}

我得到上面的错误“字段'null'的值必须为STRING” ...任何帮助,我们将感激不尽。谢谢!

解决方法

在您的Args部分中,更改以下内容:

{"FileName$.":"$.FileName"}

对此:

"$.FileName"

Amazon States Language(ASL)仅希望在其中输入字符串。这就是在ASL中完成对输入值的引用的方式。 $引用执行上下文对象,因此在这种情况下就像说input.FileName

有关大量与EMR群集相关的示例,请查看 《步骤功能开发人员指南》 section,其中包含类似容器用例的示例,或Blog Post announcing Step Functions EMR Integration

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...