Amazon web services EMR群集未在stepfunction出现故障时终止
我们正在从stepfunction创建EMR集群。下面是它执行的步骤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 我在这里缺少的是我也有同样的问题
失败时的操作“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>"
}
]
}
}