

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

# 將上游登錄檔與 Amazon ECR 私有登錄檔同步
<a name="pull-through-cache"></a>

使用提取快取規則，您可以將上游登錄檔的內容與 Amazon ECR 私有登錄檔同步。

Amazon ECR 目前支援為下列上游登錄檔建立提取快取規則：
+ Amazon ECR Public、Kubernetes 容器映像登錄檔和 Quay （不需要身分驗證）
+ Docker Hub、Microsoft Azure Container Registry、GitHub Container Registry、GitLab Container Registry 和 Chainguard Registry （需要使用 AWS Secrets Manager 秘密進行身分驗證）
+ Amazon ECR （需要使用 IAM AWS 角色進行身分驗證）

對於 GitLab Container Registry，Amazon ECR 僅支援使用 GitLab 的軟體即服務 (SaaS) 產品提取快取。如需使用 GitLab SaaS 產品的詳細資訊，請參閱 [GitLab.com](https://docs.gitlab.com/17.5/subscriptions/choosing_subscription/)

對於需要使用秘密進行身分驗證的上游登錄檔 （例如 Docker Hub)，您必須將登入資料存放在 AWS Secrets Manager 秘密中。您可以使用 Amazon ECR 主控台，為每個已驗證的上游登錄檔建立 Secrets Manager 秘密。如需使用 Secrets Manager 主控台建立 Secrets Manager 秘密的詳細資訊，請參閱 [將上游儲存庫登入資料存放在 AWS Secrets Manager 秘密中](pull-through-cache-creating-secret.md)。

