

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

# 透過 IPv6 向 Amazon S3 提出請求
<a name="ipv6-access"></a>

Amazon Simple Storage Service (Amazon S3) 除了 IPv4 通訊協定之外，還支援使用網際網路通訊協定第 6 版 (IPv6) 存取 S3 儲存貯體的能力。Amazon S3 雙堆疊端點支援透過 IPv6 與 IPv4 的 S3 儲存貯體要求。透過 IPv6 存取 Amazon S3 不另行收費。如需定價的詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

**注意**  
下列資訊適用於公有 Amazon S3 IPv6 端點。如需有關 AWS Virtual Private Cloud (VPC) 端點的資訊，請參閱適用於 [AWS Amazon S3 的 PrivateLink](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html)。

**Topics**
+ [透過 IPv6 提出請求的入門](#ipv6-access-getting-started)
+ [在 IAM 原則中使用 IPv6 地址](#ipv6-access-iam)
+ [測試 IP 地址相容性](#ipv6-access-test-compatabilty)
+ [使用 Amazon S3 雙堆疊端點](dual-stack-endpoints.md)

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

若要透過 IPv6 向 S3 儲存貯體提出請求，您需要使用雙堆疊端點。下節說明如何使用雙堆疊端點透過 IPv6 提出請求。

以下是透過 IPv6 嘗試存取儲存貯體前的須知事項：
+ 存取儲存貯體的用戶端與網路必須啟用才能使用 IPv6。
+ 虛擬託管式與路徑式請求都支援 IPv6 存取。如需詳細資訊，請參閱[Amazon S3 雙堆疊端點](dual-stack-endpoints.md#dual-stack-endpoints-description)。
+ 如果您在 AWS Identity and Access Management (IAM) 使用者或儲存貯體政策中使用來源 IP 地址篩選，則需要更新政策以包含 IPv6 地址範圍。如需詳細資訊，請參閱[在 IAM 原則中使用 IPv6 地址](#ipv6-access-iam)。
+ 使用 IPv6 時，伺服器會存取 IPv6 格式的日誌檔案輸出 IP 地址。您需要更新用來剖析 Amazon S3 日誌檔案的現有工具、指令碼與軟體，以便它們可以剖析 IPv6 格式的 `Remote IP` 地址。如需詳細資訊，請參閱[使用伺服器存取記錄記錄請求](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html)。
**注意**  
如果碰到與日誌檔案中 IPv6 地址相關的問題，請聯絡 [AWS 支援](https://aws.amazon.com/premiumsupport/)。



### 使用雙重堆疊端點透過 IPv6 提出請求
<a name="ipv6-access-api"></a>

您使用雙重堆疊端點透過 IPv6 提出具痭 Amazon S3 API 呼叫的請求。無論您是透過 IPv6 還是透過 IPv4 存取Amazon S3，Amazon S3 API 操作都會以相同的方式運作。效能也應該是相同。

使用 REST API 時，您會直接存取雙堆疊端點。如需詳細資訊，請參閱[雙堆疊端點](dual-stack-endpoints.md#dual-stack-endpoints-description)。

使用 AWS Command Line Interface (AWS CLI) 和 AWS SDKs時，您可以使用參數或旗標來變更為雙堆疊端點。您也可以直接指定雙堆疊端點來覆寫設定檔中的 Amazon S3 端點。

您可以使用雙堆疊端點，從下列任一位置透過 IPv6 存取儲存貯體：
+  AWS CLI，請參閱 [從 使用雙堆疊端點 AWS CLI](dual-stack-endpoints.md#dual-stack-endpoints-cli)。
+  AWS SDKs請參閱[從 AWS SDKs 使用雙堆疊端點](dual-stack-endpoints.md#dual-stack-endpoints-sdks)。
+ REST API，請參閱「[使用 REST API 提出雙重堆疊端點要求](RESTAPI.md#rest-api-dual-stack)」。

### 無法透過 IPv6 提供的功能
<a name="ipv6-not-supported"></a>

目前，透過 IPv6 存取 S3 儲存貯體時，不支援下列功能：從 S3 儲存貯體託管靜態網站。

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

嘗試使用 IPv6 存取儲存貯體之前，您必須確保用於 IP 地址篩選條件的所有 IAM 使用者或 S3 儲存貯體原則，皆已更新包含 IPv6 地址範圍。未針對處理 IPv6 地址更新的IP 地址篩選條件原則，可能會導致用戶端在開始使用 IPv6 時，錯誤遺失或取得儲存貯體的存取許可。如需使用 IAM 管理存取權的詳細資訊，請參閱 [Amazon S3 的 Identity and Access Management](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)。

篩選 IP 地址的 IAM 原則使用[IP 地址條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IPAddress)。以下儲存貯體原則會使用 IP 地址條件運算子找出允許之 IPv4 地址的 54.240.143.\* 範圍。拒絕此範圍外的任何 IP 地址存取儲存貯體 (`examplebucket`)。因為所有的 IPv6 地址都在允許的範圍外，所以此原則可避免 IPv6 地址得以存取 `examplebucket`。

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

****  

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

------

您可以修改儲存貯體政策的 `Condition` 元素，允許 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/)》。如需有關編輯 S3 儲存貯體政策的資訊，請參閱[新增儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

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

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

**Example**  

```
curl -v  http://s3.dualstack.us-west-2.amazonaws.com/
```
您會收到類似下例的資訊。如果您是透過 IPv6 連線，則連線的 IP 地址就會是 IPv6 地址。  

```
* About to connect() to s3-us-west-2.amazonaws.com port 80 (#0)
*   Trying {{IPv6 address}}... connected
* Connected to s3.dualstack.us-west-2.amazonaws.com ({{IPv6 address}}) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1 OpenSSL/1.0.1t zlib/1.2.3
> Host: s3.dualstack.us-west-2.amazonaws.com
```

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

```
ping ipv6.s3.dualstack.us-west-2.amazonaws.com 
```