You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复AWS Glue作业调用HeadObject时的403 Forbidden错误?

AWS Glue作业S3 HeadObject 403 Forbidden错误排查原因

问题背景

我尝试运行一个Spark AWS Glue作业,已将.py脚本文件上传至名为jobfiles_s3_bucket的S3存储桶。作业运行时尝试将该脚本从存储桶复制到本地临时目录,相关日志如下:

S3 Copy Started: 
SRC: s3://<insert_bucket_here>/glue-job.py 
DEST: /tmp/g-8aa076b857cf7854bfe423a40d5c07863eb091a9-2843067097771260387/script_2024-01-21-00-17-12.py
Specifying ap-southeast-2 while copying script.

S3 copy with region specified failed. Falling back to not specifying region.

随后触发403权限错误:

fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

Error downloading script: fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

该Glue作业关联的IAM角色已配置包含S3读写权限的策略(资源范围覆盖目标存储桶和临时目录):

{
  "Sid" : "AccessPointRWDAccessands3access",
  "Effect" : "Allow",
  "Action" : [
    "s3:*Object",
    "s3:Put*",
    "s3:List*",
    "s3:Get*",
    "s3:Delete*"
  ],
  // 资源配置已覆盖jobfiles_s3_bucket及相关路径
}

可能的故障原因

  • S3存储桶策略限制:即使IAM角色有允许权限,存储桶的桶策略可能存在Deny语句拦截了HeadObject请求,或未明确允许该IAM角色的访问。需检查桶策略的权限规则。
  • IAM策略资源范围不完整:需确认策略中的资源ARN是否包含对象级别路径(如arn:aws:s3:::jobfiles_s3_bucket/*),仅指定存储桶ARN(arn:aws:s3:::jobfiles_s3_bucket)无法满足HeadObject这类对象级操作的权限要求。
  • S3访问点配置异常:如果使用S3访问点,需确认访问点的权限策略允许该IAM角色执行HeadObject,同时检查访问点与存储桶的区域是否匹配(日志中区域指定失败可能与此相关)。
  • IAM角色信任策略错误:检查角色的信任策略是否允许Glue服务(glue.amazonaws.com)扮演该角色,若可信实体未包含Glue,作业将无法获取有效权限。
  • S3对象ACL限制:目标脚本对象的ACL若设置为私有,且未授予IAM角色或其所属AWS账户读取权限,会触发403错误。可查看对象的ACL配置。
  • 区域不匹配导致签名错误:存储桶实际所在区域与Glue作业指定的区域(ap-southeast-2)不符,会导致请求签名失效。确认存储桶区域与作业区域一致,或策略允许跨区域访问。
  • IAM权限边界限制:若角色设置了权限边界,即使附加了允许策略,边界可能限制了HeadObject操作。检查权限边界是否包含所需的S3操作。
  • 临时凭证获取异常:Glue作业获取的临时IAM凭证可能存在权限缺失或过期,可通过CloudTrail日志查看请求使用的凭证及权限情况。

内容的提问来源于stack exchange,提问作者dzartovs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:17:51