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

在AWS Batch运行Python 3.8.10 Docker镜像时遇urllib3/requests连接超时

解决AWS Batch Fargate任务连接Slack超时的问题

问题分析

你的Batch任务基于Fargate Spot部署在公有子网,但无法连接hooks.slack.com,核心原因是Fargate任务默认不会在公有子网中自动分配公网IP——即便子网路由表指向互联网网关(IGW),没有公网IP的任务也无法直接发起对外HTTPS请求。

补充验证:

  • 你的BERecommenderTrainingSecurityGroup已允许80/443端口的出站流量,这部分配置正常。
  • 公有子网关联的路由表已设置0.0.0.0/0指向IGW,路由规则无问题。

解决方案

1. 为Fargate任务启用公网IP分配

在BERecommenderTrainingJobDefinition的ContainerProperties中添加AssignPublicIp配置,显式开启公网IP分配:

BERecommenderTrainingJobDefinition:
  Type: "AWS::Batch::JobDefinition"
  Properties:
    JobDefinitionName: service-be-recommender-training-job-definition-${sls:stage}
    Type: container
    PlatformCapabilities:
      - FARGATE
    ContainerProperties:
      Image: !GetAtt BERecommenderTrainingRepository.RepositoryUri
      # 新增公网IP分配配置
      AssignPublicIp: ENABLED
      ResourceRequirements:
        - Type: MEMORY
          Value: !If [IsProd, "30720", "512"]
        - Type: VCPU
          Value: !If [IsProd, "4", "0.25"]
      ExecutionRoleArn: !GetAtt BERecommenderTrainingExecutionRole.Arn
      JobRoleArn: !GetAtt BERecommenderTrainingJobRole.Arn
      Environment:
        - Name: "STAGE"
          Value: !If [IsProd, "prod", "dev"]

2. 确认默认安全组出站规则

检查VPC默认安全组的出站规则,若存在出站拒绝配置,需调整为允许(或确保自定义安全组的出站规则覆盖需求)。AWS默认安全组通常允许所有出站流量,若未手动修改则无需调整。

3. 验证DNS解析有效性

你的VPC已开启EnableDnsSupport和EnableDnsHostnames,确保任务可正常解析hooks.slack.com域名,无需额外配置。

替代方案(可选)

若不想为任务分配公网IP,可将Compute Environment迁移至私有子网,通过NAT Gateway访问互联网。需确保私有子网路由表指向NAT Gateway,且NAT Gateway部署在公有子网并绑定弹性IP。但当前架构已使用公有子网,启用公网IP是最直接的解决方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:07:07