在 Amazon ECR 中建立提取快取規則 - Amazon ECR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon ECR 中建立提取快取規則

對於每個包含要在 Amazon ECR 私有登錄檔中快取之映像的上游登錄檔,您必須建立提取快取規則。

對於需要使用秘密進行身分驗證的上游登錄檔,您必須將登入資料存放在 Secrets Manager 秘密中。您可以使用現有的秘密或建立新的秘密。您可以在 Amazon ECR 主控台或 Secrets Manager 主控台中建立 Secrets Manager 秘密。若要使用 Secrets Manager 主控台而非 Amazon ECR 主控台建立 Secrets Manager 秘密,請參閱 將上游儲存庫登入資料存放在 AWS Secrets Manager 秘密中

先決條件

  • 確認您具有適當的 IAM 許可來建立提取快取規則。如需相關資訊,請參閱將上游登錄檔與 Amazon ECR 私有登錄檔同步所需的 IAM 許可

  • 對於需要使用秘密進行身分驗證的上游登錄檔:如果您想要使用現有的秘密,請確認 Secrets Manager 秘密符合下列要求:

    • 秘密的名稱開頭為 ecr-pullthroughcache/。 AWS Management Console 只會顯示具有 ecr-pullthroughcache/字首的 Secrets Manager 秘密。

    • 秘密所在的帳戶和區域必須與提取快取規則所在的帳戶和區域相符。

建立提取快取規則 (AWS Management Console)

