当我在创建一个 Amazon EMR 集群时,为何收到“EMR_DefaultRole is invalid”或“EMR_EC2_DefaultRole is invalid”错误?

1 分钟阅读
0

当我尝试创建一个 Amazon EMR 集群时,我收到了下面的一种错误消息:

"EMR_DefaultRole is invalid" "EMR_EC2_DefaultRole is invalid"

简短描述

这些错误通常会在您编辑附加到 Amazon EMR 默认角色的一个或多个 AWS Identity and Access Management (IAM) 策略时发生。要排查问题,请将修改后的角色与原始版本(AmazonElasticMapReduceRoleAmazonElasticMapReduceforEC2Role)进行比较。

如果无法找到问题的根源,请删除并重新创建角色。

解决方法

将修改后的角色与原始版本进行比较

如果您向 IAM 角色 EMR_DefaultRoleEMR_EC2_DefaultRole 添加了策略,请查看您所做的更改。请将修改后的角色版本与原始版本(AmazonElasticMapReduceRoleAmazonElasticMapReduceforEC2Role)进行比较。如果您无法确定导致问题的原因,请删除角色和实例配置文件,详见以下部分的解释。

删除并重新创建角色和实例配置文件

在开始之前,请注意以下事项:

  • 确保没有任何使用您要删除的角色或实例配置文件的 EC2 实例正在运行。如果删除与正在运行的实例关联的角色或实例配置文件,会中断正在实例上运行的应用程序。
  • 以下步骤会将 EMR_DefaultRoleEMR_EC2_DefaultRole 重置为原始配置。如果您自定义了附加到这些角色的 IAM 策略,那么这些更改将会丢失。

AWS 管理控制台

1.    使用 IAM 控制台删除角色。IAM 会自动删除与角色关联的实例配置文件和策略。

2.    打开 Amazon EMR 控制台

3.    创建一个 EMR 集群。对于 Permissions(权限),选择 Default(默认)。Amazon EMR 在启动集群时会创建默认角色。这些角色可用于您稍后启动的任何集群。

AWS 命令行界面 (AWS CLI)

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

1.    从实例配置文件中移除 EMR_EC2_DefaultRole

aws iam remove-role-from-instance-profile --instance-profile-name EMR_EC2_DefaultRole --role-name EMR_EC2_DefaultRole

2.    删除实例配置文件

aws iam delete-instance-profile --instance-profile-name EMR_EC2_DefaultRole

3.    移除与 EMR_EC2_DefaultRole 关联的 IAM 策略

aws iam detach-role-policy --role-name EMR_EC2_DefaultRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role

4.    删除 EMR_EC2_DefaultRole

aws iam delete-role --role-name EMR_EC2_DefaultRole

5.    移除与 EMR_DefaultRole 关联的 IAM 策略:

aws iam detach-role-policy --role-name EMR_DefaultRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole

6.    删除 EMR_DefaultRole

aws iam delete-role --role-name EMR_DefaultRole

7.    重新创建默认角色

aws emr create-default-roles

8.    启动新的 EMR 集群。


相关信息

为 IAM 服务角色配置访问亚马逊云科技服务和资源所需的 Amazon EMR 权限

AWS 官方
AWS 官方已更新 1 年前