使用 S3 on Outposts 雙堆疊端點 - Amazon S3 on Outposts

使用 S3 on Outposts 雙堆疊端點

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

S3 on Outposts 雙堆疊端點

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

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

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

s3-outposts-fips.region.api.aws

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

s3-outposts.region.api.aws
注意

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

從 AWS CLI 使用雙堆疊端點

本節提供可用於要求雙堆疊端點的 AWS CLI 命令範例。如需設定 AWS CLI 的說明,請參閱開始使用 AWS CLI 和適用於 Java 的開發套件

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

在 AWS CLI 中使用雙堆疊端點時,僅支援 path 定址樣式。組態檔案中設定的定址樣式會決定儲存貯體名稱應包含主機名稱中,或是包含在 URL 中。如需詳細資訊,請參閱《AWS CLI使用者指南》中的 s3outposts

若要透過 AWS CLI 使用雙堆疊端點,請將 --endpoint-url 參數與 http://s3.dualstack.region.amazonaws.com.rproxy.govskope.cahttps://s3-outposts-fips.region.api.aws 端點搭配使用,以用於任何 s3controls3outposts 命令。

例如:

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

從 AWS SDK 使用 S3 on Outposts 雙堆疊端點

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

AWS SDK for Java 2.x 雙堆疊端點範例

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

範例 – 在啟用雙堆疊端點的情況下建立 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(); } } }
範例 – 建立已啟用雙堆疊端點的 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(); } } }

若要在 Windows 上使用 AWS SDK for Java 2.x,必須設定下列 Java 虛擬機器 (JVM) 屬性:

java.net.preferIPv6Addresses=true