为何我的EMR集群无法访问指定私有S3存储桶?
可能导致EMR集群无法访问私有S3存储桶的原因
EMR_EC2_DefaultRole缺少Assume x-role的权限
你仅配置了x-role允许EMR_EC2_DefaultRole执行sts:AssumeRole操作,但EMR_EC2_DefaultRole本身未被授予调用sts:AssumeRole访问x-role的权限。需在EMR_EC2_DefaultRole的权限策略中添加如下语句:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::current_account_number:role/x-role" } ] }EMR集群未正确关联EMR_EC2_DefaultRole
检查EMR集群的实例配置文件(Instance Profile)是否确实关联了EMR_EC2_DefaultRole。若集群使用的是其他实例角色,即便x-role信任了EMR_EC2_DefaultRole,也无法生效。未在EMR作业中显式指定使用x-role
EMR实例默认使用EMR_EC2_DefaultRole的权限,不会自动切换到x-role。需在作业配置中明确指定:- Spark作业可添加配置:
spark.hadoop.fs.s3a.roleARN=arn:aws:iam::current_account_number:role/x-role - Hadoop作业可在core-site.xml中设置
fs.s3a.roleARN参数
- Spark作业可添加配置:
S3桶策略未明确允许x-role访问
尽管x-role拥有访问所有S3资源的权限,但私有S3桶的资源策略可能存在拒绝规则,或未明确允许x-role访问。检查桶策略是否包含如下允许语句:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::current_account_number:role/x-role" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::your-bucket-name", "arn:aws:s3:::your-bucket-name/*" ] } ] }x-role存在权限限制条件
若x-role的权限策略设置了条件限制(如MFA验证、特定IP范围),而EMR实例不符合这些条件,也会导致访问失败。
内容的提问来源于stack exchange,提问作者Kobias III
相关产品推荐
相关产品推荐

