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

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

创建缓存提取规则

对于包含您要在 Amazon ECR 私有注册表中缓存的映像的每个上游注册表,您必须创建缓存提取规则。对于需要身份验证的上游注册表,您必须以 Secrets Manager 密钥存储凭证。您可以在 Amazon ECR 或 Secrets Manager 控制台中创建 Secrets Manager 密钥。

在开始创建缓存提取规则之前,请确保您拥有适当的 IAM 权限。有关更多信息,请参阅 所需的 IAM 权限

要创建缓存提取规则 (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 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步。有关使用 Secrets Manager 控制台创建 Secrets Manager 密钥的更多信息,请参阅将您的上游存储库凭证存储在 Amazon Secrets Manager 密钥中

      注意

      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:配置身份验证” 页面上,对于上游凭证,您必须将 GitHub 容器注册表的身份验证凭据存储在 Amazon Secrets Manager 密钥中。您可以指定现有密钥,也可以使用 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. 对于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 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步。有关使用 Secrets Manager 控制台创建 Secrets Manager 密钥的更多信息,请参阅将您的上游存储库凭证存储在 Amazon Secrets Manager 密钥中

      注意

      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. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

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

使用 create-pull-through-cache- Amazon CLI rule 命令为 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

后续步骤

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

  • 创建存储库创建模板。有了存储库创建模板,在为 Amazon ECR 在缓存提取操作期间代表您创建的新存储库定义设置时,您能拥有控制权。有关更多信息,请参阅 管理存储库创建模板

  • 验证缓存提取规则。在验证缓存提取规则时,Amazon ECR 会与上游注册表建立网络连接,验证它是否可以访问包含上游注册表凭证的 Secrets Manager 密钥,以及身份验证是否成功。有关更多信息,请参阅 验证缓存提取规则

  • 开始使用缓存提取规则。有关更多信息,请参阅 使用缓存提取规则来提取映像