使用 Amazon S3 雙堆疊端點 - Amazon Simple Storage Service

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

使用 Amazon S3 雙堆疊端點

Amazon S3 雙堆疊端點支援透過 IPv6 與 IPv4 的 S3 儲存貯體要求。本節說明如何使用雙堆疊端點。

Amazon S3 雙堆疊端點

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

使用 REST API 等同於使用端點名稱 (URI) 直接存取 Amazon S3 端點。您可以使用虛擬代管型或路徑型的端點名稱,透過雙堆疊端點存取 S3 儲存貯體。Amazon S3 僅支援區域雙堆疊端點名稱,亦即,指定的名稱必須包含區域。

請使用下列命名慣例,為雙堆疊虛擬代管型及路徑型的端點名稱命名:

  • 虛擬代管型雙堆疊端點:

    bucketname.s3.dualstack.aws-region.amazonaws.com

     

  • 路徑型雙堆疊端點:

    s3.dualstack.aws-region.amazonaws.com/bucketname

如需端點名稱樣式的詳細資訊,請參閱存取及列出 Amazon S3 儲存貯體。如需 Amazon S3 端點的清單,請參閱《AWS 一般參考》中的區域與端點

重要

您可以搭配使用 Transfer Acceleration 與雙堆疊端點。如需詳細資訊,請參閱 Amazon S3 Transfer Acceleration 入門

注意

用於存取 Amazon S3 (介面 VPC 端點閘道 VPC 端點) 的兩種 VPC 端點類型不支援雙堆疊。如需 Amazon S3 的 VPC 端點的詳細資訊,請參閱 AWS PrivateLink 適用於 Amazon S3

使用 AWS Command Line Interface (AWS CLI) 和 AWS SDK 時,您可以使用參數或旗標來變更為雙堆疊端點。您也可以直接指定雙堆疊端點來覆寫設定檔中的 Amazon S3 端點。以下各節說明如何使用來自 AWS CLI 和 AWS SDK 的雙堆疊端點。

使用雙堆疊端點 AWS CLI

本節提供用於向雙堆疊端點發出要求的 AWS CLI 命令範例。如需有關設定的指示 AWS CLI,請參閱使用 AWS CLI 來透過 Amazon S3 進行開發

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

將雙堆疊端點與配合使用時 AWS CLI,pathvirtual定址樣式均受支援。設定檔中設定的定址樣式控制儲存貯體名稱應包含主機名稱中,或是包含在 URL 中。根據預設,CLI 會盡可能地嘗試使用虛擬樣式,但會在必要時切換回路徑樣式。如需詳細資訊,請參閱 AWS CLI Amazon S3 組態

您也可以使用命令變更組態,將預設設定檔中的 use_dualstack_endpoint 設為 true,以及將 addressing_style 設為 virtual,如下所示。

$ aws configure set default.s3.use_dualstack_endpoint true $ aws configure set default.s3.addressing_style virtual

如果您只想將雙堆疊端點用於指定的 AWS CLI 命令 (並非所有命令),您可以使用下列其中一種方法:

  • 您可以將任何 --endpoint-urlhttps://s3.dualstack.aws-region.amazonaws.com 命令的 http://s3.dualstack.aws-region.amazonaws.com 參數設成 s3s3api,以在個別的命令中使用雙堆疊端點。

    $ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-region.amazonaws.com
  • 您可以在檔案中設定個別的設定 AWS Config 檔。例如,您可以建立一個設定檔,將 use_dualstack_endpoint 設為 true,再建立另一個設定檔不設定 use_dualstack_endpoint。當您執行命令時,必須依據是否要使用雙堆疊端點來指定所要使用的設定檔。

注意

使用時, AWS CLI 您目前無法對雙堆疊端點使用傳輸加速。但是,對於的支持 AWS CLI 即將推出。如需詳細資訊,請參閱 使用 AWS CLI

從 AWS 開發套件使用雙堆疊端點

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

AWS SDK for Java 雙堆疊端點範例

下列範例示範如何在使用 AWS SDK for Java建立的 Amazon S3 用戶端狀態下,啟用雙堆疊端點。

如需建立和測試可運作之 Java 範例的指示,請參閱 AWS SDK for Java 發人員指南中的入門指南。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; public class DualStackEndpoints { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { // Create an Amazon S3 client with dual-stack endpoints enabled. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .withDualstackEnabled(true) .build(); s3Client.listObjects(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

如果您在視窗 AWS SDK for Java 上使用,您可能必須設定下列 Java 虛擬機器 (JVM) 屬性:

java.net.preferIPv6Addresses=true

AWS .NET SDK 雙堆疊端點範例

使用 AWS SDK for .NET 時,您可以使用AmazonS3Config類別來啟用雙堆疊端點的使用,如下列範例所示。

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DualStackEndpointTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { var config = new AmazonS3Config { UseDualstackEndpoint = true, RegionEndpoint = bucketRegion }; client = new AmazonS3Client(config); Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } private static async Task ListingObjectsAsync() { try { var request = new ListObjectsV2Request { BucketName = bucketName, MaxKeys = 10 }; ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken); request.ContinuationToken = response.NextContinuationToken; } while (response.IsTruncated == true); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

如需列出物件的完整 .NET 範例,請參閱「以程式設計方式列出物件索引鍵」。

如需有關設定和執行程式碼範例的詳細資訊,請參閱 .NET 開發人員指南中的AWS SDK for .NET門。 AWS

從 REST API 使用雙堆疊端點

如需如何使用 REST API 要雙堆疊端點的資訊,請參閱「使用 REST API 提出雙重堆疊端點要求」。