AWS Glue流作业出现AmazonS3Exception访问拒绝错误排查
排查AWS Glue流作业S3 AccessDenied(403)及无限运行问题
涉及的S3存储桶
checkpointLocation配置对应的检查点存储桶:错误日志直接指向该路径的权限问题- Glue作业配置的临时存储桶:作业运行中生成临时文件,权限不足可能间接影响检查点流程
- Security Lake数据湖存储桶:虽读写正常,但需确认是否存在后续清理或元数据操作的权限遗漏
可能的错误原因
1. 检查点操作的权限集不完整
流作业的检查点机制需要持续执行PutObject(写入检查点文件)、GetObject(读取历史检查点)、DeleteObject(清理过期检查点)、ListBucket(遍历检查点目录)操作。仅添加DeleteObject权限会导致作业无法完成完整的检查点生命周期:要么因缺少读写权限触发403,要么因检查点状态异常进入无限重试循环。
2. 检查点桶的桶策略限制
即使作业角色已配置权限,检查点桶的桶策略可能存在显式拒绝规则,或未明确允许角色的检查点相关操作。比如桶策略仅允许特定IP或服务访问,未包含Glue作业角色的ARN。
3. 检查点桶的版本控制干扰
若检查点桶开启了版本控制,执行DeleteObject仅会添加删除标记,而非真正删除文件。Glue流作业无法识别这种状态,会持续尝试清理检查点,导致作业无限运行。
4. 临时存储桶的权限范围不足
临时存储桶需要Glue具备ListBucket、DeleteObject权限来清理运行过程中生成的临时文件。若权限缺失,临时文件堆积可能间接影响检查点的写入或读取流程。
验证与修复步骤
- 补全检查点桶的角色权限:确保作业角色策略包含完整的检查点操作权限,示例策略如下:
{ "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::your-checkpoint-bucket-name", "arn:aws:s3:::your-checkpoint-bucket-name/*" ] } - 检查检查点桶的桶策略:确认桶策略中存在针对作业角色ARN的显式允许规则,无拒绝该角色相关操作的条目。
- 处理版本控制问题:若检查点桶开启版本控制,可临时关闭版本控制,或给角色添加
s3:DeleteObjectVersion权限后重新测试。 - 验证临时存储桶权限:确保临时存储桶的权限覆盖
PutObject、GetObject、DeleteObject、ListBucket,且资源范围包含桶及桶内所有对象。 - 定位具体错误操作:查看CloudWatch日志中403错误的详细信息,确认是
PutObject/GetObject/DeleteObject中的哪一步失败,精准修复权限。
内容的提问来源于stack exchange,提问作者manu muraleedharan
相关产品推荐
相关产品推荐

