ECS CFT模板报错:不支持links属性,如何创建同网络双容器任务?
解决ECS任务定义中
links属性不支持的问题 你遇到的错误是因为AWS ECS任务定义已经不再支持links这个属性——这个属性是早期Docker容器间通信的旧方式,ECS已经摒弃了它,转而采用更简洁的容器名称直接通信的机制。
具体解决方案:
- 移除
links配置项:在你的exampleA容器定义里删掉"links": ["exampleB"]这一行。 - 容器间直接通过名称通信:在同一ECS任务中的容器,当使用
bridge网络模式时,默认处于同一个网络环境中,exampleA可以直接用容器名称exampleB作为主机名来访问exampleB容器的服务(如果exampleB有开放端口,直接加上对应端口即可)。
修改后的任务定义示例:
"EcsTask": { "Type": "AWS::ECS::TaskDefinition", "Properties": { "Family": "...", "NetworkMode": "bridge", "ContainerDefinitions": [ { "Name": "exampleA", "Essential": true, "Image": "...", "PortMappings": [ { "HostPort": 8000, "ContainerPort": 8000, "Protocol": "tcp" } ], "MemoryReservation": 256 }, { "Name": "exampleB", "Essential": true, "Image": "..." } ] } }
补充说明:
如果你的exampleB容器需要对exampleA暴露端口,可以给它也添加PortMappings配置,但同一任务内的容器通信不需要映射到主机端口,只需要指定ContainerPort即可(无需设置HostPort)。
内容的提问来源于stack exchange,提问作者D.Tan
相关产品推荐
相关产品推荐

