AWS Glue上传JSON后保存报putObject:AccessDenied问题求助
AWS Glue保存JSON配置时putObject AccessDenied问题排查与解决
可能的原因及对应解决方法
IAM实体权限缺失
即使是存储桶所有者,当前操作使用的IAM用户/角色可能未被授予目标S3桶的s3:PutObject权限。需检查IAM策略:- 确认策略中包含允许访问目标桶及对象路径的语句,例如:
{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::your-target-bucket/*" } - 排查是否存在显式拒绝的IAM语句,拒绝规则会优先覆盖允许规则。
- 确认策略中包含允许访问目标桶及对象路径的语句,例如:
S3桶策略限制
存储桶策略可能限制了s3:PutObject操作的主体范围:- 检查桶策略是否包含允许当前IAM实体执行
s3:PutObject的规则,确保主体(Principal)包含你的用户/角色ARN - 若桶启用了Bucket Owner Enforced模式,需确保写入请求附带
bucket-owner-full-control的ACL,否则即使是桶所有者,也无法获取对象的完全控制权。可通过CLI测试:aws s3 cp your-glue-config.json s3://your-target-bucket/path/ --acl bucket-owner-full-control
- 检查桶策略是否包含允许当前IAM实体执行
Glue Job关联角色权限不足
保存Glue Job配置时,Glue服务会使用Job关联的IAM角色执行S3写入操作,需确认该角色拥有目标桶的s3:PutObject权限,而非仅当前登录用户的权限。S3 ACL配置问题
若目标路径下已有其他对象,检查对象的ACL是否授予桶所有者完全控制权限。可通过S3控制台修改对象ACL,或使用CLI调整:aws s3api put-object-acl --bucket your-target-bucket --key path/to/object.json --acl bucket-owner-full-control
验证步骤
- 使用AWS CLI模拟写入操作,确认是否存在底层S3权限问题:
echo "test" > test.txt && aws s3 cp test.txt s3://your-target-bucket/path/to/glue-config/ - 查看CloudTrail中的
PutObject事件日志,定位请求的IAM主体、资源ARN及具体的拒绝原因,精准排查权限卡点。
内容的提问来源于stack exchange,提问作者miltonc
相关产品推荐
相关产品推荐

