Verwenden von Amazon-S3-Dual-Stack-Endpunkten - Amazon Simple Storage Service

Verwenden von Amazon-S3-Dual-Stack-Endpunkten

Amazon-S3-Dual-Stack-Endpunkte unterstützen Anforderungen 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 Anforderung 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 unte Stellen von Anforderungen an Amazon S3 über IPv6.

Wenn Sie die REST-API verwenden, können Sie direkt auf einen Amazon-S3-Endpunkt zugreifen, indem Sie den Endpunktnamen (URI) verwenden. Über einen Dual-Stack-Endpunkt können Sie auf einen S3-Bucket zugreifen, indem Sie einen Virtual-Hosted-Style- oder Path-Style-Endpunktnamen verwenden. Amazon S3 unterstützt nur regionale Dual-Stack-Endpunktnamen, d. h. Sie müssen die Region als Teil des Namens angeben.

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 Stil von Endpunktnamen finden Sie unter Methoden zum Zugriff auf einen Bucket. Eine Liste der Amazon-S3-Endpunkte finden Sie unter Regions and Endpoints (Regionen und Endpunkte) in der Allgemeinen AWS-Referenz.

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.

Verwenden von Dual-Stack-Endpunkten von der AWS CLI

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 Entwickeln mit Amazon S3 über die AWS CLI.

Sie setzen den Konfigurationswerte use_dualstack_endpoint auf true in einem Profil in Ihrer AWS Config-Datei, um alle Amazon-S3-Anfragen von den Befehlen s3 und s3api AWS CLI an die Dual-Stack-Endpunkte für die angegebene Region weiterzuleiten. 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 der AWS CLI.

Dual-Stack-Endpunkte von der AWS-SDKs verwenden

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

AWS SDK for JavaBeispiel für einen -Dual-Stack-Endpunkt

Das folgende Beispiel veranschaulicht, wie Sie beim Erstellen eines Amazon-S3-Clients mit dem Dual-Stack-Endpunkte aktivieren AWS SDK for Java.

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

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

AWSBeispiel für einen -.NET SDK Dual-Stack-Endpunkt

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

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

Ein vollständiges .NET-Beispiel für die Auflistung von Objekten finden Sie unter Programmgesteuertes Auflisten von Objektschlüsseln.

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

Verwenden von Dual-Stack-Endpunkte von der REST-API

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