在没有公共IP的情况下将EC2实例注册到ECS群集

问题描述 投票:9回答:6

我很难将在我的VPC和私有子网(没有连接到它的互联网网关)上创建的实例添加到ECS群集。

现在,我设法做到这一点的唯一方法是添加公共IP并配置NAT实例/网关。

如何将ECS群集与私有子网一起使用?

amazon-web-services amazon-ec2 amazon-ecs
6个回答
9
投票

我想我在AWS文档上找到了答案,似乎我需要使用NAT实例/网关:(

另一个sourceofficial documentaion

“...容器实例需要外部网络访问才能与Amazon ECS服务端点通信,因此,如果容器实例在专用VPC中运行,则需要网络地址转换(NAT)实例来提供此访问权限。有关详细信息,请参阅Amazon VPC用户指南中的NAT实例。“


2
投票

PrivateLinks is now available, for both ECS & ECR

使用PrivateLinks,您可以在没有公共IP的情况下注册和操作EC2实例和Fargate到ECS群集,也可以从ECR访问图像。

端点要求:

For ECS:

EC2启动类型:

com.amazonaws.region.ecs-agent
com.amazonaws.region.ecs-telemetry
com.amazonaws.region.ecs

Fargate发射类型:

只需要ECR和cloudwatch端点(如下所述)

For ECR:

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 endpointcom.amazonaws.Region.logs.


0
投票

要在ECS上注册实例,您需要实例的外部连接。

来自私有子网上的实例的传出连接需要NAT,但不需要公共IP。

ECS在每个服务器中启动一个容器,需要连接到用于管理状态的服务,为此,您的私有子网上的实例需要通过NAT连接到外部世界。


0
投票

这个问题很难回答。 ECS只是在您的配置中启动Ec2实例。如果您在没有公共IP的子网中启动它们,它们就不会拥有它们。您必须有适当的基础设施才能到达它们,例如NAT,VPN等.ECS集群没有特殊配置。如果您可以访问EC2实例,则应该能够访问ECS实例。


0
投票

我还试图通过将群集部署到私有子网来阻止对ECS实例的公共请求,后来发现我需要NAT服务器/网关,每天花费大约1美元。

如果您只想阻止对ECS实例的狡猾嗅探请求,您可以更新ECS实例的安全组,同时将它们保留在公有子网中。这将为您节省30美元/天。


0
投票

一个VPC endpoint for ECS is now available。它还没有正式宣布(在AWS的公共容器路线图上的state "Coming soon")。

如果他们没有说明,那么在22$/monthPrivateLink costs的3个可用区域的us-east,没有交通费用)的成本最低。

© www.soinside.com 2019 - 2024. All rights reserved.