Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services EMR群集未在stepfunction出现故障时终止_Amazon Web Services_Amazon Emr_Aws Step Functions - Fatal编程技术网

Amazon web services EMR群集未在stepfunction出现故障时终止

Amazon web services EMR群集未在stepfunction出现故障时终止,amazon-web-services,amazon-emr,aws-step-functions,Amazon Web Services,Amazon Emr,Aws Step Functions,我们正在从stepfunction创建EMR集群。下面是它执行的步骤 创建集群 预处理(如安装脚本等) 提交作业 终止群集 这里的问题是当#3步骤失败(提交作业)时,当作业失败时,它不会终止集群。 当作业成功时,它终止集群。下面是步骤的定义(忽略语法) 现在,当我尝试ActionOnFailure=TERMINATE\u集群时,它会给出以下错误 失败时的操作“TERMINATE_CLUSTER”无效状态代码:400错误代码:ValidationException 我在这里缺少的是我也有同样的问题

我们正在从stepfunction创建EMR集群。下面是它执行的步骤

  • 创建集群
  • 预处理(如安装脚本等)
  • 提交作业
  • 终止群集
  • 这里的问题是当#3步骤失败(提交作业)时,当作业失败时,它不会终止集群。 当作业成功时,它终止集群。下面是步骤的定义(忽略语法)

    现在,当我尝试ActionOnFailure=TERMINATE\u集群时,它会给出以下错误

    失败时的操作“TERMINATE_CLUSTER”无效状态代码:400错误代码:ValidationException


    我在这里缺少的是

    我也有同样的问题,但我发现我创建的EMR是step并发的。


    显然,对于带有步骤Concurrency的EMR,您只能添加带有actionOnFailure=CONTINUE的EMR步骤。如果您的集群是在状态机本身中创建和终止的,那么还有另一种方法可以实现这一点,方法是使用捕获错误并转移到终止步骤

    例如

    "Submit_Job": {
      "Type": "Task",
      "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
      "Parameters": {
        "ClusterId.$": "$.FormattedInputsForEmr.ClusterId",
        "Step": {
          "Name": "Start Job",
          "ActionOnFailure": "CONTINUE",
          "HadoopJarStep": {
            "Jar": "command-runner.jar",
            "Args.$": "$.FormattedInputsForEmr.Args[*][*]"
          }
        },
        "Catch": [
          {
            "ErrorEquals": [
              "States.ALL"
            ],
            "Next": "<Terminate-Cluster-State>"
          }
        ]
      }
    }
    
    “提交作业”:{
    “类型”:“任务”,
    “资源”:“arn:aws:states:::elasticmapreduce:addStep.sync”,
    “参数”:{
    “ClusterId.$”:“$.FormattedInputsForEmr.ClusterId”,
    “步骤”:{
    “名称”:“开始作业”,
    “ActionOnFailure”:“继续”,
    “HadoopJarStep”:{
    “Jar”:“command runner.Jar”,
    “Args.$”:“$.FormattedInputsFormer.Args[*][*]”
    }
    },
    “捕获”:[
    {
    “ErrorEquals”:[
    “所有国家”
    ],
    “下一个”:”
    }
    ]
    }
    }
    
    boto3,你用什么来完成这一步?找不到
    提交作业的确切文档
    @A.B提交作业只是一个名称。您能否验证是否从控制台启用了终止保护,如我在asnwer中所述
    "Submit_Job": {
      "Type": "Task",
      "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
      "Parameters": {
        "ClusterId.$": "$.FormattedInputsForEmr.ClusterId",
        "Step": {
          "Name": "Start Job",
          "ActionOnFailure": "CONTINUE",
          "HadoopJarStep": {
            "Jar": "command-runner.jar",
            "Args.$": "$.FormattedInputsForEmr.Args[*][*]"
          }
        },
        "Catch": [
          {
            "ErrorEquals": [
              "States.ALL"
            ],
            "Next": "<Terminate-Cluster-State>"
          }
        ]
      }
    }