我很难将在我的VPC和私有子网(没有连接到它的互联网网关)上创建的实例添加到ECS群集。
现在,我设法做到这一点的唯一方法是添加公共IP并配置NAT实例/网关。
如何将ECS群集与私有子网一起使用?
我想我在AWS文档上找到了答案,似乎我需要使用NAT实例/网关:(
另一个source和official documentaion
“...容器实例需要外部网络访问才能与Amazon ECS服务端点通信,因此,如果容器实例在专用VPC中运行,则需要网络地址转换(NAT)实例来提供此访问权限。有关详细信息,请参阅Amazon VPC用户指南中的NAT实例。“
PrivateLinks is now available, for both ECS & ECR
使用PrivateLinks,您可以在没有公共IP的情况下注册和操作EC2实例和Fargate到ECS群集,也可以从ECR访问图像。
端点要求:
EC2启动类型:
com.amazonaws.region.ecs-agent
com.amazonaws.region.ecs-telemetry
com.amazonaws.region.ecs
Fargate发射类型:
只需要ECR和cloudwatch端点(如下所述)
EC2启动类型:
com.amazonaws.region.ecr.dkr
com.amazonaws.region.ecr.api
com.amazonaws.region.s3 (S3 gateway endpoint)
Fargate发射类型:
com.amazonaws.region.ecr.dkr
com.amazonaws.region.s3 (S3 gateway endpoint)
另外,如果你使用awslogs驱动程序,你也添加了cloudwatch endpoint。 com.amazonaws.Region.logs.
要在ECS上注册实例,您需要实例的外部连接。
来自私有子网上的实例的传出连接需要NAT,但不需要公共IP。
ECS在每个服务器中启动一个容器,需要连接到用于管理状态的服务,为此,您的私有子网上的实例需要通过NAT连接到外部世界。
这个问题很难回答。 ECS只是在您的配置中启动Ec2实例。如果您在没有公共IP的子网中启动它们,它们就不会拥有它们。您必须有适当的基础设施才能到达它们,例如NAT,VPN等.ECS集群没有特殊配置。如果您可以访问EC2实例,则应该能够访问ECS实例。
我还试图通过将群集部署到私有子网来阻止对ECS实例的公共请求,后来发现我需要NAT服务器/网关,每天花费大约1美元。
如果您只想阻止对ECS实例的狡猾嗅探请求,您可以更新ECS实例的安全组,同时将它们保留在公有子网中。这将为您节省30美元/天。
一个VPC endpoint for ECS is now available。它还没有正式宣布(在AWS的公共容器路线图上的state "Coming soon")。
如果他们没有说明,那么在22$/month
(PrivateLink costs的3个可用区域的us-east
,没有交通费用)的成本最低。