下列步驟說明如何使用 Amazon ECR 主控台建立提取快取規則和 Secrets Manager 秘密。若要使用 Secrets Manager 主控台建立秘密,請參閱 將上游儲存庫登入資料存放在 AWS Secrets Manager 秘密中

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定來源頁面上,針對登錄檔,從上游登錄檔清單中選擇 Amazon ECR 公共、Kubernetes 或 Quay,接著選擇下一步

  6. 步驟 2:指定目的地頁面上,針對 Amazon ECR 儲存庫字首,指定快取從來源公有登錄檔提取的映像時要使用的儲存庫命名空間字首,接著選擇下一步。預設會填入命名空間,但也可以指定自訂命名空間。

  7. 步驟 3:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  8. 為要建立的每個提取快取重複前面的步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定來源頁面上,針對登錄檔選擇 Docker Hub下一步

  6. 步驟 2:設定身分驗證頁面上,針對上游憑證,您必須將 Docker Hub 的身分驗證憑證儲存在 AWS Secrets Manager 秘密中。您可以指定現有秘密,或使用 Amazon ECR 主控台建立新秘密。

    1. 若要使用現有的秘密,請選擇使用現有的 AWS 秘密。針對秘密名稱,使用下拉式選單選取您現有的秘密,接著選擇下一步

      注意

      AWS Management Console 只會顯示使用 ecr-pullthroughcache/字首名稱的 Secrets Manager 秘密。秘密也必須位於在其中建立提取快取規則的相同帳戶和區域中。

    2. 若要建立新秘密,請選擇建立 AWS 秘密,執行下列動作,接著選擇下一步

      1. 針對秘密名稱,指定秘密的描述性名稱。秘密名稱必須含有 1 至 512 個 Unicode 字元。

      2. 針對 Docker Hub 電子郵件,指定您的 Docker Hub 電子郵件。

      3. 針對 Docker Hub 存取字符,請指定您的 Docker Hub 存取字符。如需建立 Docker Hub 存取字符的詳細資訊,請參閱 Docker 文件中的建立和管理存取字符

  7. 步驟 3:指定目的地頁面上,針對 Amazon ECR 儲存庫字首,指定快取從來源公有登錄檔提取的映像時要使用的儲存庫命名空間,接著選擇下一步

    預設會填入命名空間,但也可以指定自訂命名空間。

  8. 步驟 4:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  9. 為要建立的每個提取快取重複前面的步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定來源頁面上,針對登錄檔選擇 GitHub Container Registry下一步

  6. 步驟 2:設定身分驗證頁面上,針對上游憑證,您必須將 GitHub Container Registry 的身分驗證憑證儲存在 AWS Secrets Manager 秘密中。您可以指定現有秘密,或使用 Amazon ECR 主控台建立新秘密。

    1. 若要使用現有的秘密,請選擇使用現有的 AWS 秘密。針對秘密名稱,使用下拉式選單選取您現有的秘密,接著選擇下一步

      注意

      AWS Management Console 只會顯示使用 ecr-pullthroughcache/字首名稱的 Secrets Manager 秘密。秘密也必須位於在其中建立提取快取規則的相同帳戶和區域中。

    2. 若要建立新秘密,請選擇建立 AWS 秘密,執行下列動作,接著選擇下一步

      1. 針對秘密名稱,指定秘密的描述性名稱。秘密名稱必須含有 1 至 512 個 Unicode 字元。

      2. 針對 GitHub Container Registry 使用者名稱,請指定您的 GitHub Container Registry 使用者名稱。

      3. 對於 GitHub Container Registry 存取字符,請指定您的 GitHub Container Registry 存取字符。如需建立 GitHub 存取字符的詳細資訊,請參閱 GitHub 文件中的管理個人存取權字符

  7. 步驟 3:指定目的地頁面上,針對 Amazon ECR 儲存庫字首,指定快取從來源公有登錄檔提取的映像時要使用的儲存庫命名空間,接著選擇下一步

    預設會填入命名空間,但也可以指定自訂命名空間。

  8. 步驟 4:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  9. 為要建立的每個提取快取重複前面的步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定來源頁面上,執行下列動作。

    1. 針對登錄檔,選擇 Microsoft Azure Container Registry

    2. 針對來源登錄檔 URL,指定 Microsoft Azure Container Registry 的名稱,接著選擇下一步

      重要

      您只需要指定字首,因為會代表您填入 .azurecr.io 字尾。

  6. 步驟 2:設定身分驗證頁面上,針對上游憑證,您必須將 Microsoft Azure Container Registry 的身分驗證憑證儲存在 AWS Secrets Manager 秘密中。您可以指定現有秘密,或使用 Amazon ECR 主控台建立新秘密。

    1. 若要使用現有的秘密,請選擇使用現有的 AWS 秘密。針對秘密名稱,使用下拉式選單選取您現有的秘密,接著選擇下一步

      注意

      AWS Management Console 只會顯示使用 ecr-pullthroughcache/字首名稱的 Secrets Manager 秘密。秘密也必須位於在其中建立提取快取規則的相同帳戶和區域中。

    2. 若要建立新秘密,請選擇建立 AWS 秘密,執行下列動作,接著選擇下一步

      1. 針對秘密名稱,指定秘密的描述性名稱。秘密名稱必須含有 1 至 512 個 Unicode 字元。

      2. 對於 Microsoft Azure Container Registry 使用者名稱,請指定您的 MMicrosoft Azure Container Registry 使用者名稱。

      3. 對於 Microsoft Azure Container Registry 存取字符,請指定您的 Microsoft Azure Container Registry 存取字符。如需建立 Microsoft Azure Container Registry 存取字符的詳細資訊,請參閱 Microsoft Azure 文件中的建立字符 - 入口網站

  7. 步驟 3:指定目的地頁面上,針對 Amazon ECR 儲存庫字首,指定快取從來源公有登錄檔提取的映像時要使用的儲存庫命名空間,接著選擇下一步

    預設會填入命名空間,但也可以指定自訂命名空間。

  8. 步驟 4:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  9. 為要建立的每個提取快取重複前面的步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定來源頁面上,針對登錄檔,選擇 GitLab Container Registry,下一步。

  6. 步驟 2:設定身分驗證頁面上,對於上游憑證,您必須將 GitLab Container Registry 的身分驗證憑證存放在秘密 AWS Secrets Manager 中。您可以指定現有秘密,或使用 Amazon ECR 主控台建立新秘密。

    1. 若要使用現有的秘密,請選擇使用現有的 AWS 秘密。針對秘密名稱,使用下拉式選單選取您現有的秘密,接著選擇下一步。如需有關使用 Secrets Manager 主控台建立 Secrets Manager 秘密的詳細資訊,請參閱 將上游儲存庫登入資料存放在 AWS Secrets Manager 秘密中

      注意

      AWS Management Console 只會顯示使用 ecr-pullthroughcache/字首名稱的 Secrets Manager 秘密。秘密也必須位於在其中建立提取快取規則的相同帳戶和區域中。

    2. 若要建立新秘密,請選擇建立 AWS 秘密,執行下列動作,接著選擇下一步

      1. 針對秘密名稱,指定秘密的描述性名稱。秘密名稱必須含有 1 至 512 個 Unicode 字元。

      2. 針對 GitLab Container Registry 使用者名稱,指定您的 GitLab Container Registry 使用者名稱。

      3. 對於 GitLab Container Registry 存取權杖,指定您的 GitLab Container Registry 存取權杖。如需建立 GitLab 容器登錄檔存取字符的詳細資訊,請參閱 GitLab 文件中的個人存取字符群組存取字符專案存取字符

  7. 步驟 3:指定目的地頁面上,針對 Amazon ECR 儲存庫字首,指定快取從來源公有登錄檔提取的映像時要使用的儲存庫命名空間,接著選擇下一步

    預設會填入命名空間,但也可以指定自訂命名空間。

  8. 步驟 4:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  9. 為要建立的每個提取快取重複前面的步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列中,選擇您要在其中設定私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定上游頁面上,針對登錄檔,選擇 Amazon ECR Private此帳戶。針對區域,選取上游 Amazon ECR 登錄檔的區域,然後選擇下一步

  6. 步驟 2:指定命名空間頁面上,針對快取命名空間,選擇是否建立具有特定字首無字首的提取快取儲存庫。如果您選取特定字首,則必須指定字首名稱,做為從上游登錄檔快取映像的命名空間的一部分。

  7. 針對上游命名空間,選擇是否從上游登錄檔中存在的特定字首提取。如果未選取字首,您可以從上游登錄檔中的任何儲存庫提取 。如果出現提示,請指定上游儲存庫字首,然後選擇下一步

    注意

    若要進一步了解自訂快取和上游命名空間,請參閱 自訂 ECR 到 ECR 提取快取的儲存庫字首

  8. 步驟 3:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  9. 針對您要建立的每個提取快取重複這些步驟。系統會針對每個區域分別建立提取快取規則。

  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中進行私有登錄檔設定的區域。

  3. 在導覽窗格中,選擇 Private registry (私有登錄檔)、Pull through cache (提取快取)。

  4. Pull through cache configuration (提取快取組態) 頁面上,選擇 Add rule (新增規則)。

  5. 步驟 1:指定上游頁面上,針對登錄檔,選擇 Amazon ECR 私有跨帳戶。針對區域,選取上游 Amazon ECR 登錄檔的區域。針對帳戶,指定上游 Amazon ECR 登錄 AWS 檔的帳戶 ID,然後選擇下一步

  6. 步驟 2:指定許可頁面上,針對 IAM 角色,選取要用於跨帳戶提取快取存取的角色,然後選擇建立

    注意

    請務必選取使用在 中建立之許可的 IAM 角色跨帳戶 ECR 到 ECR 提取快取所需的 IAM 政策

  7. 步驟 3:指定命名空間頁面上,針對快取命名空間,選擇是否建立具有特定字首無字首的提取快取儲存庫。如果您選取特定字首,則必須指定字首名稱,做為從上游登錄檔快取映像的命名空間的一部分。

  8. 針對上游命名空間,選擇是否從上游登錄檔中存在的特定字首提取。如果未選取字首,您可以從上游登錄檔中的任何儲存庫提取 。如果出現提示,請指定上游儲存庫字首,然後選擇下一步

    注意

    若要進一步了解自訂快取和上游命名空間,請參閱 自訂 ECR 到 ECR 提取快取的儲存庫字首

  9. 步驟 4:檢閱並建立頁面上,檢閱提取快取規則組態,接著選擇建立

  10. 針對您要建立的每個提取快取重複這些步驟。系統會針對每個區域分別建立提取快取規則。

