

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 用于控制在缓存拉取、推送时创建或复制操作期间创建的存储库的模板
<a name="repository-creation-templates"></a>

使用 Amazon ECR 存储库创建模板，定义 Amazon ECR 代表您创建的存储库的设置。存储库创建模板中的设置仅在存储库创建期间应用，对现有存储库或使用任何其他方法创建的存储库没有任何影响。目前，存储库创建模板可用于在存储库创建过程中为以下功能应用设置：
+ 缓存提取
+ 推送时创建
+ 复制

## 存储库创建模板的工作原理
<a name="repository-creation-templates-works"></a>

有时，Amazon ECR 需要代表您创建新的私有存储库。例如：
+ 您首次使用缓存提取规则来检索上游存储库的内容并将其存储于 Amazon ECR 私有注册表时。
+ 当您将图像推送到尚不存在的存储库时。
+ 当您想要 Amazon ECR 将存储库复制到另一个区域或账户时。

当没有与您的缓存提取规则或复制的存储库匹配的存储库创建模板时，Amazon ECR 会为新存储库使用默认设置。这些默认设置包括关闭标签不变性、使用 `AES-256` 加密，以及不应用任何存储库或生命周期策略。

当没有与图片推送的目标存储库匹配的存储库创建模板时，Amazon ECR 将不会使用默认设置创建存储库。

使用存储库创建模板可以定义 Amazon ECR 应用于通过拉取缓存、推送时创建和复制操作创建的新存储库的设置。您可以为新存储库定义标签不变性、加密配置、存储库权限、生命周期策略和资源标签。

下图演示了在使用存储库创建模板时 Amazon ECR 使用的工作流程。

![显示如何将存储库创建模板应用于新存储库。](http://docs.amazonaws.cn/AmazonECR/latest/userguide/images/repository_creation_template_light.png)


以下内容详细描述了存储库创建模板中的每个参数。

Prefix  
**Prefix** 是与模板关联的存储库命名空间前缀。使用此前缀创建的所有存储库都将应用此模板中定义的设置。例如，前缀 `prod` 将应用于以 `prod/` 开头的所有存储库。同理，前缀 `prod/team` 将应用于以 `prod/team/` 开头的所有存储库。在包含两个模板的注册表中，如果一个模板的前缀为 “prod”，另一个模板的前缀为 “prod/team", the template with the prefix "prod/team" will be applied to all repositories whose names start with "prod/team/”。  
要将某模板应用于注册表中没有关联创建模板的所有存储库，您可以使用 `ROOT` 作为前缀。  
前缀末尾始终应用假定的 `/`。如果您指定 `ecr-public` 为前缀，Amazon ECR 会将其视为 `ecr-public/`。使用缓存提取规则时，您在创建规则时指定的存储库前缀也应指定为存储库创建模板前缀。

说明  
此**模板描述**可选，用于描述存储库创建模板的用途。

应用对象  
**应用对象**设置决定了将使用此模板创建哪些经 Amazon ECR 创建的存储库。有效值为 `PULL_THROUGH_CACHE`、`CREATE_ON_PUSH` 和 `REPLICATION`。例如，您首次使用缓存提取规则来检索上游存储库的内容并将其存储于 Amazon ECR 私有注册表时。当没有与您的缓存提取规则匹配的存储库创建模板时，Amazon ECR 会为新存储库使用默认设置。

存储库创建角色  
**存储库创建角色**是一个 IAM 角色 ARN，在通过存储库创建模板创建和配置存储库时，该角色将由 Amazon ECR 担任。在模板中使用存储库标签 and/or KMS 时必须提供此角色，否则存储库创建将失败。

镜像标签可变性  
使用模板创建的存储库要使用的**标签可变性**设置。如果省略此参数，将使用 **MUTABLE** 的默认设置，该设置将允许覆盖映像标签。对于通过缓存提取操作创建的存储库所使用的模板，建议使用此设置。这样可以确保当标签相同时，Amazon ECR 可以更新缓存的映像。  
如果指定 **IMMUTABLE**，则存储库中的所有映像标签都将不可变，从而防止这些标签被覆盖。

加密配置  
 使用 Amazon KMS (DSSE-KMS) 的双层服务器端加密仅在区域中 Amazon GovCloud (US) 可用。
使用模板创建的存储库要使用的**加密配置**。  
如果您使用 **KMS** 加密类型，则使用具有 Amazon KMS中存储的 Amazon Key Management Service 密钥的服务器端加密来加密存储库的内容。当您使用 Amazon KMS 加密数据时，可以使用 Amazon ECR 的默认 Amazon 托管 Amazon KMS 密钥，也可以指定您自己的 Amazon KMS 密钥，该密钥是您已经创建的。您还可以选择使用单层或双层加密。 Amazon KMS有关更多信息，请参阅 [静态加密](encryption-at-rest.md)。如果您使用的是 **KMS** 加密类型并将其用于跨区域复制，则可能还需要额外的权限。有关更多信息，请参阅 [Creating a KMS key policy for replication](https://docs.amazonaws.cn/AmazonECR/latest/userguide/registry-permissions-create.html)。  
如果您使用 **AES256** 加密类型，Amazon ECR 将使用具有 Amazon S3 托管加密密钥的服务器端加密，从而使用 AES-256 加密算法对存储库中的映像进行加密。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用采用 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据](https://docs.amazonaws.cn/AmazonS3/latest/dev/UsingServerSideEncryption.html)。

存储库权限  
使用模板创建的存储库要应用的**存储库策略**。存储库策略使用基于资源的权限来控制对存储库的访问权限。基于资源的权限让您可以指定能够访问存储库的 IAM 用户或角色，以及这些用户或角色可以对该存储库执行的操作。默认情况下，只有创建仓库的 Amazon 账户才有权访问仓库。您可以应用策略文档来授予或拒绝针对您的存储库的其他权限。有关更多信息，请参阅 [Amazon ECR 中的私有存储库策略](repository-policies.md)。

存储库生命周期策略  
使用模板创建的存储库要使用的**生命周期策略**。生命周期策略提供了对私有存储库中映像的生命周期管理的更多控制。生命周期策略是一组规则，其中的每个规则为 Amazon ECR 定义一个操作。这提供了一种自动清理容器镜像的方法，例如根据使用期限或计数过期的镜像。有关更多信息，请参阅 [在 Amazon ECR 中使用生命周期策略自动清理映像](LifecyclePolicies.md)。

资源标签  
**资源标签**是应用于存储库的元数据，旨在帮助您对其进行分类和整理。每个标签都包含定义的一个键和一个可选值。如果您使用的是具有跨区域复制功能的存储库创建模板，则需要将此权限应用于目标注册表策略。