2015-02-06 160 views
4

我试图从AWS控制台启动一个AWS EMR集群,并且正在以下错误: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" 
    } 
    ] 
} 

回答

0

你只有只读权限EMR

“elasticmapreduce:描述*”,

您需要给弹性地图全面进入减少,这样就可以启动集群/终止

一旦你把这个访问角色的政策看起来像

“elasticmapreduce:*”,

4

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

  1. 创建默认角色(如果错误,降级到awscli版本30年1月10日)

    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

0

我试着和周围能拿它不使用我自己的Cloudformation堆栈的工具工作。

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

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

希望能帮助别人。

0

我得到了同样的问题。我没有给出新的群集名称,而是保留了相同的默认群集名称“我的群集”,并再次单击“创建群集”。它没有这个错误创建。