AWS EMR集群无法启动



我正试图从AWS控制台启动AWS EMR集群,但收到以下错误:

Failed to provision ec2 instances because 'IAM Instance Profile "arn:aws:iam::553706642095:instance-profile/EMR_EC2_DefaultRole" has no associated IAM Roles

有人知道这意味着什么以及如何解决它吗?

以下是角色策略:

{
  "Statement": [
    {
      "Action": [
        "cloudwatch:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:Describe*",
        "rds:Describe*",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

其信托政策文件为:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

我终于解决了这个问题。这很令人困惑,因为默认情况下实例配置文件和角色使用相同的名称。完整的步骤概述如下,但您可以跳过各种步骤。

  1. 创建默认角色(如果出现错误,则降级到awscli 1.10.30版本)

    aws emr create-default-roles

  2. 如果实例配置文件不存在,请创建它:

    aws iam create-instance-profile --instance-profile-name EMR_EC2_DefaultRole

  3. 验证实例配置文件是否存在,但没有任何角色:

    aws iam get-instance-profile --instance-profile-name EMR_EC2_DefaultRole

  4. 使用添加角色

    aws iam add-role-to-instance-profile --instance-profile-name EMR_EC2_DefaultRole --role-name EMR_EC2_DefaultRole

您对EMR 只有只读权限

"elasticmapreduce:描述*",

你需要完全访问弹性地图减少,这样你就可以启动集群/终止

一旦你给了这个访问角色策略将看起来像

"elasticmapreduce:*",

我尝试了一下,使用我自己的Cloudformation堆栈,可以在没有工具的情况下让它工作。

密钥必须具有流角色的InstanceProfile,并且流和服务角色都必须作为ARN提供。

这就是我让它为我工作的原因!

希望这也能帮助其他人。

我遇到了同样的问题。我没有给出新的集群名称,而是保留了相同的默认集群名称"我的集群",并再次单击"创建集群"。它创建时没有出现此错误。

相关内容

  • 没有找到相关文章

最新更新