View a markdown version of this page

使用 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 Amazon S3 的 PrivateLink

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

從 使用雙堆疊端點 AWS CLI

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

您可以在 AWS Config 檔案的設定檔use_dualstack_endpointtrue中將組態值設定為 ,將 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 即將推出。如需詳細資訊,請參閱啟用和使用 S3 Transfer Acceleration

從 AWS SDKs 使用雙堆疊端點

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

適用於 Java 的 AWS SDK 雙堆疊端點範例

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

如需建立和測試工作 Java 範例的說明,請參閱《 適用於 Java 的 AWS SDK 開發人員指南》中的入門

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(); } } }

如果您在 Windows 適用於 Java 的 AWS SDK 上使用 ,您可能需要設定下列 Java 虛擬機器 (JVM) 屬性:

java.net.preferIPv6Addresses=true

AWS .NET SDK 雙堆疊端點範例

使用適用於 .NET 的 AWS SDK 時,您可以使用 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 的 AWS SDK 開發人員指南》中的適用於 .NET 的 SDK 入門AWS

從 REST API 使用雙堆疊端點

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