EMR Serverless日志上传S3遭权限拒绝,咨询日志上传使用的角色
EMR Serverless日志上传的权限角色说明及权限问题排查
核心问题答案
日志上传到S3的操作,使用的是EMR Serverless服务关联角色(默认名称为AWSServiceRoleForEMRServerless),而非你为任务配置的执行角色。
原因说明
任务执行角色的作用是供任务运行时访问业务资源(比如读取输入数据、写入业务输出);而日志推送是EMR Serverless服务本身发起的操作,因此会使用服务自身的关联角色来完成。
权限修复建议
针对你的AccessDenied错误,需要给AWSServiceRoleForEMRServerless角色添加以下权限:
- S3权限:允许对目标S3前缀执行
s3:PutObject操作,示例IAM权限语句:
{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::mgosk-temp/emr-serverless-spark/*" }
- KMS权限:由于你指定了KMS加密密钥,需要允许角色对该密钥执行
kms:GenerateDataKey和kms:Decrypt操作,示例IAM权限语句:
{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:eu-north-1:0000000:key/abcd" }
额外验证点
- 确认服务关联角色的信任策略包含
emr-serverless.amazonaws.com作为可信实体,确保服务能扮演该角色 - 检查目标S3桶的桶策略,没有拒绝服务关联角色的
s3:PutObject请求 - 确认KMS密钥的密钥策略中,已授权服务关联角色进行相关加密操作
内容的提问来源于stack exchange,提问作者mgosk
相关产品推荐
相关产品推荐

