Aktivieren und Verwenden von S3 Transfer Acceleration - Amazon Simple Storage Service

Aktivieren und Verwenden von S3 Transfer Acceleration

Sie können Amazon S3 Transfer Acceleration verwenden, um Dateien schnell und sicher über große Entfernungen zwischen Ihrem Client und einem S3-Allzweck-Bucket zu übertragen. Sie können Transfer Acceleration über die S3-Konsole, die AWS Command Line Interface (AWS CLI), die API oder die AWS-SDKs aktivieren.

Dieser Abschnitt bietet Beispiele für die Aktivierung von Amazon S3 Transfer Acceleration und die Verwendung des beschleunigten Endpunkts für den aktivierten Bucket.

Weitere Informationen zu den Anforderungen für Transfer Acceleration finden Sie unter Konfigurieren schneller, sicherer Dateiübertragungen mit Amazon S3 Transfer Acceleration.

Anmerkung

Wenn Sie beschleunigte und nicht beschleunigte Upload-Geschwindigkeiten vergleichen möchten, öffnen Sie das Amazon S3 Transfer Acceleration Speed Comparison-Tool.

Das Speed-Comparison-Tool verwendet mehrteilige Uploads, um eine Datei von Ihrem Browser in verschiedene AWS-Regionen mit und ohne die Verwendung von Amazon S3 Transfer Acceleration zu übertragen. Sie können die Upload-Geschwindigkeit für direkte Uploads vergleichen und beschleunigte Uploads nach Region übertragen.

So aktivieren Sie die Übertragungsbeschleunigung für einen S3-Allzweck-Bucket
  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Allzweck-Buckets aus.

  3. Wählen Sie in der Liste Allzweck-Bucket den Namen des Buckets, für den Sie die Übertragungsbeschleunigung aktivieren möchten.

  4. Wählen Sie Properties (Eigenschaften).

  5. Wählen Sie unter Transfer acceleration (Beschleunigung übertragen) die Option Edit (Bearbeiten) aus.

  6. Wählen Sie Enable (Aktivieren) und wählen Sie Save changes (Änderungen speichern) aus.

Zugriff auf beschleunigte Datenübertragungen
  1. Nachdem Amazon S3 die Übertragungsbeschleunigung für Ihren Bucket aktiviert hat, sehen Sie sich den Tab Properties (Eigenschaften) für den Bucket an.

  2. Unter Transfer acceleration (Übertragungsbeschleunigung) wird unter Accelerated endpoint (beschleunigter Endpunkt) der Endpunkt der Übertragungsbeschleunigung für Ihren Bucket angezeigt. Verwenden Sie diesen Endpunkt, um auf beschleunigte Datenübertragungen von und zu Ihrem Bucket zuzugreifen.

    Wenn Sie die Transfer Acceleration aussetzen, funktioniert der beschleunigte Endpunkt nicht mehr.

Im Folgenden finden Sie Beispiele für AWS CLI-Befehle, die für Transfer Acceleration verwendet werden. Anweisungen zum Einrichten von AWS CLI finden Sie unter Entwickeln mit Amazon S3 unter Verwendung von AWS CLI in der Amazon-S3-API-Referenz.

Aktivieren der Transfer Acceleration auf einem Bucket

Verwenden Sie den AWS CLI put-bucket-accelerate-configuration Befehl, um Transfer Acceleration für einen Bucket zu aktivieren oder auszusetzen.

Im folgenden Beispiel wird „Status=Enabled“ festgelegt, um Transfer Acceleration für einen Bucket namens „amzn-s3-demo-bucket“ zu aktivieren. Um Transfer Acceleration auszusetzen, verwenden Sie Status=Suspended.

$ aws s3api put-bucket-accelerate-configuration --bucket amzn-s3-demo-bucket --accelerate-configuration Status=Enabled

Nutzen der Transfer Acceleration

Sie können alle Amazon S3-Anfragen von s3 und s3api AWS CLI-Befehlen an den beschleunigten Endpunkt weiterleiten: s3-accelerate.amazonaws.com. Dazu setzen Sie den Konfigurationswert use_accelerate_endpoint auf true in einem Profil in Ihrer AWS Config-Datei. Transfer Acceleration muss für Ihren Bucket aktiviert sein, um den beschleunigten Endpunkt nutzen zu können.

