Amazon web services 如何在AWS ECS中绑定IP:端口

Amazon web services 如何在AWS ECS中绑定IP:端口,amazon-web-services,Amazon Web Services,我无法在AWS ECS任务定义中将IP:port绑定到容器端口。这样在命令行上 docker run "-p 172.17.42.1:14242:3000" 172.17.42.1:14242是IP:port。但是在AWS ECS中只有两个选项,hostPort和containerPort,它们只接受整数而不接受字符串: "portMappings": [ { "hostPort": 14242, "containerPort": 3000 } ] 那么,如

我无法在
AWS ECS
任务定义中将
IP:port
绑定到容器端口。这样在命令行上

docker run "-p 172.17.42.1:14242:3000"
172.17.42.1:14242
IP:port
。但是在
AWS ECS
中只有两个选项,
hostPort
containerPort
,它们只接受整数而不接受字符串:

"portMappings": [
   {
      "hostPort": 14242,
      "containerPort": 3000
  }
]
那么,如何在任务定义中提供
IP:port

当我进行(无IP)
port:port
映射时,在创建任务后,我会:

aws ecs describe-tasks
它表明

0.0.0.0:14242:3000


但我希望特定的IP不是
0.0.0.0

据我所知,这不是一个受支持的功能,而且在ECS上没有太大意义,因为主机实例的IP地址事先不知道

ECS旨在使用“集群”中所有可用的EC2实例来部署属于服务/任务的容器。ECS的核心功能之一是能够灵活地以特别方式在集群中添加/删除/更新EC2实例,并允许在启动任务的特定时间将容器部署到任何具有可用资源的集群实例上。这意味着不能保证在创建任务定义时提前知道IP地址,因为您无法确定它将部署在哪个EC2实例上

如果您确实有一个强大的用例,必须在特定EC2实例和IP上部署任务/容器,那么您可以通过直接与ECS代理交互来推出自己的解决方案。[1] [2]

也就是说,我强烈建议重新检查您的设计,并尝试以主机/ip不可知的方式实现它。例如,您可以在ECS“服务”定义[3]中使用弹性负载平衡器(ELB),以允许通过固定DNS主机名访问容器,而不管容器托管在哪个IP上

[1]

[2]


[3]

您是否有需要此功能的特定用例?ECS可能不是适合您需求的解决方案,因为它不能保证在特定硬件上部署特定的容器。