Amazon ECS 接口 VPC 端点 (AWS PrivateLink) - Amazon Elastic Container Service

Amazon ECS 接口 VPC 端点 (AWS PrivateLink)

您可以将 Amazon ECS 配置为使用接口 VPC 端点以改善 VPC 的安全状况。接口端点由 AWS PrivateLink 提供支持,通过该技术,您可以使用私有 IP 地址私密访问 Amazon ECS API。AWS PrivateLink 限制您的 VPC 和 Amazon ECS 之间的所有网络流量到达 Amazon 网络。您无需互联网网关、NAT 设备或虚拟私有网关。

有关 AWS PrivateLink 和 VPC 端点的更多信息,请参阅 Amazon VPC 用户指南中的 VPC 端点

Amazon ECS VPC 端点注意事项

Fargate 启动类型的 Amazon ECS VPC 端点的考虑因素

当其中部署了 Fargate 任务的同一 VPC 中有 ecr.dkrecr.api 的 VPC 端点时,其将使用 VPC 端点。如果没有 VPC 端点,则其将使用 Fargate 接口。

在为 Amazon ECS 设置接口 VPC 端点之前,请注意以下事项:

  • 使用 Fargate 启动类型的任务不需要 Amazon ECS 的接口 VPC 端点,但您可能需要 Amazon ECR、Secrets Manager 或 Amazon CloudWatch Logs 的接口 VPC 端点,如以下几点所述。

    • 要允许您的任务从 Amazon ECR 拉取私有镜像,您必须为 Amazon ECR 创建接口 VPC 端点。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的接口 VPC 端点 (AWS PrivateLink)

      如果您的 VPC 没有互联网网关,您必须为 Amazon S3 创建网关端点。有关更多信息,请参阅《Amazon Elastic Container Registry 用户指南》中的创建 Amazon S3 网关端点。Amazon S3 的接口端点不能与 Amazon ECR 一起使用。

      重要

      如果您将 Amazon ECR 配置为使用接口 VPC 端点,则可以创建包含条件键的任务执行角色,以限制对特定 VPC 或 VPC 端点的访问。有关更多信息,请参阅 通过接口端点拉取 Amazon ECR 映像的 Fargate 任务的可选 Amazon ECS IAM 权限

    • 要允许您的任务从 Secrets Manager 拉取敏感数据,您必须为 Secrets Manager 创建接口 VPC 端点。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的将 Secrets Manager 与 VPC 端点结合使用

    • 如果您的 VPC 没有互联网网关,并且您的任务使用 awslogs 日志驱动程序将日志信息发送到 CloudWatch Logs,则必须为 CloudWatch Logs 创建一个接口 VPC 端点。有关更多信息,请参阅 Amazon CloudWatch Logs 用户指南中的将 CloudWatch Logs 与接口 VPC 端点结合使用

  • VPC 端点当前不支持跨区域请求。确保在计划向 Amazon ECS 发出 API 调用的同一区域中创建端点。例如,假设您要在美国东部(弗吉尼亚州北部)运行任务。然后,您必须在美国东部(弗吉尼亚州北部)创建 Amazon ECS VPC 端点。在任何其他区域创建的 Amazon ECS VPC 端点都无法在美国东部(弗吉尼亚州北部)运行任务。

  • VPC 端点仅通过 Amazon Route 53 支持 Amazon 提供的 DNS。如果您希望使用自己的 DNS,可以使用条件 DNS 转发。有关更多信息,请参阅《Amazon VPC 用户指南》中的 DHCP 选项集

  • 附加到 VPC 端点的安全组必须允许 TCP 端口 443 上来自 VPC 私有子网的传入连接。

  • Envoy 代理的 Service Connect 管理使用 com.amazonaws.region.ecs-agent VPC 端点。当您不使用 VPC 端点时,Envoy 代理的 Service Connect 管理将使用该区域中的 ecs-sc 端点。有关每个区域的 Amazon ECS 端点的列表,请参阅 Amazon ECS 端点和配额