Alle Anforderungen werden mit der virtuellen Bucket-Adressierung gesendet: amzn-s3-demo-bucket.s3-accelerate.amazonaws.com. ListBuckets-, CreateBucket-, und DeleteBucket-Anfragen werden nicht an den beschleunigten Endpunkt gesendet, da der Endpunkt diese Vorgänge nicht unterstützt.

Weitere Informationen zu use_accelerate_endpoint finden Sie in der AWS CLI-S3-Konfiguration in der AWS CLI-Befehlsreferenz.

Das folgende Beispiel setzt use_accelerate_endpoint im Standardprofil auf true.

$ aws configure set default.s3.use_accelerate_endpoint true

Wenn Sie den beschleunigten Endpunkt für manche AWS CLI-Befehle, aber nicht für alle verwenden wollen, können Sie eine der beiden folgenden Methoden anwenden:

  • Verwenden Sie den beschleunigten Endpunkt für jeden s3- oder s3api-Befehl, indem Sie den Parameter --endpoint-url auf https://s3-accelerate.amazonaws.com setzen.

  • Richten Sie separate Profile in Ihrer AWS Config-Datei ein. Legen Sie beispielsweise ein Profil an, das use_accelerate_endpoint auf true setzt, und ein Profil, das use_accelerate_endpoint nicht setzt. Wenn Sie einen Befehl ausführen, geben Sie an, welches Profil Sie verwenden möchten, abhängig davon, ob Sie den beschleunigten Endpunkt verwenden möchten.

Hochladen eines Objekts in einen Bucket, der für Transfer Acceleration geeignet ist

Im folgenden Beispiel wird eine Datei in einen Bucket namens „amzn-s3-demo-bucket“ hochgeladen, für den Transfer Acceleration aktiviert wurde, indem das Standardprofil verwendet wird, das für die Verwendung des Beschleunigungsendpunkts konfiguriert wurde.

$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/key-name --region region

Das folgende Beispiel lädt eine Datei in einen Bucket hoch, der für Transfer Acceleration konfiguriert ist. Dazu verwendet es den Parameter --endpoint-url für die Angabe des beschleunigten Endpunkts.

$ aws configure set s3.addressing_style virtual $ aws s3 cp file.txt s3://amzn-s3-demo-bucket/key-name --region region --endpoint-url https://s3-accelerate.amazonaws.com

Im Folgenden finden Sie Beispiele für die Verwendung von Transfer Acceleration zum Hochladen von Objekten auf Amazon S3 mit dem AWS-SDK. Wenn Sie das AWS SDK verwenden, verwenden einige der unterstützten Sprachen (z. B. Java und .NET) ein Flag für eine Client-Konfiguration mit beschleunigtem Endpunkt, Sie müssen also den Endpunkt für Transfer Acceleration nicht explizit auf bucket-name.s3-accelerate.amazonaws.com setzen.

Java

Um einen beschleunigten Endpunkt für das Hochladen eines Objekts auf Amazon S3 mit dem AWS SDK für Java zu verwenden, haben Sie folgende Möglichkeiten:

  • Erstellen Sie einen S3Client, der für die Verwendung von Accelerate-Endpunkten konfiguriert ist. Für alle Buckets, auf die der Client zugreift, muss Transfer Acceleration aktiviert sein.

  • Aktiviern von Transfer Acceleration auf einem angegebenen Bucket. Dieser Schritt ist nur erforderlich, wenn für den von Ihnen angegebenen Bucket nicht bereits Transfer Acceleration aktiviert ist.

  • Überprüfen Sie, ob die Übertragungsbeschleunigung für den angegebenen Bucket aktiviert ist.

  • Hochladen eines neuen Objekts in den angegebenen Bucket unter Verwendung des Beschleunigungsendpunkts des Buckets.

Weitere Informationen zur Verwendung von Transfer Acceleration finden Sie unter Erste Schritte mit Amazon S3 Transfer Acceleration.

