AWS Glue作业因Amazon S3连接超时失败求助
解决AWS Glue作业无法下载S3脚本的连接超时问题
从你提供的错误日志来看,核心问题是Glue作业的Worker节点无法连接到存放脚本的S3桶(aws-glue-scripts-558091818291-eu-west-1),导致连接超时。结合你已经配置了S3 VPC终端节点的背景,问题大概率出在终端节点的配置或者网络路由上——因为你的Glue作业关联了RDS连接,意味着作业会在VPC内部运行,必须通过S3 VPC终端节点才能访问S3资源。
下面是具体的排查和修复步骤:
1. 确认S3 VPC终端节点类型正确
S3的VPC终端节点必须是网关型(Gateway Endpoint),而不是接口型(Interface Endpoint)。网关型终端节点是免费的,专门用于VPC内访问S3,接口型终端节点不适用S3的常规访问场景。你可以在VPC控制台的“终端节点”页面检查类型。
2. 验证终端节点与路由表的关联
你的Glue作业所在VPC的子网,其关联的路由表必须包含指向S3网关终端节点的路由:
- 目标地址选择S3的前缀列表(Prefix List)(格式为
pl-xxxx,对应eu-west-1区域的S3服务) - 下一跳选择你创建的S3网关终端节点
- 如果路由表中没有这条路由,Glue Worker会尝试通过互联网访问S3,而VPC内的实例可能没有互联网出口权限,导致超时。
3. 检查终端节点的权限策略
S3网关终端节点的策略需要允许你的Glue角色访问脚本桶和临时桶:
{ "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::aws-glue-scripts-558091818291-eu-west-1", "arn:aws:s3:::aws-glue-scripts-558091818291-eu-west-1/*", "arn:aws:s3:::aws-glue-temporary-558091818291-eu-west-1", "arn:aws:s3:::aws-glue-temporary-558091818291-eu-west-1/*" ] } ] }
确保策略覆盖了脚本桶、临时桶的读/写/列表权限。
4. 确认Glue作业的网络配置
在Glue作业的编辑页面,进入“安全配置、脚本和库”部分:
- 确认已选择正确的VPC、子网(这些子网必须关联了包含S3终端节点路由的路由表)
- 安全组需要允许出站流量(网关型终端节点不需要安全组规则,但如果你的VPC有严格的出站限制,确保没有阻止S3相关的流量)
5. 验证Glue角色的S3权限
你的Glue角色(附加了AWSGlueServiceRole策略)还需要额外的S3权限,允许访问脚本桶、临时桶和目标输出桶。可以添加一个自定义策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::aws-glue-scripts-558091818291-eu-west-1/*", "arn:aws:s3:::aws-glue-temporary-558091818291-eu-west-1/*", "arn:aws:s3:::aws-glue-test-etl/*" ] } ] }
完成以上检查后,重新运行Glue作业,应该就能正常下载脚本并执行ETL任务了。
内容的提问来源于stack exchange,提问作者MarcF