建立提取快取規則 (AWS CLI)

使用 create-pull-through-cache-rule AWS CLI 命令來建立 Amazon ECR 私有登錄檔的提取快取規則。對於需要使用秘密進行身分驗證的上游登錄檔,您必須將登入資料存放在 Secrets Manager 秘密中。若要使用 Secrets Manager 主控台建立秘密,請參閱 將上游儲存庫登入資料存放在 AWS Secrets Manager 秘密中

提供給每個受支援的登錄檔的下列範例。

下列範例會為 Amazon ECR Public 登錄檔建立提取快取規則。其會指定 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 Resource Name (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 Container Registry 的提取快取規則。其會指定 github 的儲存庫字首,這會導致使用提取快取規則建立的每個儲存庫具有 github/upstream-repository-name 的命名規則。您必須指定秘密包含 GitHub Container Registry 憑證的完整 Amazon Resource Name (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 Container Registry 的提取快取規則。其會指定 azure 的儲存庫字首,這會導致使用提取快取規則建立的每個儲存庫具有 azure/upstream-repository-name 的命名規則。您必須指定秘密包含 Microsoft Azure Container Registry 憑證的完整 Amazon Resource Name (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 Container Registry 的提取快取規則。其會指定 gitlab 的儲存庫字首,這會導致使用提取快取規則建立的每個儲存庫具有 gitlab/upstream-repository-name 的命名規則。您必須指定包含 GitLab Container Registry 登入資料之秘密的完整 Amazon Resource Name (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

下列範例會為同一 AWS 帳戶中跨區域 Amazon ECR 私有登錄檔建立提取快取規則。其會指定 ecr 的儲存庫字首,這會導致使用提取快取規則建立的每個儲存庫具有 ecr/upstream-repository-name 的命名規則。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix ecr \ --upstream-registry-url aws_account_id.dkr.ecr.region.amazonaws.com \ --region us-east-2

下列範例會為同一 AWS 帳戶中跨區域 Amazon ECR 私有登錄檔建立提取快取規則。其會指定 ecr 的儲存庫字首,這會導致使用提取快取規則建立的每個儲存庫具有 ecr/upstream-repository-name 的命名規則。您必須使用在 中建立的許可來指定 IAM 角色的完整 Amazon Resource Name (ARN)在 Amazon ECR 中建立提取快取規則

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix ecr \ --upstream-registry-url aws_account_id.dkr.ecr.region.amazonaws.com \ --custom-role-arn arn:aws:iam::aws_account_id:role/example-role \ --region us-east-2

後續步驟

建立提取快取規則後,後續步驟如下: