在 Amazon ECR 中创建缓存提取规则 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon ECR 中创建缓存提取规则

对于包含您要在 Amazon ECR 私有注册表中缓存的映像的每个上游注册表,您必须创建缓存提取规则。

对于需要身份验证的上游注册表,您必须以 Secrets Manager 密钥存储凭证。您可以使用现有的 密钥或创建一个新密钥。您可以在 Amazon ECR 控制台或 Secrets Manager 控制台中创建 Secrets Manager 密钥。要使用 Secrets Manager 控制台而不是 Amazon ECR 控制台创建 Secrets Manager 密钥,请参阅以 Amazon Secrets Manager 密钥存储上游存储库凭证

先决条件

  • 请验证您是否拥有创建缓存提取规则的适当 IAM 权限。有关信息,请参阅将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限

  • 对于需要身份验证的上游注册表:如果要使用现有密钥,则请验证 Secrets Manager 密钥是否满足以下要求:

    • 密钥的名称以 ecr-pullthroughcache/ 开头。Amazon Web Services Management Console 仅显示带有 ecr-pullthroughcache/ 前缀的 Secrets Manager 密钥。

    • 密钥所在的账户和区域必须与缓存提取规则所在的账户和区域相匹配。

要创建缓存提取规则 (Amazon Web Services Management Console)

以下步骤演示如何使用 Amazon ECR 控制台创建缓存提取规则和 Secrets Manager 密钥。要使用 Secrets Manager 控制台创建密钥,请参阅以 Amazon Secrets Manager 密钥存储上游存储库凭证

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,对于注册表,请从上游注册表的列表中选择 Amazon ECR Public、Kubernetes 或 Quay,然后选择下一步

  6. 步骤 2:指定目标页面上,对于 Amazon ECR 存储库前缀,请指定在缓存从源公有注册表中提取的映像时要使用的存储库命名空间前缀,然后选择下一步。默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  7. 步骤 3:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  8. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,对于注册表,选择 Docker Hub,然后选择下一步

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 Amazon Secrets Manager 密钥存储 Docker Hub 的身份验证凭证。您可以指定现有密钥,也可以使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 Amazon 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      Amazon Web Services Management Console 仅显示名称使用 ecr-pullthroughcache/ 前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 Amazon 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. Docker Hub 电子邮件中,指定您的 Docker Hub 电子邮件。

      3. Docker Hub 访问令牌中,请指定 Docker Hub 访问令牌。有关如何创建 Docker Hub 访问令牌的更多信息,请参阅 Docker 文档中的 Create and manage access tokens

  7. 步骤 3:指定目标页面上,对于 Amazon ECR 存储库前缀,请指定在缓存从源公有注册表中提取的映像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,对于注册表,选择 GitHub 容器注册表,然后选择下一步

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 Amazon Secrets Manager 密钥存储 GitHub 容器注册表的身份验证凭证。您可以指定现有密钥,也可以使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 Amazon 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      Amazon Web Services Management Console 仅显示名称使用 ecr-pullthroughcache/ 前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 Amazon 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. GitHub 容器注册表用户名中,请指定 GitHub 容器注册表用户名。

      3. GitHub 容器注册表访问令牌中,请指定 GitHub 容器注册表访问令牌。有关如何创建 GitHub 访问令牌的更多信息,请参阅 GitHub 文档中的管理个人访问令牌

  7. 步骤 3:指定目标页面上,对于 Amazon ECR 存储库前缀,请指定在缓存从源公有注册表中提取的映像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,执行以下操作。

    1. 注册表中,请选择Microsoft Azure 容器注册表

    2. 源注册表 URL 中,请指定 Microsoft Azure 容器注册表的名称,然后选择下一步

      重要

      您只需要指定前缀,因为系统已代表您填充 .azurecr.io 后缀。

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 Amazon Secrets Manager 密钥存储 Microsoft Azure 容器注册表的身份验证凭证。您可以指定现有密钥,也可以使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 Amazon 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      Amazon Web Services Management Console 仅显示名称使用 ecr-pullthroughcache/ 前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 Amazon 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. Microsoft Azure 容器注册表用户名中,请指定 Microsoft Azure 容器注册表用户名。

      3. Microsoft Azure 容器注册表访问令牌中,请指定 Microsoft Azure 容器注册表访问令牌。有关如何创建 Microsoft Azure 容器注册表访问令牌的更多信息,请参阅 Microsoft Azure 文档中的创建令牌 - 门户

  7. 步骤 3:指定目标页面上,对于 Amazon ECR 存储库前缀,请指定在缓存从源公有注册表中提取的映像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,对于注册表,选择 GitLab 容器注册表,然后选择下一步。

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 Amazon Secrets Manager 密钥存储 GitLab 容器注册表的身份验证凭证。您可以指定现有密钥,也可以使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 Amazon 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步。有关使用 Secrets Manager 控制台创建 Secrets Manager 密钥的更多信息,请参阅以 Amazon Secrets Manager 密钥存储上游存储库凭证

      注意

      Amazon Web Services Management Console 仅显示名称使用 ecr-pullthroughcache/ 前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 Amazon 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. GitLab 容器注册表用户名中,请指定 GitLab 容器注册表用户名。

      3. GitLab 容器注册表访问令牌中,请指定 GitLab 容器注册表访问令牌。有关创建 GitLab 容器注册表访问令牌的更多信息,请参阅 GitLab 文档中的 Personal access tokensGroup access tokensProject access tokens

  7. 步骤 3:指定目标页面上,对于 Amazon ECR 存储库前缀,请指定在缓存从源公有注册表中提取的映像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

