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

Ion*_*nut 9 amazon-ec2 amazon-web-services amazon-ecs

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

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

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

Ion*_*nut 10

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

另一个来源,也是官方文件

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

  • 更新:在向亚马逊提出问题后,他们很快回复并更新了他们的[docs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html)的"第8步"反映:`注意:Container实例需要外部网络访问才能与Amazon ECS服务端点通信,因此如果您的容器实例没有公共IP地址,那么他们必须使用网络地址转换(NAT)或HTTP代理来提供此功能访问.有关更多信息,请参阅本指南中的Amazon VPC用户指南和HTTP代理配置中的NAT实例 (2认同)

Man*_*gal 9

PrivateLinks 现已推出,适用于 ECS 和 ECR

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

所需端点:

对于弹性云服务器:

EC2 启动类型:

com.amazonaws.region.ecs-agent
com.amazonaws.region.ecs-telemetry
com.amazonaws.region.ecs
Run Code Online (Sandbox Code Playgroud)

Fargate 启动类型:

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

对于 ECR:

EC2 启动类型:

com.amazonaws.region.ecr.dkr
com.amazonaws.region.ecr.api
com.amazonaws.region.s3 (S3 gateway endpoint)
Run Code Online (Sandbox Code Playgroud)

Fargate 启动类型:

com.amazonaws.region.ecr.dkr 
com.amazonaws.region.s3 (S3 gateway endpoint)
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用 awslogs 驱动程序,则还 需要添加cloudwatch 端点。com.amazonaws.Region.logs.