對於 Amazon ECR，如果上游和下游 Amazon ECR 登錄檔屬於不同的 AWS 帳戶，您必須建立 IAM 角色。如需建立 IAM 角色的詳細資訊，請參閱[跨帳戶 ECR 到 ECR 提取快取所需的 IAM 政策](pull-through-cache-private.md#pull-through-cache-private-permissions)。

建立上游登錄檔的提取快取規則之後，請使用 Amazon ECR 私有登錄檔 URI 從該上游登錄檔提取映像。接著 Amazon ECR 會建立儲存庫，並在您的私有登錄中快取該映像。對於具有指定標籤之快取映像的後續提取請求，Amazon ECR 會檢查上游登錄檔是否有具有該特定標籤之映像的新版本，並嘗試至少每 24 小時更新一次私有登錄檔中的映像。

## 儲存庫建立範本
<a name="pull-through-cache-respository-creation-template"></a>

Amazon ECR 已新增對儲存庫建立範本的支援，可讓您使用提取快取規則，為 Amazon ECR 代表您建立的新儲存庫指定初始組態。每個範本都包含一個儲存庫命名空間字首，用於將新儲存庫與特定範本匹配。範本可以指定所有儲存庫設定的組態，包括資源型存取政策、標籤不變性、加密和生命週期政策。儲存庫建立範本中的設定只會在建立儲存庫期間套用，對使用任何其他方法建立的現有儲存庫或儲存庫沒有任何影響。如需詳細資訊，請參閱[用於控制提取快取、推送時建立或複寫動作期間建立的儲存庫的範本](repository-creation-templates.md)。

## 使用提取快取規則的考量事項
<a name="pull-through-cache-considerations"></a>

使用 Amazon ECR 提取快取規則時，請考慮下列事項。
+ 下列區域不支援提取快取規則的建立。
  + 中國 (北京) (`cn-north-1`)
  + 中國 (寧夏) (`cn-northwest-1`)
  + AWS GovCloud （美國東部） (`us-gov-east-1`)
  + AWS GovCloud （美國西部） (`us-gov-west-1`)
+ AWS Lambda 不支援使用提取快取規則從 Amazon ECR 提取容器映像。
+ 使用提取快取提取映像時，第一次提取映像時不支援 Amazon ECR FIPS 服務端點。不過，使用 Amazon ECR FIPS 服務端點可以處理後續的提取。
+ 對於需要身分驗證的上游儲存庫，當第一次透過 Amazon ECR 私有登錄 URI 提取映像或更新快取時，映像提取是由與提取快取規則中設定的登入資料相關聯的使用者啟動。後續提取會直接從客戶私有登錄檔中的快取傳回映像。
+ 對於不需要身分驗證的上游儲存庫，當映像透過 Amazon ECR 私有登錄 URI 提取時，映像提取是由 AWS IP 地址啟動。
+ 當客戶透過 Amazon ECR 私有登錄檔 URI 提取快取映像時，Amazon ECR 會檢查過去 24 小時內是否已根據上游登錄檔驗證映像。如果 24 小時時段已過期，Amazon ECR 會在上游傳送請求，以檢查是否有較新的版本，並在快取存在時更新快取。如果視窗尚未過期，Amazon ECR 會在不聯絡上游的情況下提供快取映像。
+ 呼叫 `ListImageReferrers` API 以提取建立的快取儲存庫會將符合 OCI 標準的參考者成品傳回私有快取。
+ Amazon ECR 會檢查參考者成品是否已在過去 6 小時內更新。如果 6 小時時段已過期，Amazon ECR 會在上游傳送請求，以檢查是否有較新的版本，並在快取存在時更新快取。
+ 如果 Amazon ECR 因任何原因無法從上游登錄檔更新映像，並且已提取映像，則仍會提取最後一個快取映像。
+ 建立包含上游登錄檔憑證的 Secrets Manager 秘密時，秘密名稱必須使用 `ecr-pullthroughcache/` 字首。秘密也必須位於在其中建立提取快取規則的相同帳戶和區域中。
+ 使用提取快取規則提取多架構映像時，資訊清單和資訊清單中參照的每個映像都會提取至 Amazon ECR 儲存庫。如果只想提取特定架構，您可以使用與架構相關聯的映像摘要或標籤 (而不是與資訊清單相關聯的標籤) 來提取映像。
+ Amazon ECR 使用服務連結 IAM 角色，該角色提供 Amazon ECR 建立儲存庫、擷取用於身分驗證的 Secrets Manager 秘密值，和代表您推送快取映像所需的許可。建立提取快取規則時，會自動建立服務連結 IAM 角色。如需詳細資訊，請參閱[用於提取快取的 Amazon ECR 服務連結角色](slr-pullthroughcache.md)。
+ 依預設，提取快取映像的 IAM 主體具有透過其 IAM 政策授予他們的許可。您可以使用 Amazon ECR 私有登錄檔許可政策，進一步設定 IAM 實體的許可範圍。如需詳細資訊，請參閱[使用登錄檔許可](pull-through-cache-iam.md#pull-through-cache-registry-permissions)。
+ 使用提取快取工作流程建立的 Amazon ECR 儲存庫，會被視作與其他 Amazon ECR 儲存庫一樣。支援所有儲存庫功能，例如複寫和映像掃描。
+ Amazon ECR 代表您使用提取快取動作建立新儲存庫時，下列預設設定會套用至儲存庫，除非有相符的儲存庫建立範本。您可以使用儲存庫建立範本，定義套用至 Amazon ECR 代表您建立的儲存庫的設定。如需詳細資訊，請參閱[用於控制提取快取、推送時建立或複寫動作期間建立的儲存庫的範本](repository-creation-templates.md)。
  + 標籤不可變性 – 標籤不可變性指定是否可以覆寫影像標籤。根據預設，影像標籤是可變的 （可以覆寫）。您可以在****選取 **Mutable 時，透過在 Mutable 標籤排除**文字方塊中設定標籤排除篩選條件來修改標籤行為，或在選取 **Immutable 時設定 Immutable 標籤排除**文字方塊。 ****
  + 加密 – 使用預設`AES256`加密。
  + 儲存庫許可 – 已省略，不會套用儲存庫許可政策。
  + 生命週期政策 – 已省略，未套用生命週期政策。
  + 資源標籤 – 已省略，不會套用資源標籤。
+ 使用提取快取規則為儲存庫開啟映像標籤不變性，可防止 Amazon ECR 使用相同標籤更新映像。
+ 第一次可能需要路由到網際網路時，使用提取快取規則提取映像時。在某些情況下，需要路由至網際網路，因此最好設定路由以避免任何失敗。因此，如果您已使用 將 Amazon ECR 設定為使用介面 VPC 端點 AWS PrivateLink ，則需要確保第一次提取具有網際網路的路由。其中一種方法是使用網際網路閘道在相同的 VPC 中建立公有子網路，然後將所有傳出流量從其私有子網路路由到公有子網路。使用提取快取規則提取的後續映像不需要此項目。如需詳細資訊，請參閱*《Amazon Virtual Private Cloud 使用者指南》*中的[路由選項範例](https://docs.aws.amazon.com/vpc/latest/userguide/route-table-options.html)。