Amazon web services 在服务发现命名空间(专用托管区域)中注册AWS ECS任务

Amazon web services 在服务发现命名空间(专用托管区域)中注册AWS ECS任务,amazon-web-services,dns,amazon-ecs,Amazon Web Services,Dns,Amazon Ecs,我很不擅长使用AWS,但我正在尝试使用新的服务发现机制,在route53中使用私有DNS名称自动设置ECS群集。我可以通过AWS UI单击我的方式来完成显示在私有托管区域中的DNS条目,但我无法找出要添加到JSON中的JSON参数,以便下面的命令完成相同的任务 aws ecs create-service --cli-input-json file://aws/createService.json 下面是createService.json的大致内容 上面提到的 "cluster": "c

我很不擅长使用AWS,但我正在尝试使用新的服务发现机制,在route53中使用私有DNS名称自动设置ECS群集。我可以通过AWS UI单击我的方式来完成显示在私有托管区域中的DNS条目,但我无法找出要添加到JSON中的JSON参数,以便下面的命令完成相同的任务

aws ecs create-service --cli-input-json file://aws/createService.json
下面是createService.json的大致内容 上面提到的

  "cluster": "clustername",
  "serviceName": "servicename",
  "taskDefinition": "taskname",
  "desiredCount": 1,

  // here is where I'm guessing there should be some DNS config referencing some
  // namespace or similar that I cannot figure out...

  "networkConfiguration": {
    "awsvpcConfiguration": {
      "subnets": [
        "subnet-11111111"
      ],
      "securityGroups": [
        "sg-111111111"
      ],
      "assignPublicIp": "DISABLED"
    }
  }

如果有任何想法,我将不胜感激,因为我的谷歌搜索能力显然不足以解决这个问题。非常感谢

事实证明,ecs create service不支持将其添加到服务注册表,即route53专用托管区域。相反,我必须使用
aws servicediscovery创建服务
,然后使用
servicediscovery注册实例
,最终在我的私有托管区域中获得一个条目


这成为了一个相当复杂的解决方案,因此我将尝试一下Terraform,因为我发现他们最近添加了对ECS服务发现的支持,并了解这将把我带到哪里…

,因为ECS创建服务中不支持将其添加到服务注册中心,即route53私有托管区域。相反,我必须使用
aws servicediscovery创建服务
,然后使用
servicediscovery注册实例
,最终在我的私有托管区域中获得一个条目


这成为了一个相当复杂的解决方案,因此我将尝试一下Terraform,因为我发现他们最近增加了对ECS服务发现的支持,并了解这将把我带到哪里…

要将ECS服务注册实例自动添加到servicediscovery服务中,您可以使用
ServiceRegisters
属性。将以下内容添加到ECS服务定义json中:

{ 
    ...
    "serviceRegistries": [
       {
          "registryArn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk"
       }
    ]
}
该属性包含自动发现服务的列表,ECS在创建或销毁作为服务一部分的任务时应更新这些服务。使用自动发现服务的ARN引用每个注册表

要获取Arn,请使用AWS cli命令
AWS servicediscovery list services


奇怪的是,的文档中不包含有关此属性的信息。但是,这是正确的。

要将ECS服务实例自动注册到servicediscovery服务中,您可以使用
ServiceRegisteries
属性。将以下内容添加到ECS服务定义json中:

{ 
    ...
    "serviceRegistries": [
       {
          "registryArn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk"
       }
    ]
}
该属性包含自动发现服务的列表,ECS在创建或销毁作为服务一部分的任务时应更新这些服务。使用自动发现服务的ARN引用每个注册表

要获取Arn,请使用AWS cli命令
AWS servicediscovery list services

奇怪的是,的文档中不包含有关此属性的信息。然而,这是真的