无法使用AWS Fargate创建WikiJS服务:镜像拉取超时报错
无法在AWS Fargate创建WikiJS服务,镜像拉取超时错误
错误详情
Task stopped at: 2023-09-07T07:38:26.182Z ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.ap-south-1.amazonaws.com/": dial tcp 13.234.9.96:443: i/o timeout. Please check your task network configuration.
问题描述
按照WikiJS官方部署步骤在AWS ECS(Fargate)搭建服务,初始使用文档指定的公共镜像时出现上述拉取超时错误;之后将镜像推送到自有ECR仓库并配置对应镜像URI,问题仍未解决。
环境变量配置
| Key | Type | Value |
|---|---|---|
| DB_TYPE | Value | postgres |
| DB_SSL | Value | false |
| DB_PORT | Value | 5432 |
| DB_HOST | Value | AWS数据库地址 |
| DB_NAME | Value | wikijs |
| DB_USER | Value | postgres |
| DB_PASS | Value | 数据库密码 |
排查与解决步骤
检查Fargate任务网络配置
- 确认任务所属VPC的子网类型:私有子网需配置NAT网关以访问公网;公有子网需确保路由表包含指向Internet Gateway的路由,且任务网络模式为awsvpc时需分配公有IP。
- 验证安全组出站规则:允许HTTPS(443端口)访问
0.0.0.0/0,确保能连接ECR API及镜像仓库。
ECR权限与区域一致性检查
- 确认任务执行角色拥有
AmazonEC2ContainerRegistryReadOnly权限,或包含允许拉取ECR镜像的自定义策略。 - 检查ECR仓库所在区域与Fargate任务区域是否一致(错误显示区域为ap-south-1,需确保任务部署在同一区域)。
- 确认任务执行角色拥有
DNS解析验证
- 在同VPC的EC2实例上测试解析
api.ecr.ap-south-1.amazonaws.com,确认DNS服务正常工作;若解析失败,检查VPC的DNS服务器配置是否能正常解析AWS服务域名。
- 在同VPC的EC2实例上测试解析
镜像拉取测试
- 在同VPC的EC2实例上执行以下命令验证镜像拉取:
排除镜像本身或权限层面的问题。aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin <你的ECR仓库URI前缀> docker pull <你的ECR镜像URI>
- 在同VPC的EC2实例上执行以下命令验证镜像拉取:
数据库连通性预验证
- 后续需确保Fargate任务能访问PostgreSQL数据库:检查数据库安全组允许任务所在安全组的5432端口入站,且数据库与任务在同一VPC或通过VPC对等连接/专线可达。
内容的提问来源于stack exchange,提问作者Saurabh Mestry
相关产品推荐
相关产品推荐

