Amazon web services `创建EMR群集时,EMR服务角色无效`

Amazon web services `创建EMR群集时,EMR服务角色无效`,amazon-web-services,amazon-s3,hive,Amazon Web Services,Amazon S3,Hive,在创建Amazon S3 Bucket之后,my_Bucket,我通过cli创建了一个弹性Map Reduce集群: aws emr创建集群--名称为“配置单元测试”-ami版本3.3 --应用程序名称=配置单元--使用默认角色--实例类型m3.xlarge--实例计数3--步骤类型=配置单元,名称=“配置单元程序”,Args=[-d,INPUT=s3://my_bucket/INPUT,-d.OUTPUT=s3://my_bucket/INPUT,-d-LIBS=s3://my_bucket/

在创建Amazon S3 Bucket之后,
my_Bucket
,我通过cli创建了一个弹性Map Reduce集群:

aws emr创建集群--名称为“配置单元测试”-ami版本3.3 --应用程序名称=配置单元--使用默认角色--实例类型m3.xlarge--实例计数3--步骤类型=配置单元,名称=“配置单元程序”,Args=[-d,INPUT=s3://my_bucket/INPUT,-d.OUTPUT=s3://my_bucket/INPUT,-d-LIBS=s3://my_bucket/serde_LIBS]

请注意,我没有指定
配置单元
*.q文件。在创建S3和EMR集群之后,我将登录到EMR框,然后以交互方式运行
hive

注意-我假设有一个我可以登录的EMR框

但是,当我运行aws emr descripe cluster--cluster id XYZ时,我在输出中看到了以下错误:

   "State": "TERMINATED_WITH_ERRORS", 
        "StateChangeReason": {
            "Message": "EMR service role arn:aws:iam::xyz:role/EMR_DefaultRole 
                         is invalid", 
            "Code": "VALIDATION_ERROR"
        }

什么会导致这个错误?我是否需要打开S3存储桶上的权限才能让EMR群集访问它?

问题不在于存储桶,而是缺少预期的IAM角色

发出AWS CLI命令:

aws emr create-default-roles 
然后再次创建集群。这是创建默认角色所需的一次性步骤

  • 注: 当心使用aws cli的最新版本,我在1.4(debian jessie软件包)上遇到了问题

  • 注2:摘自mrjob代码和亚马逊公告:

    创建的帐户需要实例配置文件和服务角色 2015年4月6日之后,所有账户最终都需要


我发现,当您创建自定义服务角色并分配错误的主体服务时,会出现此问题

此示例将生成该错误:

{
   "Version": "2012-10-17",
   "Statement": [
     {
       "Action": "sts:AssumeRole",
       "Principal": {
         "Service": "ec2.amazonaws.com"
       },
       "Effect": "Allow",
       "Sid": "Invalid"
     }
   ]
}
此示例不会:

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

有关更多信息,请参见此处:

I获取:
A客户端错误(AccessDenied)调用GetRole操作时发生:User:arn:aws:iam::1234567890:User/xxmexx未被授权执行:iam:GetRole on resource:role EMR_EC2_DefaultRole
我必须将
IAMReadOnlyAccess
添加到我们的配置文件中以删除此错误。您是否解决了此问题?您的策略不起作用。可能来自IAM(老用户等),看看您是否可以创建一个简单的集群。在AWS EMR create cluster(AWS EMR创建群集)页面上使用更新的UI设置群集,一旦您的群集处于等待状态,请从CLI导出工具导出AWS EMR选项。