AWS EMR Cluster无法启动

时间:2015-02-06 22:42:07

标签: amazon-web-services emr amazon-iam

我正在尝试从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"
    }
  ]
}

4 个答案:

答案 0 :(得分:4)

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

  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

答案 1 :(得分:0)

您只有EMR的读取权限

<强> “elasticmapreduce:描述*”,

您需要提供弹性地图缩减的完全访问权限,以便您可以启动群集/终止

一旦您授予此访问权限,策略将显示为

<强> “elasticmapreduce:*”,

答案 2 :(得分:0)

我试过,如果没有使用我自己的Cloudformation堆栈的工具,我可以让它工作。

必须为流角色提供InstanceProfile的密钥以及流和服务角色都必须作为ARN提供。

我是如何让它为我工作的!

希望能帮助别人。

答案 3 :(得分:0)

我遇到了同样的问题。我没有提供新的群集名称,而是保留了相同的默认群集名称&#39; My Cluster&#39;并点击“创建群集”#39;再次。它创建没有这个错误。