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

上次更新时间:2020 年 11 月 12 日

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

  • "EMR_DefaultRole is invalid"
  • "EMR_EC2_DefaultRole is invalid"

简短描述

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

解决方法

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

如果您修改了 AmazonElasticMapReduceforEC2RoleAmazonElasticMapReduceRole 角色,请检查您所做的更改。将修改后的版本与原始版本(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
aws iam delete-instance-profile --instance-profile-name EMR_EC2_DefaultRole
aws iam detach-role-policy --role-name EMR_EC2_DefaultRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role
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
aws emr create-default-roles

8.    启动新的 EMR 集群。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?