

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

# 向 Amazon ECR 登錄檔提出請求
<a name="ecr-requests"></a>

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

Amazon ECR 端點是由IPv4-only端點或雙堆疊端點支援以外的屬性指定。這些屬性可能包括：
+ **區域** – 每個端點都專屬於一個區域。
+ **類型** – 端點選擇取決於您使用的是 AWS SDK 還是 OCI 相容和 Docker 命令列界面。
+ **安全性** – 在特定區域中，Amazon ECR 提供符合 FIPS 標準的端點。如需符合 FIPS 標準的 Amazon ECR 端點清單的詳細資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

如需 IPv4、雙堆疊、Docker 和 OCI 用戶端支援之服務端點的詳細資訊，其會處理來自 CLI 和 AWS SDKs Amazon ECR API AWS 呼叫，請參閱[服務端點](https://docs.aws.amazon.com//general/latest/gr/ecr.html#ecr_region)。

## 透過 IPv6 提出請求的入門
<a name="ipv6-access-getting-started"></a>

若要透過 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 地址](#ecr-request-ipv6-access-iam)。
+ 當您使用 IPv6 時，伺服器存取日誌會以 IPv6 格式顯示`Remote IP`地址。更新現有的工具、指令碼和軟體，以剖析這些 IPv6-formatted的 IP 地址。
**注意**  
如果碰到與日誌檔案中 IPv6 地址相關的問題，請聯絡 [AWS 支援](https://aws.amazon.com/premiumsupport/)。

## 測試 IP 地址相容性
<a name="ipv6-access-test-compatabilty"></a>

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

**Example**  

```
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 提出請求
<a name="ecr-access-api"></a>

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

當您使用 AWS Command Line Interface (AWS CLI) AWS SDKs 時，您可以使用參數或旗標切換到雙堆疊端點，或直接在組態檔案中指定雙堆疊端點來覆寫預設的 Amazon ECR 端點，以啟用 IPv6。您也可以使用在預設設定檔中`use_dualstack_endpoint`設定為 true 的 命令進行組態變更。如需 的詳細資訊`use_dualstack_endpoint`，請參閱[雙堆疊和 FIPS 端點](https://docs.aws.amazon.com//sdkref/latest/guide/feature-endpoints.html)。

**Example 使用 命令進行組態變更**  <a name="ecr-private-config-changes"></a>
 `aws configure set default.ecr.use_dualstack_endpoint true` 

**Example 使用 透過 IPv6 提出請求 AWS CLI**  <a name="ecr-private-make-requests-cli"></a>
 ` aws ecr describe-repositories --region us-west-2 --endpoint-url https://ecr.us-west-2.api.aws` 

## 從 docker CLI 使用 Amazon ECR 端點
<a name="ecr-requests-from-docker-cli"></a>

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

**Example 使用 IPv4 端點推送 Docker 映像**  <a name="ecr-private-ecr-push-docker-ipv4"></a>
`docker push <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag`

**Example 使用雙堆疊端點推送 Docker 映像**  <a name="ecr-private-ecr-push-docker-dual-stack"></a>
`docker push <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag`

**Example 使用 IPv4 端點提取 Docker 映像**  <a name="ecr-private-ecr-pull-docker-ipv4"></a>
`docker pull <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag`

**Example 使用雙堆疊端點提取 Docker 映像**  <a name="ecr-private-ecr-pull-docker-dual-stack"></a>
`docker pull <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag`

## 在 IAM 原則中使用 IPv6 地址
<a name="ecr-request-ipv6-access-iam"></a>

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

篩選 IP 地址的 IAM 原則使用[IP 地址條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IPAddress)。下列登錄政策範例示範如何使用 IP 地址條件運算子來識別允許的 IPv4 地址`54.240.143.*`範圍。超出此範圍的任何 IP 地址都會被拒絕存取登錄檔 (`exampleregistry`)。由於所有 IPv6 地址都超出允許的範圍，因此此政策會防止 IPv6 地址存取 `exampleregistry`。

------
#### [ JSON ]

****  

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

------

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

```
1.        "Condition": {
2.          "IpAddress": {
3.             "aws:SourceIp": [
4.               "54.240.143.0/24",
5.                "2001:DB8:1234:5678::/64"
6.              ]
7.           }
8.         }
```

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

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