本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ECR 中的私有映像复制
您可以配置 Amazon ECR 私有注册表以支持存储库的复制。Amazon ECR 同时适用于跨区域和跨账户复制。要进行跨账户复制,目标账户必须配置注册表权限策略,以允许从源注册表进行复制。有关更多信息,请参阅 Amazon ECR 中的私有注册表权限。
跨账户复制政策要求
要使跨账户 ECR 复制正常工作,您必须了解哪个账户需要配置哪些策略。本节阐明了源账户和目标账户的政策要求。
策略配置概述
跨账户 ECR 复制仅需要在目标账户上配置策略。源帐户不需要任何特殊的存储库或注册表策略。
-
源帐户:在注册表设置中配置复制规则。无需为源存储库设置其他策略。
-
目标帐户:配置注册表权限策略以允许源帐户复制映像。
目标注册表政策要求
目标帐户必须配置注册表权限策略,以授予源帐户执行以下操作的权限:
-
ecr:ReplicateImage-允许源帐户将图像复制到目标注册表 -
ecr:CreateRepository-允许 ECR 在目标注册表中自动创建存储库(如果这些存储库尚不存在)
重要
如果您不授予ecr:CreateRepository权限,则必须在目标账户中手动创建同名的存储库,然后才能成功复制。
目标注册表策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountReplication", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SOURCE-ACCOUNT-ID:root" }, "Action": [ "ecr:ReplicateImage", "ecr:CreateRepository" ] } ] }
源账户要求
来源账户只需:
-
在注册表设置中配置复制规则以指定目标账户和区域
-
确保配置复制的 IAM 委托人拥有必要的 ECR 权限
无需为源存储库设置其他策略。源存储库不需要授予复制权限的存储库策略。
常见的误解
以下是关于 ECR 跨账户复制策略的常见误解:
-
误解:源存储库需要一个允许目标账户复制图像的策略。
现实:源存储库不需要任何特殊的复制策略。
-
误解:源账户和目标账户都需要注册表策略。
现实:只有目标账户需要注册表权限策略。
-
误解:存储库策略和注册表策略是一回事。
现实:存储库策略控制对单个存储库的访问,而注册表策略控制注册表级别的操作,例如复制。
复制失败疑难解答
如果跨账户复制失败,请检查以下内容:
-
验证目标账户是否配置了注册表权限策略
-
确保注册表策略同时包含
ecr:ReplicateImage和ecr:CreateRepository操作 -
确认在目标注册表策略中正确指定了源帐户 ID
-
检查目标存储库是否存在(如果
ecr:CreateRepository未获得授权) -
查看失败
CreateRepository或ReplicateImageAPI 调用的 CloudTrail 日志
私有镜像复制的注意事项
使用私有镜像复制时应注意以下事项。
-
只有在配置复制之后,推送到存储库的内容才会被复制。存储库中任何先前存在的内容都不会复制。为存储库配置复制后,Amazon ECR 将保持目标和源同步。
-
复制完成后,跨区域和账户的存储库名称将保持不变。Amazon ECR 不支持在复制过程中更改存储库名称。
-
首次配置私有注册表以进行复制时,Amazon ECR 会代表您创建服务相关 IAM 角色。服务相关 IAM 角色授予 Amazon ECR 复制服务在注册表中创建存储库和复制镜像所需的权限。有关更多信息,请参阅 对 Amazon ECR 使用服务相关角色。
-
要进行跨账户复制,私有注册表目标必须授予允许源注册表复制其镜像的权限。通过设置私有注册表权限策略来完成此授权。有关更多信息,请参阅 Amazon ECR 中的私有注册表权限。
-
如果更改私有注册表的权限策略以删除权限,则以前授予权限的任何进行中复制都可能完成。
-
要进行跨区域复制,在该区域内或向该区域进行任何复制操作之前,源账户和目标账户都必须选择加入该区域。有关更多信息,请参阅《Amazon Web Services 一般参考》中的管理 AWS 区域。
-
不支持在 AWS 分区之间进行跨区域复制。例如,
us-west-2中的存储库无法复制到cn-north-1。有关 AWS 分区的更多信息,请参阅《AWS 一般参考》中的 ARN 格式。 -
私有注册表的复制配置最多可以包含 25 个跨所有规则的唯一目标,最多共有 10 个规则。每个规则最多可包含 100 个筛选条件。这允许为包含用于生产和测试的镜像的存储库指定单独的规则。
-
复制配置支持通过指定存储库前缀来筛选私有注册表中复制的存储库。有关示例,请参阅 示例:使用存储库筛选条件配置跨区域复制。
-
每次镜像推送只会执行一次复制操作。例如,如果您配置了从
us-west-2到us-east-1以及从us-east-1到us-east-2的跨区域复制,则推送到us-west-2的镜像仅复制到us-east-1,它不会再复制到us-east-2。此行为同时适用于跨区域和跨账户复制。 -
大多数映像会在不到 30 分钟的时间内复制,但在极少数情况下,复制可能需要更长的时间。
-
注册表复制不执行任何删除操作。复制镜像和存储库不再使用时,可以手动删除它们。
-
存储库策略 (包括 IAM policy) 和生命周期策略不会被复制,而且除了对为其定义的存储库之外,不会产生任何影响。
-
默认情况下不会复制存储库设置,您可以使用存储库创建模板来复制存储库设置。这些设置包括标签可变性、加密、存储库权限和生命周期策略。有关仓库创建模板的更多信息,请参阅用于控制在缓存提取或复制操作期间创建的存储库的模板。
-
如果在存储库上启用了标签不变性,并且复制了与现有镜像使用相同标签的镜像,则该镜像将被复制,但不包含重复的标签。这可能会形成未标记的镜像。