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

如何配置AWS ECS CLI的JSON参数以注册服务到私有托管区域

嘿,我完全懂你的感受——在AWS UI里点几下就能搞定Route53私有DNS的配置,但到了CLI的JSON参数就有点摸不着头脑了对吧?别慌,其实核心就是在createService.json里加上服务发现注册的相关配置,我给你一步步拆解清楚:

核心配置:serviceRegistries字段

要让ECS服务自动注册到Route53私有托管区域,你必须在JSON里添加serviceRegistries数组,里面包含关联服务发现所需的关键信息。下面是每个参数的作用和填写方式:

  • registryArn: 这里填你的Route53私有托管区域对应的服务发现命名空间ARN,或者直接填私有托管区域的ARN(两者是绑定的,选哪个都可以)。你可以在AWS控制台的服务发现页面或者Route53私有托管区域详情里找到这个ARN。
  • port: 外部通过DNS访问服务时使用的端口,比如你的服务是HTTP的话填80。
  • containerName: (可选)如果你的任务定义里有多个容器,指定要关联的那个容器的名称;如果只有一个容器,这个参数可以省略。
  • containerPort: (可选)容器内部监听的端口,如果和上面的port一致,也可以省略;如果端口映射是不同的(比如容器内部用8080,外部映射80),这里就要填8080。
完整的JSON示例

给你一个可以直接参考的配置模板,把占位符换成你自己的信息就行:

{
  "cluster": "my-ecs-cluster",
  "serviceName": "my-backend-service",
  "taskDefinition": "my-task-def:1",
  "desiredCount": 2,
  "launchType": "FARGATE",
  "networkConfiguration": {
    "awsvpcConfiguration": {
      "subnets": ["subnet-0123456789abcdef0"],
      "securityGroups": ["sg-0123456789abcdef0"],
      "assignPublicIp": "DISABLED"
    }
  },
  "serviceRegistries": [
    {
      "registryArn": "arn:aws:servicediscovery:us-east-1:123456789012:namespace/private-mydomain-com",
      "port": 80,
      "containerName": "backend-container",
      "containerPort": 80
    }
  ]
}
额外注意事项
  • 确保你的ECS任务定义已经正确配置了端口映射,不然服务注册的时候会因为找不到对应端口而失败。
  • 你的ECS集群所在的VPC必须和Route53私有托管区域关联的VPC是同一个,这样私有DNS才能在VPC内部正常解析。
  • 如果用Fargate模式,建议把assignPublicIp设为DISABLED,毕竟是私有DNS,不需要公网IP(除非你的服务同时需要公网访问)。

这样配置之后,运行aws ecs create-service --cli-input-json file://aws/createService.json,ECS就会自动把服务的实例注册到Route53私有托管区域,和你在UI里配置的效果完全一致啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:58