

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

# 使用 S3 on Outposts 雙堆疊端點
<a name="s3-outposts-dual-stack-endpoints"></a>

S3 on Outposts 雙堆疊端點支援透過 IPv6 與 IPv4 對 S3 on Outposts 儲存貯體提出請求。本節說明如何使用 S3 on Outposts 雙堆疊端點。

**Topics**
+ [S3 on Outposts 雙堆疊端點](#s3-outposts-dual-stack-endpoints-description)
+ [從 使用雙堆疊端點 AWS CLI](#s3-outposts-dual-stack-endpoints-cli)
+ [從 AWS SDKs 使用 S3 on Outposts 雙堆疊端點](#s3-outposts-dual-stack-endpoints-sdks)

## S3 on Outposts 雙堆疊端點
<a name="s3-outposts-dual-stack-endpoints-description"></a>

當您對雙堆疊端點時提出請求時，S3 on Outposts 儲存貯體 URL 會解析為 IPv6 或 IPv4 位址。如需如何透過 IPv6 存取 S3 on Outposts 儲存貯體的詳細資訊，請參閱[透過 IPv6 向 S3 on Outposts 提出請求](S3OutpostsIPv6-access.md)。

若要透過雙堆疊端點存取 S3 on Outposts 儲存貯體，請使用路徑樣式端點名稱。S3 on Outposts 僅支援區域雙堆疊端點名稱，亦即，指定的名稱必須包含區域。

針對雙堆疊端點路徑樣式 FIP 端點，請使用下列命名慣例：

```
s3-outposts-fips.region.api.aws
```

針對雙堆疊非 FIP 端點，請使用下列命名慣例：

```
s3-outposts.region.api.aws
```

**注意**  
S3 on Outposts 中不支援虛擬託管樣式端點名稱。

## 從 使用雙堆疊端點 AWS CLI
<a name="s3-outposts-dual-stack-endpoints-cli"></a>

本節提供用於向雙堆疊端點提出請求的 AWS CLI 命令範例。如需設定 的指示 AWS CLI，請參閱 [開始使用適用於 Java 的 AWS CLI 和 開發套件](S3OutpostsGSCLIJava.md)。

您可以在 AWS Config 檔案的設定檔`true`中將組態值設定為 `use_dualstack_endpoint` ，將 `s3`和 `s3api` AWS CLI 命令提出的所有 Amazon S3 請求導向至指定區域的雙堆疊端點。您可以在組態檔案或命令中使用 `--region` 選項指定區域。

搭配 使用雙堆疊端點時 AWS CLI，僅支援`path`定址樣式。組態檔案中設定的定址樣式會決定儲存貯體名稱應包含主機名稱中，或是包含在 URL 中。如需詳細資訊，請參閱《AWS CLI 使用者指南》**中的 [https://docs.aws.amazon.com/cli/latest/reference/s3outposts/](https://docs.aws.amazon.com/cli/latest/reference/s3outposts/)。

若要透過 使用雙堆疊端點 AWS CLI，請將 `--endpoint-url` 參數與 `http://s3.dualstack.region.amazonaws.com`或 `https://s3-outposts-fips.region.api.aws`端點搭配使用，以用於任何 `s3control`或 `s3outposts`命令。

例如：

```
$  aws s3control list-regional-buckets --endpoint-url https://s3-outposts.region.api.aws
```

## 從 AWS SDKs 使用 S3 on Outposts 雙堆疊端點
<a name="s3-outposts-dual-stack-endpoints-sdks"></a>

本節提供如何使用 AWS 開發套件存取雙堆疊端點的範例。

### AWS SDK for Java 2.x 雙堆疊端點範例
<a name="s3-outposts-dual-stack-endpoints-examples-javav2"></a>

下列範例示範如何在使用 AWS SDK for Java 2.x建立 S3 on Outposts 用戶端時，使用 `S3ControlClient` 和 `S3OutpostsClient` 類別啟用雙堆疊端點。如需建立及測試 Amazon S3 on Outposts 的可行 Java 範例的指示，請參閱[開始使用適用於 Java 的 AWS CLI 和 開發套件](S3OutpostsGSCLIJava.md)。

**Example – 在啟用雙堆疊端點的情況下建立 `S3ControlClient` 類別**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.ListRegionalBucketsRequest;
import software.amazon.awssdk.services.s3control.model.ListRegionalBucketsResponse;
import software.amazon.awssdk.services.s3control.model.S3ControlException;


public class DualStackEndpointsExample1 {

    public static void main(String[] args) {
        Region clientRegion = Region.of("us-east-1");
        String accountId = "111122223333";
        String navyId = "9876543210";

        try {
            // Create an S3ControlClient with dual-stack endpoints enabled.
            S3ControlClient s3ControlClient = S3ControlClient.builder()
                                                             .region(clientRegion)
                                                             .dualstackEnabled(true)
                                                             .build();
            ListRegionalBucketsRequest listRegionalBucketsRequest = ListRegionalBucketsRequest.builder()
                                                                                              .accountId(accountId)
                                                                                              .outpostId(navyId)
                                                                                              .build();

            ListRegionalBucketsResponse listBuckets = s3ControlClient.listRegionalBuckets(listRegionalBucketsRequest);
            System.out.printf("ListRegionalBuckets Response: %s%n", listBuckets.toString());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 on Outposts couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        }
        catch (S3ControlException e) {
            // Unknown exceptions will be thrown as an instance of this type.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 on Outposts couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3 on Outposts.
            e.printStackTrace();
        }
    }
}
```

**Example – 建立已啟用雙堆疊端點的 `S3OutpostsClient`**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3outposts.S3OutpostsClient;
import software.amazon.awssdk.services.s3outposts.model.ListEndpointsRequest;
import software.amazon.awssdk.services.s3outposts.model.ListEndpointsResponse;
import software.amazon.awssdk.services.s3outposts.model.S3OutpostsException;


public class DualStackEndpointsExample2 {

    public static void main(String[] args) {
        Region clientRegion = Region.of("us-east-1");

        try {
            // Create an S3OutpostsClient with dual-stack endpoints enabled.
            S3OutpostsClient s3OutpostsClient = S3OutpostsClient.builder()
                                                              .region(clientRegion)
                                                              .dualstackEnabled(true)
                                                              .build();
            ListEndpointsRequest listEndpointsRequest = ListEndpointsRequest.builder().build();

            ListEndpointsResponse listEndpoints = s3OutpostsClient.listEndpoints(listEndpointsRequest);
            System.out.printf("ListEndpoints Response: %s%n", listEndpoints.toString());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 on Outposts couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        }
        catch (S3OutpostsException e) {
            // Unknown exceptions will be thrown as an instance of this type.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 on Outposts couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3 on Outposts.
            e.printStackTrace();
        }
    }
}
```

如果您在 AWS SDK for Java 2.x Windows 上使用 ，您可能需要設定下列 Java 虛擬機器 (JVM) 屬性：

```
java.net.preferIPv6Addresses=true
```