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

私有子网ECS任务无法通过VPC端点拉取ECR镜像求助

私有子网ECS任务拉取ECR镜像失败的配置补充与排查点

必需的VPC端点配置

  • 除了ECR的com.amazonaws.<region>.ecr.api和com.amazonaws.<region>.ecr.dkr接口型端点,必须添加S3网关型端点(com.amazonaws.<region>.s3)——ECR镜像实际存储在S3中,拉取镜像时会触发对S3的请求,没有这个端点的话,私有子网内的任务无法完成镜像拉取的完整流程。
  • 注意端点类型区分:ECR的两个端点是接口型,S3是网关型,网关型端点需要关联到私有子网的路由表。

VPC DNS配置

  • 确保VPC的enableDnsSupport和enableDnsHostnames均设为true,否则私有子网内的ECS任务无法解析ECR的域名。Terraform配置示例:
resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_support   = true
  enable_dns_hostnames = true
}

路由表验证

  • 针对S3网关端点,需在私有子网的路由表中添加路由规则:目标为S3的前缀列表(可通过AWS控制台或aws ec2 describe-prefix-lists命令获取),下一跳指向S3网关端点。
  • ECR接口型端点会自动在关联子网的路由表中添加路由,但要确认私有子网已被纳入端点的子网列表中。

安全组规则细节

  • ECS任务所在的安全组需配置出站规则,允许HTTPS(443端口)流量到VPC的CIDR范围(或ECR端点的私有IP)。
  • 同时,ECR接口端点的安全组必须配置入站规则,允许来自ECS任务安全组的HTTPS(443端口)流量——很多人会忽略端点侧的入站规则,导致流量被阻断。

IAM权限检查

  • 确保ECS任务执行角色拥有AmazonEC2ContainerRegistryReadOnly权限(或自定义的等效权限策略),允许拉取目标ECR镜像。Terraform配置示例:
resource "aws_iam_role_policy_attachment" "ecs_task_execution_ecr" {
  role       = aws_iam_role.ecs_task_execution.name
  policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
}

端点私有DNS设置

  • 对于ECR的接口型端点,需开启private_dns_enabled(设为true),这样ECS任务可以使用默认的ECR域名(如<account-id>.dkr.ecr.<region>.amazonaws.com)访问,无需手动修改镜像地址。Terraform配置示例:
resource "aws_vpc_endpoint" "ecr_dkr" {
  vpc_id            = aws_vpc.main.id
  service_name      = "com.amazonaws.${var.region}.ecr.dkr"
  vpc_endpoint_type = "Interface"
  security_group_ids = [aws_security_group.ecr_endpoint.id]
  subnet_ids        = [aws_subnet.private.*.id]
  private_dns_enabled = true
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:00:17