AWS ECS Fargate任务无法访问Rekognition服务-504网关超时排查
问题描述
已配置AWS ECS Fargate服务,任务绑定任务角色,同时为Rekognition服务配置了VPC终端节点。但调用Rekognition服务API时出现504网关超时。采用类似配置可正常调用S3存储桶,请问连接Rekognition API时遗漏了什么配置?
现有配置信息
任务角色策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rekognition:*" ], "Resource": "*" } ] }
任务角色信任关系
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
服务安全组规则

网络环境
ECS服务运行在私有子网中。
排查与解决方案
针对私有子网中ECS Fargate调用Rekognition VPC终端节点出现504超时的问题,结合S3正常的对比,重点检查以下关键配置:
1. Rekognition VPC终端节点类型与DNS配置
Rekognition仅支持接口型VPC终端节点(服务名称为com.amazonaws.<区域>.rekognition),而S3使用的是网关型终端节点,这是核心差异:
- 确认创建的是Rekognition接口终端节点,而非错误创建网关终端节点。
- 必须勾选终端节点的
Enable DNS name选项。若未启用DNS,Fargate任务无法通过Rekognition公共域名解析到终端节点私有IP,会尝试走公网导致超时。
2. 安全组规则互访配置
- 检查Rekognition接口终端节点的安全组,需添加入站规则:允许ECS任务所在安全组发起的TCP 443端口流量。
- 确认ECS任务的安全组出站规则(从截图看是全放开),但需确保终端节点安全组的入站规则未限制流量。
3. 网络ACL双向放行
私有子网对应的网络ACL需同时配置:
- 出站规则:允许TCP 443流量到Rekognition终端节点的CIDR范围。
- 入站规则:允许TCP 443的响应流量(从终端节点CIDR到私有子网CIDR)。
4. Rekognition API的S3依赖处理
若调用的Rekognition接口(如DetectLabels)需要访问S3中的媒体文件,需额外确认:
- S3网关型终端节点已配置,且私有子网路由表添加了对应路由条目。
- 任务角色拥有访问目标S3对象的权限(权限缺失可能导致超时或隐式失败)。
快速验证步骤
- 在同私有子网内启动测试EC2实例,绑定相同任务角色,调用Rekognition API并抓包,确认流量是否指向终端节点私有IP。
- 查看Rekognition终端节点的CloudWatch指标(如
ConnectionAttempts、ConnectionErrors),定位连接失败原因。
内容的提问来源于stack exchange,提问作者Mallikarjun Sannapyati
相关产品推荐
相关产品推荐

