使用AWS Glue爬虫时遇S3 Access Denied(403)错误求解决
以下是针对该问题的排查与解决步骤:
确认爬虫关联的IAM角色正确性
检查Glue爬虫配置中指定的IAM角色是否为你配置了S3FullAccess的角色,避免因选错角色导致权限不足。同时查看该角色的信任关系,确保包含glue.amazonaws.com作为信任实体,否则Glue服务无法正常扮演此角色。检查S3存储桶策略
即使角色拥有S3FullAccess,若存储桶策略中存在Deny语句(比如限制特定IP、VPC或角色的访问),会优先覆盖允许权限。查看桶策略是否有针对该角色ARN的拒绝规则,或是否要求访问必须通过指定VPC endpoint,而爬虫未配置对应VPC。验证对象级权限
若S3对象由其他AWS账户上传,或设置了对象级ACL,角色的S3FullAccess可能无法覆盖这些ACL限制。可通过IAM模拟工具测试该角色执行s3:GetObject操作是否能访问目标对象。检查S3访问控制列表(ACL)
查看存储桶的ACL设置,确保该角色对应的实体拥有READ权限;同时检查目标对象的ACL,确认允许该角色读取对象内容。排查网络与VPC限制
若爬虫配置了VPC,需确认S3 VPC endpoint已正确配置,且关联的安全组允许Glue服务访问该endpoint。另外检查VPC的网络访问控制列表(NACL)是否阻止了Glue到S3的流量。确认S3 Block Public Access设置
虽然S3FullAccess通常不受Block Public Access影响,但如果存储桶启用了严格的公共访问阻止规则,且角色权限依赖公共访问路径,可能会触发权限问题,可临时调整测试是否解决。
内容的提问来源于stack exchange,提问作者anonggd

