Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon ECR 中创建存储库创建模板
您可以创建存储库创建模板,定义 Amazon ECR 在缓存提取或复制操作期间代表您创建的存储库要使用的设置。创建存储库创建模板后,所有新建的存储库都将应用这些设置。这不会对之前创建的存储库产生任何影响。
在使用模板设置存储库时,您可以选择指定 KMS 密钥和资源标签。如果您打算同时在一个或多个模板中使用 KMS 密钥、资源标签或两者的组合,则需要:
配置完成后,您可以将自定义角色附加到注册表中的特定模板。
创建存储库创建模板的 IAM 权限
IAM 主体需要具有以下权限,才能管理存储库创建模板。此这些权限必须通过基于身份的 IAM policy 授予。
-
ecr:CreateRepositoryCreationTemplate
– 授权创建存储库创建模板。
-
ecr:UpdateRepositoryCreationTemplate
:授予更新存储库创建模板的权限。
-
ecr:DescribeRepositoryCreationTemplates
:授予在注册表中列出存储库创建模板的权限。
-
ecr:DeleteRepositoryCreationTemplate
– 授权删除存储库创建模板。
-
ecr:CreateRepository
:授予创建 Amazon ECR 存储库的权限。
-
ecr:PutLifecyclePolicy
– 授权创建生命周期策略并将其应用于存储库。仅当存储库创建模板包含生命周期策略时,才需要此权限。
-
ecr:SetRepositoryPolicy
– 授权创建存储库的权限策略。仅当存储库创建模板包含存储库策略时,才需要此权限。
-
iam:PassRole
:授予允许实体将角色传递给服务或应用程序的权限。此权限对于需要代入角色以代表您执行操作的服务和应用程序是必需的。
创建存储库创建模板
完成模板的必要先决条件后,即可继续创建存储库创建模板。
- Amazon Web Services Management Console
-
创建存储库创建模板(Amazon Web Services Management Console)
打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/。
-
在导航栏中,选择存储库创建模板的创建区域。
-
在导航窗格中,依次选择私有注册表、存储库创建模板。
-
在存储库创建模板页面上,选择创建模板。
-
在步骤 1:定义模板页面上,对于模板详细信息,选择特定前缀,将模板应用于特定的存储库命名空间前缀,或者选择 ECR 注册表中的任意前缀,将模板应用于与该区域中任何其他模板都不匹配的所有存储库。
-
如果选择特定前缀,则在前缀中指定要应用模板的存储库命名空间前缀。前缀末尾始终应用假定的 /
。例如,前缀 prod
将应用于以 prod/
开头的所有存储库。同理,前缀 prod/team
将应用于以 prod/team/
开头的所有存储库。
-
如果选择 ECR 注册表中的任意前缀,则前缀将设置为 ROOT
。
-
在应用对象中,指定此模板将应用于哪些 Amazon ECR 工作流。选项为 PULL_THROUGH_CACHE
和 REPLICATION
。
-
在模板描述中,为模板指定可选描述,然后选择下一步。
-
在步骤 2:添加存储库创建配置页面上,指定使用模板创建的存储库要应用的存储库设置配置。
-
在映像标签可变性中,选择要使用的标签可变性设置。有关更多信息,请参阅 防止映像标签在 Amazon ECR 中被覆盖。
选择可变后,映像标签可以被覆盖。对于通过复制操作创建的存储库所使用的模板,建议使用此设置。这样可以确保当标签相同时,Amazon ECR 可以更新缓存的映像。
选择不可变后,将防止映像标签被覆盖。为存储库配置了不可变标签后,如果尝试推送某个映像但其标签在存储库中已存在,系统将返回 ImageTagAlreadyExistsException
错误。当存储库开启标签不可变性时,这会影响所有标签,您不能将某些标签配置为不可变,而将其他标签配置为可变。
-
在加密配置中,选择要使用的加密设置。有关更多信息,请参阅 静态加密。
选择 AES-256 时,Amazon ECR 使用具有 Amazon Simple Storage Service 托管加密密钥的服务器端加密,从而使用 AES-256 加密算法对静态数据进行加密。此服务不会产生额外费用。
选择 Amazon KMS 时,Amazon ECR 使用具有 Amazon Key Management Service (Amazon KMS)中存储的密钥的服务器端加密。当您使用 Amazon KMS 加密数据时,您可以使用默认的 Amazon 托管密钥(由 Amazon ECR 管理),也可以指定自己的 Amazon KMS
密钥(称为客户托管密钥)。
-
在存储库权限中,请指定使用此模板创建的存储库要应用的存储库权限策略。您可以选择使用下拉菜单,为最常见的使用案例选择一个 JSON 示例。有关更多信息,请参阅 Amazon ECR 中的私有存储库策略。
-
在存储库生命周期策略中,指定使用此模板创建的存储库要应用的存储库生命周期策略。您可以选择使用下拉菜单,为最常见的使用案例选择一个 JSON 示例。有关更多信息,请参阅 在 Amazon ECR 中使用生命周期策略自动清理映像。
-
对于存储库 Amazon 标签,以键值对的形式指定要与使用此模板创建的存储库关联的元数据,然后选择下一步。有关更多信息,请参阅 在 Amazon ECR 中标记私有存储库。
-
对于存储库创建角色,请从下拉菜单中选择自定义 IAM 角色,以便在模板中使用存储库标签或 KMS 时用于存储库创建模板(详情请参阅为存储库创建模板创建 IAM 角色)。然后选择下一步。
-
在步骤 3:审核并创建页面上,审核您为存储库创建模板指定的设置。选择编辑选项以进行更改。完成后,选择创建。
- Amazon CLI
-
该create-repository-creation-template Amazon CLI 命令用于为您的私有注册表创建存储库模板。
创建存储库创建模板(Amazon CLI)
-
Amazon CLI 使用生成create-repository-creation-template命令的骨架。
aws ecr create-repository-creation-template \
--generate-cli-skeleton
该命令的输出显示了存储库创建模板的完整语法。
{
"appliedFor":[""], // string array, but valid are PULL_THROUGH_CACHE and REPLICATION
"prefix": "string
",
"description": "string
",
"imageTagMutability": "MUTABLE
"|"IMMUTABLE
",
"repositoryPolicy": "string
",
"lifecyclePolicy": "string
"
"encryptionConfiguration": {
"encryptionType": "AES256
"|"KMS
",
"kmsKey": "string
"
},
"resourceTags": [
{
"Key": "string
",
"Value": "string
"
}
],
"customRoleArn": "string", // must be a valid IAM Role ARN
}
-
使用上一步中的输出创建名为 repository-creation-template.json
的文件。此模板为根据prod/*
存储库策略创建的任何存储库设置 KMS 加密密钥,该策略允许将映像推送和拉取到未来的存储库,设置生命周期策略,使超过两周的图像过期,并设置一个自定义角色以允许 ECR 访问 KMS 密钥并将资源标签分配examplekey
给未来的存储库。
{
"prefix": "prod",
"description": "For repositories cached from my PTC rule and in my replication configuration that start with 'prod/'",
"appliedFor": ["PULL_THROUGH_CACHE","REPLICATION"],
"encryptionConfiguration": {
"encryptionType": "KMS",
"kmsKey": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-example11111"
},
"resourceTags": [
{
"Key": "examplekey",
"Value": "examplevalue"
}
],
"imageTagMutability": "MUTABLE",
"repositoryPolicy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AllowPushPullIAMRole\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:user\/IAMusername\"},\"Action\":[\"ecr:BatchGetImage\",\"ecr:BatchCheckLayerAvailability\",\"ecr:CompleteLayerUpload\",\"ecr:GetDownloadUrlForLayer\",\"ecr:InitiateLayerUpload\",\"ecr:PutImage\",\"ecr:UploadLayerPart\"]}]}",
"lifecyclePolicy": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Expire images older than 14 days\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"sinceImagePushed\",\"countUnit\":\"days\",\"countNumber\":14},\"action\":{\"type\":\"expire\"}}]}",
"customRoleArn": "arn:aws:iam::111122223333:role/myRole"
}
-
使用以下命令来创建存储库创建模板。请务必指定在上一步中创建的配置文件的名称来代替以下示例中的 repository-creation-template.json
。
aws ecr create-repository-creation-template \
--cli-input-json file://repository-creation-template.json