要创建缓存提取规则 (Amazon CLI)

使用 create-pull-through-cache-rule Amazon CLI 命令为 Amazon ECR 私有注册表创建缓存提取规则。对于需要身份验证的上游注册表,您必须以 Secrets Manager 密钥存储凭证。要使用 Secrets Manager 控制台创建密钥,请参阅以 Amazon Secrets Manager 密钥存储上游存储库凭证

针对每个支持的上游注册表提供以下示例。

以下示例为 Amazon ECR 公有注册表创建一个缓存提取规则。它指定了存储库前缀 ecr-public,这导致使用缓存提取规则创建的每个存储库都具有 ecr-public/upstream-repository-name 命名方案。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix ecr-public \ --upstream-registry-url public.ecr.aws \ --region us-east-2

以下示例为 Kubernetes 公有注册表创建了一个缓存提取规则。它指定了存储库前缀 kubernetes,这导致使用缓存提取规则创建的每个存储库都具有 kubernetes/upstream-repository-name 命名方案。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix kubernetes \ --upstream-registry-url registry.k8s.io \ --region us-east-2

以下示例为 Quay 公有注册表创建了一个缓存提取规则。它指定了存储库前缀 quay,这导致使用推送缓存规则创建的每个存储库都具有命名方案 quay/upstream-repository-name

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix quay \ --upstream-registry-url quay.io \ --region us-east-2

以下示例为 Docker Hub 注册表创建了一个缓存提取规则。它指定了存储库前缀 docker-hub,这导致使用缓存提取规则创建的每个存储库都具有 docker-hub/upstream-repository-name 命名方案。您必须指定包含 Docker Hub 凭证的密钥的完整 Amazon 资源名称(ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix docker-hub \ --upstream-registry-url registry-1.docker.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 GitHub 容器注册表创建了一个缓存提取规则。它指定了存储库前缀 docker-hub,这导致使用缓存提取规则创建的每个存储库都具有 github/upstream-repository-name 命名方案。您必须指定包含 GitHub 容器注册表凭证的密钥的完整 Amazon 资源名称(ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix github \ --upstream-registry-url ghcr.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 Microsoft Azure 容器注册表创建了一个缓存提取规则。它指定了存储库前缀 azure,这导致使用缓存提取规则创建的每个存储库都具有 azure/upstream-repository-name 命名方案。您必须指定包含 Microsoft Azure 容器注册表凭证的密钥的完整 Amazon 资源名称(ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix azure \ --upstream-registry-url myregistry.azurecr.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 GitLab 容器注册表创建了一个缓存提取规则。它指定了存储库前缀 gitlab,这导致使用缓存提取规则创建的每个存储库都具有 gitlab/upstream-repository-name 命名方案。您必须指定包含 GitLab 容器注册表凭证的密钥的完整 Amazon 资源名称(ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix gitlab \ --upstream-registry-url registry.gitlab.com \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

后续步骤

创建缓存提取规则后,请执行以下后续步骤: