向 Amazon ECR 登錄檔提出請求 - Amazon ECR

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

向 Amazon ECR 登錄檔提出請求

您可以使用IPv4-only 端點或雙堆疊 (IPv4 和 IPv6) 端點,在 Amazon ECR 私有登錄檔中推送、提取、刪除、檢視和管理 OCI 映像、Docker 映像和 OCI 相容成品。若要從 IPv4 網路提出請求,您可以使用雙堆疊或 IPv4 端點。若要從 IPv6 網路提出請求,請使用雙堆疊端點。如需使用 IPv4 和雙堆疊端點向 Amazon ECR Public 登錄檔提出請求的詳細資訊,請參閱向 Amazon ECR Public 登錄檔提出請求。透過 IPv6 存取 Amazon ECR 無需額外費用。如需定價的詳細資訊,請參閱 Amazon Elastic Container Registry 定價

注意

Amazon ECR 不支援透過雙堆疊端點的 AWS PrivateLink 流量。如果您需要 AWS PrivateLink 支援,則必須使用IPv4-only Amazon ECR 端點。

Amazon ECR 端點是由IPv4-only端點或雙堆疊端點支援的屬性所指定。這些屬性可能包括:

  • 區域 – 每個端點都專屬於一個區域。

  • 類型 – 端點選擇取決於您使用的是 AWS SDK 還是 OCI 相容和 Docker 命令列界面。

  • 安全性 – 在特定區域中,Amazon ECR 提供符合 FIPS 標準的端點。如需 FIPS 相容 Amazon ECR 端點清單的詳細資訊,請參閱聯邦資訊處理標準 (FIPS) 140-3

如需 IPv4、雙堆疊、Docker 和 OCI 用戶端支援之服務端點的詳細資訊,其會處理來自 CLI 和 AWS SDKs Amazon ECR API AWS 呼叫,請參閱服務端點

透過 IPv6 提出請求的入門

若要透過 IPv6 向 Amazon ECR 登錄檔提出請求,您需要使用雙堆疊端點。透過 IPv6 存取 Amazon ECR 登錄檔之前,請確認下列需求:

  • 您的用戶端和網路必須支援 IPv6。

  • Amazon ECR 透過 IPv6 支援下列請求類型:

    • OCI 和 Docker 用戶端請求:

      <registry-id>.dkr-ecr.<aws-region>.on.aws

    • AWS API 請求:

      ecr.<aws-region>.api.aws

  • 您必須更新任何使用來源 IP 地址篩選的 AWS Identity and Access Management (IAM) 或登錄政策,以包含 IPv6 地址範圍。如需詳細資訊,請參閱在 IAM 原則中使用 IPv6 地址

  • 當您使用 IPv6 時,伺服器存取日誌會以 IPv6 格式顯示Remote IP地址。更新您現有的工具、指令碼和軟體,以剖析這些 IPv6-formatted的 IP 地址。

    注意

    如果碰到與日誌檔案中 IPv6 地址相關的問題,請聯絡 AWS 支援

測試 IP 地址相容性

如果使用 Linux/Unix 或 Mac OS X,您可以使用 curl 命令測試能否透過 IPv6 存取雙堆疊端點,如下例所示:

curl --verbose https://ecr.us-west-2.api.aws

您會收到類似下例的資訊。如果您是透過 IPv6 連線,則連線的 IP 地址就會是 IPv6 地址。

* About to connect() to ecr.us-west-2.api.aws port 443 (#0) * Trying IPv6 address... connected * Connected to ecr.us-west-2.api.aws (IPv6 address) port 443 (#0) > Host: ecr.us-west-2.api.aws * Request completely sent off

如果您使用的是 Microsoft Windows 7 或 Windows 10,您可以使用 ping命令來測試是否可以透過 IPv4 或 IPv6 存取雙堆疊端點,如下列範例所示。

ping ecr.us-west-2.api.aws

使用雙重堆疊端點透過 IPv6 提出請求

您可以使用雙堆疊端點透過 IPv6 進行 Amazon ECR API 呼叫。無論您使用 IPv4 或 IPv6,Amazon ECR API 操作的功能和效能都保持一致。

當您使用 AWS Command Line Interface (AWS CLI) AWS SDKs 時,您可以使用參數或旗標切換到雙堆疊端點來啟用 IPv6,或直接在組態檔案中指定雙堆疊端點來覆寫預設的 Amazon ECR 端點。您也可以使用在預設設定檔中use_dualstack_endpoint設定為 true 的命令進行組態變更。如需 的詳細資訊use_dualstack_endpoint,請參閱雙堆疊和 FIPS 端點

範例 使用 命令進行組態變更

aws configure set default.ecr.use_dualstack_endpoint true

範例 使用 透過 IPv6 提出請求 AWS CLI

aws ecr describe-repositories --region us-west-2 --endpoint-url https://ecr.us-west-2.api.aws

從 docker CLI 使用 Amazon ECR 端點

登入 Amazon ECR 儲存庫並標記映像後,您可以在 Amazon ECR 登錄檔之間推送和提取 OCI 映像和 Docker 映像。下列範例示範使用雙堆疊端點的 docker push 和 docker pull 命令。

範例 使用 IPv4 端點推送 Docker 映像

docker push <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag

範例 使用雙堆疊端點推送 Docker 映像

docker push <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag

範例 使用 IPv4 端點提取 Docker 映像

docker pull <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag

範例 使用雙堆疊端點提取 Docker 映像

docker pull <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag

在 IAM 原則中使用 IPv6 地址

使用 IPv6 存取登錄檔之前,請確定使用 IP 地址篩選的 IAM 使用者和 Amazon ECR 登錄檔政策包含 IPv6 地址範圍。如果未更新 IP 地址篩選政策來處理 IPv6 地址,用戶端可能會在開始使用 IPv6 時錯誤遺失或存取登錄檔。如需 IAM 管理存取許可的詳細資訊,請參閱 Amazon Elastic Container Registry 的 Identity and Access Management

篩選 IP 地址的 IAM 原則使用IP 地址條件運算子。下列登錄政策範例示範如何使用 IP 地址條件運算子來識別允許的 IPv4 地址54.240.143.*範圍。超出此範圍的任何 IP 地址都會被拒絕存取登錄檔 (exampleregistry)。由於所有 IPv6 地址都在允許的範圍之外,此政策會防止 IPv6 地址存取 exampleregistry

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "ecr:*", "Resource": "arn:aws:ecr:::exampleregistry/*", "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

若要同時允許 IPv4 (54.240.143.0/24) 和 IPv6 (2001:DB8:1234:5678::/64) 地址範圍,請修改登錄政策的條件元素,如下列範例所示。您可以使用此Condition區塊格式來更新 IAM 使用者和登錄檔政策。

"Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } }
重要

在使用 IPv6 之前,您必須更新使用 IP 地址篩選的所有相關 IAM 使用者和登錄政策。我們不建議在登錄政策中使用 IP 地址篩選。

您可以使用 https://console.aws.amazon.com/iam/的 IAM 主控台來檢閱 IAM 使用者原則。如需 IAM 的詳細資訊,請參閱《IAM 使用者指南》。