上次更新时间:2020 年 11 月 12 日
当我尝试创建一个 Amazon EMR 集群时,我收到了下面的一种错误消息:
"EMR_DefaultRole is invalid" "EMR_EC2_DefaultRole is invalid" 简短描述这些错误通常会在您编辑附加到 Amazon EMR 默认角色的一个或多个 AWS Identity and Access Management (IAM) 策略时发生。要排查问题,请将修改后的角色与原始版本(AmazonElasticMapReduceRole 或 AmazonElasticMapReduceforEC2Role)进行比较。如果无法找到问题的根源,请删除并重新创建角色。
如果您修改了 AmazonElasticMapReduceforEC2Role 或 AmazonElasticMapReduceRole 角色,请检查您所做的更改。将修改后的版本与原始版本(AmazonElasticMapReduceRole 或 AmazonElasticMapReduceforEC2Role)进行比较。如果您无法确定导致问题的原因,请删除角色和实例配置文件,详见以下部分的解释。
删除并重新创建角色和实例配置文件在开始之前,请注意以下事项:
确保没有任何使用您要删除的角色或实例配置文件的 EC2 实例正在运行。如果删除与正在运行的实例关联的角色或实例配置文件,会中断正在实例上运行的应用程序。 以下步骤会将 EMR_DefaultRole 和 EMR_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 集群。