AWS Glue作业启动失败求助:权限配置排查指导
AWS Glue作业启动失败排查与修复指南
一、权限配置核心问题分析
1. 冗余的S3存储桶策略
你当前给awsglueudemycourse-ahmed98-etl-artifacts桶配置的策略是直接授权Glue服务主体访问,但Glue作业实际是通过绑定的IAM角色来访问S3的,这个桶策略属于冗余配置,反而可能干扰权限评估逻辑,建议直接删除。
2. IAM角色权限缺失点
你的IAM角色虽然附加了AWSGlueServiceRole托管策略,但S3权限存在关键遗漏:
- 缺少桶级别权限:Glue读取或写入S3时,需要先列出桶内对象,仅配置
GetObject*或*Object这类对象级权限不够,必须补充s3:ListBucket权限。 - 源数据桶
crawlerahmed982022101仅配置了对象级读取权限,没有对应的桶级别列表权限,导致Glue无法遍历桶内文件。 - 目标桶
awsglueudemycourse-ahmed98-etl-targets同样缺少桶级别权限,可能导致无法创建输出路径或写入对象。
二、具体修复步骤
1. 清理S3桶策略
删除awsglueudemycourse-ahmed98-etl-artifacts桶的现有策略,依赖IAM角色权限控制S3访问即可。
2. 更新IAM角色内联策略
修改glueriamole1inlinepolicy,补充缺失的桶级别权限,调整后的策略如下:
{ "Statement": [ { "Action": [ "s3:*Object", "s3:ListBucket", "s3:PutBucketAcl" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::awsglueudemycourse-ahmed98-etl-targets", "arn:aws:s3:::awsglueudemycourse-ahmed98-etl-targets/*" ] }, { "Action": [ "s3:GetObject*", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::crawlerahmed982022101", "arn:aws:s3:::crawlerahmed982022101/crawlerfiles/lab1/csv/*" ] }, { "Action": [ "s3:GetObject*", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::awsglueudemycourse-ahmed98-etl-artifacts", "arn:aws:s3:::awsglueudemycourse-ahmed98-etl-artifacts/gluejob1/*" ] } ], "Version": "2012-10-17" }
- 给每个涉及的S3桶同时配置桶级(不带
/*)和对象级(带/*)权限,确保Glue能正常遍历和访问文件。 - 目标桶补充
s3:PutBucketAcl,避免写入对象时出现权限冲突。
3. 基础配置与日志排查
- 确认Glue作业绑定的IAM角色确实是
gluejobrole1,没有选错角色。 - 检查作业的脚本路径、源数据路径、输出路径是否为合法的S3格式(如
s3://bucket/path/)。 - 查看CloudWatch日志:在Glue控制台进入作业详情页,点击「运行历史」,找到失败的记录并打开日志链接,日志里会明确显示失败原因(如权限拒绝、路径不存在等),这是定位问题最直接的方式。
三、其他常见排查点
- VPC配置:如果作业绑定了VPC,需确保安全组允许出站访问S3,或配置了S3 VPC端点。
- Glue版本:尝试切换到最新的Glue版本(如Glue 4.0),避免旧版本兼容性问题。
- 资源配额:检查账户的Glue并发作业配额是否已满,配额不足也会导致启动失败。
内容的提问来源于stack exchange,提问作者Ahmed Elmattawaa
相关产品推荐
相关产品推荐