EC2 启动类型的 Amazon ECS VPC 端点的考虑因素

在为 Amazon ECS 设置接口 VPC 端点之前,请注意以下事项:

  • 使用 EC2 启动类型的任务要求启动它们的容器实例运行 1.25.1 或更高版本的 Amazon ECS 容器代理。有关更多信息,请参阅 Linux 容器实例管理

  • 要允许您的任务从 Secrets Manager 拉取敏感数据,您必须为 Secrets Manager 创建接口 VPC 端点。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的将 Secrets Manager 与 VPC 端点结合使用

  • 如果您的 VPC 没有互联网网关,并且您的任务使用 awslogs 日志驱动程序将日志信息发送到 CloudWatch Logs,则必须为 CloudWatch Logs 创建一个接口 VPC 端点。有关更多信息,请参阅 Amazon CloudWatch Logs 用户指南中的将 CloudWatch Logs 与接口 VPC 端点结合使用

  • VPC 端点当前不支持跨区域请求。确保在计划向 Amazon ECS 发出 API 调用的同一区域中创建端点。例如,假设您要在美国东部(弗吉尼亚州北部)运行任务。然后,您必须在美国东部(弗吉尼亚州北部)创建 Amazon ECS VPC 端点。在任何其他区域创建的 Amazon ECS VPC 端点都无法在美国东部(弗吉尼亚州北部)运行任务。

  • VPC 端点仅通过 Amazon Route 53 支持 Amazon 提供的 DNS。如果您希望使用自己的 DNS,可以使用条件 DNS 转发。有关更多信息,请参阅《Amazon VPC 用户指南》中的 DHCP 选项集

  • 附加到 VPC 端点的安全组必须允许 TCP 端口 443 上来自 VPC 私有子网的传入连接。

为 Amazon ECS 创建 VPC 端点

要为 Amazon ECS 服务创建VPC端点,请使用 Amazon VPC 用户指南中的创建接口端点过程创建以下端点。如果您的 VPC 中当前有容器实例,则应按其列出的顺序创建终端节点。如果您计划在创建 VPC 终端节点后创建容器实例,则顺序无关紧要。

  • com.amazonaws.region.ecs-agent

  • com.amazonaws.region.ecs-telemetry

  • com.amazonaws.region.ecs

注意

区域 表示 Amazon ECS 支持的 AWS 区域的区域标识符,例如美国东部(俄亥俄)区域的 us-east-2

ecs-agent 端点使用 ecs:poll API,而 ecs-telemetry 端点使用 ecs:pollecs:StartTelemetrySession API。

如果您当前有使用 EC2 启动类型的任务,则在创建 VPC 端点后,每个容器实例都需要采用新的配置。为实现此目的,您必须重新启动每个容器实例或重新启动每个容器实例上的 Amazon ECS 容器代理。要重新启动容器代理,请执行以下操作。

重启 Amazon ECS 容器代理
  1. 通过 SSH 登录到容器实例。

  2. 停止 容器代理。

    sudo docker stop ecs-agent
  3. 启动容器代理。

    sudo docker start ecs-agent

在创建 VPC 端点并在每个容器实例上重新启动 Amazon ECS 容器代理后,所有新启动的任务都将采用新配置。

为 Amazon ECS 创建 VPC 端点策略

您可以为 VPC 端点附加控制对 Amazon ECS 的访问的端点策略。该策略指定以下信息:

  • 可执行操作的主体。

  • 可执行的操作。

  • 可对其执行操作的资源。

有关更多信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 端点控制对服务的访问

示例:Amazon ECS 操作的 VPC 端点策略

下面是用于 Amazon ECS 的端点策略示例。当附加到终端节点时,此策略会向您授予创建和列出集群的访问权限。CreateClusterListClusters 操作不接受任何资源,因此,所有资源的资源定义将设置为 *。

{ "Statement":[ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": [ "*" ] } ] }