Amazon web services `创建EMR群集时,EMR服务角色无效`
在创建Amazon S3 Bucket之后,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/
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选项。