Amazon ECR
用户指南 (API 版本 2015-09-21)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon ECR 接口 VPC 终端节点 (AWS PrivateLink)

您可以将 Amazon ECR 配置为使用接口 VPC 终端节点以改善 VPC 的安全状况。接口终端节点由 AWS PrivateLink 提供支持,您可以使用该技术通过私有 IP 地址私下访问 Amazon ECR API。PrivateLink 将 VPC 和 Amazon ECR 之间的所有网络流量限制在 Amazon 网络以内。而且,您无需 Internet 网关、NAT 设备或虚拟专用网关。对于使用 Fargate 启动类型的 Amazon ECS 任务,这使任务能够从 Amazon ECR 中提取私有镜像,而无需为任务分配公共 IP 地址。

有关 PrivateLink 和 VPC 终端节点的更多信息,请参阅通过 PrivateLink 访问 AWS 服务

Amazon ECR VPC 终端节点的注意事项

在为 Amazon ECR 配置 VPC 终端节点之前,请注意以下事项:

  • 要允许使用 EC2 启动类型的 Amazon ECS 任务从 Amazon ECR 中提取私有镜像,请确保也为 Amazon ECS 创建接口 VPC 终端节点。有关更多信息,请参阅 Amazon Elastic Container Service Developer Guide 中的接口 VPC 终端节点 (AWS PrivateLink)

    重要

    使用 Fargate 启动类型的 Amazon ECS 任务不需要 Amazon ECS 接口 VPC 终端节点。

  • 使用 Fargate 启动类型的任务仅需要 com.amazonaws.region.ecr.dkr Amazon ECR VPC 终端节点和 Amazon S3 网关终端节点即可利用此功能。

  • 使用 Fargate 启动类型从 Amazon ECR 拉取容器映像的任务可以通过向其任务执行角色添加条件键,限制对其任务使用的特定 VPC 和服务使用的 VPC 终端节点的访问。有关更多信息,请参阅 Amazon Elastic Container Service Developer Guide 中的 Amazon ECS 任务执行 IAM 角色

  • VPC 终端节点当前不支持跨区域请求。确保在计划向 Amazon ECR 发出 API 调用的同一区域中创建终端节点。

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

  • 附加到 VPC 终端节点的安全组必须允许从 VPC 的私有子网通过端口 443 进行传入连接。

  • 在创建 Amazon S3 网关终端节点时,如果您的容器具有与 Amazon S3 的连接,则在添加网关时,其连接可能会短暂中断。如果要避免此中断,请创建一个使用 Amazon S3 网关终端节点的新 VPC,然后将 Amazon ECS 集群及其容器迁移到该新 VPC。

为 Amazon ECR 创建 VPC 终端节点

要为 Amazon ECR 服务创建 VPC 终端节点,请使用 Amazon VPC 用户指南 中的创建接口终端节点过程来创建此处描述的终端节点。

如果您的 Amazon ECS 任务使用的是 EC2 启动类型,则需要这两个终端节点,其创建顺序无关紧要。如果您的任务使用的是 Fargate 启动类型,则仅需要 com.amazonaws.region.ecr.dkr 终端节点。

com.amazonaws.region.ecr.api

注意

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

在创建 com.amazonaws.region.ecr.api 终端节点时,启用私有 DNS 主机名是可选的。通过确保在创建 VPC 终端节点时在 VPC 控制台中选择 Enable Private DNS Name (启用私有 DNS 名称) 选项来启用私有 DNS 主机名。如果您为 VPC 终端节点启用私有 DNS 主机名,请将开发工具包或 AWS CLI 更新到最新版本,以便在使用开发工具包或 AWS CLI 时无需指定终端节点 URL。

如果您启用私有 DNS 主机名并使用 2019 年 1 月 24 日版之前的开发工具包或 AWS CLI 版本,则必须使用 --endpoint-url 参数指定接口终端节点。以下示例 CLI 命令显示了终端节点 URL 的格式:

aws ecr create-repository --repository-name name --endpoint-url https://api.ecr.region.amazonaws.com

如果您不为 VPC 终端节点启用私有 DNS 主机名,则必须使用 --endpoint-url 参数并指定接口终端节点的 VPC 终端节点 ID。格式如下:

aws ecr create-repository --repository-name name --endpoint-url https://VPC_endpoint_ID.api.ecr.region.vpce.amazonaws.com
com.amazonaws.region.ecr.dkr

在创建 com.amazonaws.region.ecr.dkr 终端节点时,您必须启用私有 DNS 主机名。为此,请确保在创建 VPC 终端节点时,在 VPC 控制台中选择 Enable Private DNS Name (启用私有 DNS 名称) 选项。

创建 Amazon S3 网关终端节点

由于 Amazon ECR 使用 Amazon S3 存储 Docker 镜像层,因此,所有 Amazon ECS 任务都需要 Amazon S3 网关终端节点以从 Amazon ECR 中提取私有镜像。当容器从 Amazon ECR 下载 Docker 镜像时,它们必须访问 Amazon ECR 以获取镜像清单并访问 Amazon S3 以下载实际镜像层。以下是包含每个 Docker 镜像的层的 Amazon S3 存储桶的 Amazon 资源名称 (ARN):

arn:aws:s3:::prod-region-starport-layer-bucket/*

要为 Amazon ECR 服务创建 Amazon S3 网关终端节点,请使用 Amazon VPC 用户指南 中的创建网关终端节点过程来创建以下终端节点。确保在创建终端节点时,为您的 VPC 选择路由表。

com.amazonaws.region.s3

Amazon S3 网关终端节点使用 IAM 策略文档来限制对服务的访问。由于您在任务 IAM 角色或其他 IAM 用户策略中放入的任何限制仍适用于 Full Access (完全访问) 策略,因此可使用此策略。如果要将 Amazon S3 存储桶访问权限限制为使用 Amazon ECR 所需的最低权限,请参阅 Amazon ECR 的最低 Amazon S3 存储桶权限

创建 CloudWatch Logs 终端节点

对于使用 Fargate 启动类型的任务,如果您的 VPC 没有 Internet 网关,并且您的任务使用 awslogs 日志驱动程序将日志信息发送到 CloudWatch Logs,则您必须为 CloudWatch Logs 创建 com.amazonaws.region.logs 接口 VPC 终端节点。有关更多信息,请参阅 Amazon CloudWatch Logs User Guide 中的将 CloudWatch Logs 与接口 VPC 终端节点一起使用