Das folgende Codebeispiel zeigt, wie Transfer Acceleration mit dem AWS SDK für Java konfiguriert wird.

import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.BucketAccelerateStatus; import software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationRequest; import software.amazon.awssdk.services.s3.model.PutBucketAccelerateConfigurationRequest; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.AccelerateConfiguration; import software.amazon.awssdk.services.s3.model.S3Exception; import software.amazon.awssdk.core.exception.SdkClientException; public class TransferAcceleration { public static void main(String[] args) { Region clientRegion = Region.US_EAST_1; String bucketName = "*** Provide bucket name ***"; String keyName = "*** Provide key name ***"; try { // Create an Amazon S3 client that is configured to use the accelerate endpoint. S3Client s3Client = S3Client.builder() .region(clientRegion) .credentialsProvider(ProfileCredentialsProvider.create()) .accelerate(true) .build(); // Enable Transfer Acceleration for the specified bucket. s3Client.putBucketAccelerateConfiguration( PutBucketAccelerateConfigurationRequest.builder() .bucket(bucketName) .accelerateConfiguration(AccelerateConfiguration.builder() .status(BucketAccelerateStatus.ENABLED) .build()) .build()); // Verify that transfer acceleration is enabled for the bucket. String accelerateStatus = s3Client.getBucketAccelerateConfiguration( GetBucketAccelerateConfigurationRequest.builder() .bucket(bucketName) .build()) .status().toString(); System.out.println("Bucket accelerate status: " + accelerateStatus); // Upload a new object using the accelerate endpoint. s3Client.putObject(PutObjectRequest.builder() .bucket(bucketName) .key(keyName) .build(), RequestBody.fromString("Test object for transfer acceleration")); System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration."); } catch (S3Exception 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(); } } }
.NET

Das folgende Beispiel zeigt, wie AWS SDK für .NET verwendet wird, um Transfer Acceleration für einen Bucket zu aktivieren. Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter Getting Started with the AWS SDK für .NET (Erste Schritte mit dem NET) im AWS SDK für .NET-Entwicklerhandbuch.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class TransferAccelerationTest { 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 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); EnableAccelerationAsync().Wait(); } static async Task EnableAccelerationAsync() { try { var putRequest = new PutBucketAccelerateConfigurationRequest { BucketName = bucketName, AccelerateConfiguration = new AccelerateConfiguration { Status = BucketAccelerateStatus.Enabled } }; await s3Client.PutBucketAccelerateConfigurationAsync(putRequest); var getRequest = new GetBucketAccelerateConfigurationRequest { BucketName = bucketName }; var response = await s3Client.GetBucketAccelerateConfigurationAsync(getRequest); Console.WriteLine("Acceleration state = '{0}' ", response.Status); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine( "Error occurred. Message:'{0}' when setting transfer acceleration", amazonS3Exception.Message); } } } }

Wenn Sie ein Objekt in einen Bucket hochladen, für den Transfer Acceleration aktiviert ist, verwenden Sie für die Angabe des beschleunigten Endpunkts den Zeitpunkt, an dem ein Client erstellt wurde.

var client = new AmazonS3Client(new AmazonS3Config { RegionEndpoint = TestRegionEndpoint, UseAccelerateEndpoint = true }
JavaScript

Ein Beispiel für die Aktivierung von Transfer Acceleration mithilfe von AWS SDK für JavaScript finden Sie unter PutBucketAccelerateConfiguration-Befehl in der AWS SDK für JavaScript-API-Referenz.

Python (Boto)

Ein Beispiel für die Aktivierung von Transfer Acceleration mit dem SDK für Python finden Sie unter put_bucket_accelerate_configuration in der AWS SDK für Python (Boto3) API Reference.

Other

Weitere Informationen zur Verwendung anderer AWS-SDKs finden Sie unter Sample Code and Libraries (Beispiel-Code und Bibliotheken).

Verwenden Sie die REST-API-Operation PutBucketAccelerateConfiguration, um die beschleunigte Konfiguration für einen vorhandenen Bucket zu aktivieren.

Weitere Informationen finden Sie unter PutBucketAccelerateConfiguration in der API-Referenz zu Amazon Simple Storage Service.