You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动