使用 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,請參閱 開始使用適用於 Java 的 AWS CLI 和 開發套件

您可以在 AWS Config 檔案的設定檔use_dualstack_endpointtrue中將組態值設定為 ,將 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 SDKs 使用 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 範例的指示,請參閱開始使用適用於 Java 的 AWS CLI 和 開發套件

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