Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Amazon S3-Dual-Stack-Endpunkte verwenden

Dual-Stack-Endpunkte in Amazon S3 unterstützen Anfragen an S3-Buckets über IPv6 und IPv4. In diesem Abschnitt wird die Verwendung von Dual-Stack-Endpunkten beschrieben.

Amazon S3-Dual-Stack-Endpunkte

Wenn Sie eine Anfrage an einen Dual-Stack-Endpunkt richten, wird die Bucket-URL in eine IPv6- oder eine IPv4-Adresse aufgelöst. Weitere Informationen zum Zugriff auf einen Bucket über IPv6 finden Sie unter Senden von Anfragen an Amazon S3 über IPv6.

Wenn Sie die REST-API verwenden, können Sie direkt auf einen Amazon S3-Dual-Stack-Endpunkt zugreifen, indem Sie den Endpunktnamen (URI) verwenden. Sie können auf einen S3-Bucket über einen Dual-Stack-Endpunkt mit einem Endpunktnamen im Virtual-Hosting- oder Pfadformat zugreifen. Amazon S3 unterstützt ausschließlich regionsbasierte Namen von Dual-Stack-Endpunkten. Das bedeutet, dass Sie die Region als Teil des Namens angeben müssen.

Verwenden Sie die folgenden Namenskonventionenfür Endpunktnamen im Virtual-Hosted-Style und im Path-Style:

  • Dual-Stack-Endpunkte im Virtual-Hosted–Style:

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

     

  • Dual-Stack-Endpunkt im Path–Style:

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

Weitere Informationen zum Endpunkt-Namensstil finden Sie unter Zugriff auf einen Bucket. Die Liste der Amazon S3-Endpunkte finden Sie unter Regionen und Endpunkte in der AWS General Reference.

Wichtig

Für Dual-Stack-Endpunkte kann eine Transfer Acceleration verwendet werden. Weitere Informationen finden Sie unter Erste Schritte mit Amazon S3 Transfer Acceleration.

Wenn Sie die AWS Command Line Interface (AWS CLI) und AWS SDKs verwenden, können Sie einen Parameter oder ein Flag verwenden, um zu einem Dual-Stack-Endpunkt zu wechseln. Sie können den Dual-Stack-Endpunkt auch direkt als Override des Amazon S3-Endpunkts in der Konfigurationsdatei angeben. In den folgenden Abschnitten wird erläutert, wie Dual-Stack-Endpunkte von der AWS CLI und den AWS SDKs verwendet werden.

Dual-Stack-Endpunkte von der AWS CLI verwenden

Dieser Abschnitt enthält Beispiele für AWS CLI-Befehle für Anfragen an einen Dual-Stack-Endpunkt. Weitere Informationen zum Einrichten der AWS CLI finden Sie unter Einrichten der AWS-CLI.

Sie legen den Konfigurationswert use_dualstack_endpoint auf true in einem Profil in Ihrer AWS Config-Datei fest, um alle Amazon S3-Anfragen über die Befehle s3 und s3api der AWS CLI an den Dual-Stack-Endpunkt für die angegebene Region zu leiten. Sie geben die Region in der Konfigurationsdatei oder in einem Befehl mit der Option --region an.

Bei Verwendung von Dual-Stack-Endpunkten mit der AWS CLI werden sowohl das Adressenformat path als auch das Adressenformat virtual unterstützt. Der Adressierungsstil, der in der Konfigurationsdatei festgelegt wird, steuert, ob der Bucketname im Hostnamen enthalten oder Teil der URL ist. Standardmäßig versucht die CLI, den virtuellen Stil zu verwenden, wann immer das möglich ist, verwendet aber auch den Pfadstil, wenn das notwendig ist. Weitere Informationen finden Sie unter AWS CLI Amazon S3-Konfiguration.

Sie können auch Konfigurationsänderungen über einen Befehl vornehmen, wie im folgenden Beispiel gezeigt, das im Standardprofil use_dualstack_endpoint auf true und addressing_style auf virtual setzt.

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

Wenn Sie einen Dual-Stack-Endpunkt nur für bestimmte AWS CLI-Befehle (nicht für alle) verwenden wollen, können Sie eine der folgenden Methoden anwenden:

  • Sie können den Dual-Stack-Endpunkt pro Befehl verwenden, indem Sie den Parameter --endpoint-url auf https://s3.dualstack.aws-region.amazonaws.com oder http://s3.dualstack.aws-region.amazonaws.com für jeden s3- oder s3api-Befehl setzen.

    $ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-region.amazonaws.com
  • Sie können separate Profile in Ihrer AWS Config-Datei einrichten. Legen Sie beispielsweise ein Profil an, das use_dualstack_endpoint auf true setzt, und ein Profil, das use_dualstack_endpoint nicht setzt. Wenn Sie einen Befehl ausführen, geben Sie an, welches Profil Sie verwenden wollen, abhängig davon, ob Sie den Dual-Stack-Endpunkt verwenden wollen oder nicht.

Anmerkung

Wenn Sie die AWS CLI verwenden, können Sie derzeit für Dual-Stack-Endpunkte keine Transfer Acceleration verwenden. Die AWS CLI wird jedoch demnächst unterstützt. Weitere Informationen finden Sie unter Verwendung von Transfer Acceleration mit AWS Command Line Interface (AWS CLI) .

Dual-Stack-Endpunkte von den AWS SDKs verwenden

Dieser Abschnitt enthält Beispiele für den Zugriff auf einen Dual-Stack-Endpunkt unter Verwendung der AWS SDKs.

Beispiel für einen AWS SDK for Java-Dual-Stack-Endpunkt

Das folgende Beispiel zeigt die Aktivierung von Dual-Stack-Endpunkten beim Erstellen eines Amazon S3-Clients mittels AWS SDK for Java.

Anweisungen zum Erstellen und Testen eines funktionierenden Java-Beispiels finden Sie unter Testen der Amazon S3-Java-Codebeispiele.

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

Wenn Sie das AWS SDK for Java unter Windows einsetzen, müssen Sie möglicherweise die folgende JVM (Java Virtual Machine)-Eigenschaft festlegen:

java.net.preferIPv6Addresses=true

Beispiel für einen AWS .NET SDK Dual-Stack-Endpunkt

Wenn Sie das AWS SDK for .NET verwenden, verwenden die Klasse AmazonS3Config, um die Verwendung eines Dual-Stack-Endpunkts zu erlauben, wie im folgenden Beispiel gezeigt.

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

Ein vollständiges .NET-Beispiel für die Auflistung von Objekten finden Sie unter Auflisten von Schlüsseln mit AWS SDK für .NET.

Weitere Informationen zum Erstellen und Testen eines funktionierenden .NET-Beispiels finden Sie unter Ausführen der Amazon S3 .NET-Codebeispiele.

Dual-Stack-Endpunkte von den REST API verwenden

Weitere Informationen über Anfragen an Dual-Stack-Endpunkte über die REST API finden Sie unter Senden von Anfragen an Dual-Stack-Endpunkte unter Verwendung der REST-API.