Abilitazione e utilizzo di S3 Transfer Acceleration - Amazon Simple Storage Service

Abilitazione e utilizzo di S3 Transfer Acceleration

È possibile utilizzare Amazon S3 Transfer Acceleration per trasferire file in modo rapido e sicuro su lunghe distanze tra il client e un bucket S3. È possibile abilitare l'accelerazione del trasferimento utilizzando la console S3, AWS Command Line Interface (AWS CLI), l'API o gli SDK AWS.

Questa sezione fornisce esempi su come abilitare Amazon S3 Transfer Acceleration su un bucket e utilizza l'endpoint di accelerazione per il bucket abilitato.

Per ulteriori informazioni sui requisiti di Transfer Acceleration, consulta Configurazione di trasferimenti di file veloci e sicuri con Amazon S3 Transfer Acceleration.

Nota

Se desideri confrontare le velocità di upload accelerate e non accelerate, apri lo Strumento di confronto delle velocità di trasferimento di Amazon S3.

Lo strumento Speed Comparison utilizza il caricamento in più parti per trasferire un file dal browser in uso a varie Regioni AWS con e senza l'utilizzo di Amazon S3 Transfer Acceleration. Puoi confrontare la velocità di caricamento per i caricamenti diretti e trasferire i caricamenti accelerati per Regione.

Per abilitare Transfer Acceleration per un bucket S3
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, scegli il nome del bucket di cui desideri abilitare Transfer Acceleration.

  3. Scegli Proprietà.

  4. In Transfer Acceleration, scegli Modifica.

  5. Scegli Abilita e poi Salva modifiche.

Per accedere a trasferimenti di dati accelerati
  1. Dopo che Amazon S3 ha attivato Transfer Acceleration per il bucket, visualizza la scheda Proprietà del bucket.

  2. In Transfer Acceleration, Endpoint accelerato visualizza l'endpoint di accelerazione del trasferimento per il bucket. Utilizza questo endpoint per accedere ai trasferimenti accelerati di dati da e verso il bucket.

    Sospendendo Transfer Acceleration, l'endpoint dell'accelerazione non funziona più.

Di seguito sono riportati alcuni esempi di comandi AWS CLI utilizzati per Transfer Acceleration. Per istruzioni sulla configurazione di AWS CLI, consulta Sviluppo con Amazon S3 utilizzando AWS CLI nella documentazione di riferimento delle API Amazon S3.

Abilitazione di Transfer Acceleration su un bucket

Utilizza il comando della AWS CLI put-bucket-accelerate-configuration per abilitare o sospendere Transfer Acceleration su un bucket.

L'esempio seguente imposta Status=Enabled per abilitare Transfer Acceleration su un bucket. Per sospendere Transfer Acceleration si utilizza Status=Suspended.

$ aws s3api put-bucket-accelerate-configuration --bucket bucketname --accelerate-configuration Status=Enabled

Utilizzo di Transfer Acceleration

Puoi indirizzare tutte le richieste Amazon S3 effettuate dai comandi AWS CLI s3 e s3api all'endpoint di accelerazione: s3-accelerate.amazonaws.com. A tale scopo, imposta il valore di configurazione use_accelerate_endpoint su true in un profilo del file AWS Config. Per utilizzare l'endpoint di accelerazione, è necessario che Transfer Acceleration sia abilitato nel bucket.

Tutte le richieste vengono inviate tramite il modello di indirizzamento virtuale del bucket: my-bucket.s3-accelerate.amazonaws.com. Qualsiasi richiesta ListBuckets, CreateBucket e DeleteBucket non verrà inviata all'endpoint di accelerazione in quanto tale endpoint non supporta queste operazioni.

Per ulteriori informazioni su use_accelerate_endpoint, consulta Configurazione di AWS CLI S3 in Guida di riferimento dei comandi AWS CLI.

L'esempio seguente imposta use_accelerate_endpoint su true nel profilo predefinito.

$ aws configure set default.s3.use_accelerate_endpoint true

Se si desidera utilizzare l'endpoint di accelerazione per alcuni comandi di AWS CLI ma non per altri, è possibile utilizzare uno dei due metodi seguenti:

  • Utilizza l'endpoint di accelerazione per qualsiasi comando s3 o s3api impostando il parametro --endpoint-url su https://s3-accelerate.amazonaws.com.

  • Imposta profili separati nel file AWS config. Ad esempio, crea un profilo che imposta use_accelerate_endpoint su true e un profilo che non imposta use_accelerate_endpoint. Quando si esegue un comando, specifica il profilo da usare, a seconda dell'intenzione di utilizzare o meno l'endpoint di accelerazione.

Caricamento di un oggetto in un bucket abilitato per Transfer Acceleration

Nell'esempio che segue viene caricato un file in un bucket abilitato per Transfer Acceleration mediante il profilo predefinito configurato per l'utilizzo dell'endpoint di accelerazione.

$ aws s3 cp file.txt s3://bucketname/keyname --region region

L'esempio seguente carica un file in un bucket abilitato a Transfer Acceleration usando il parametro --endpoint-url per specificare l'endpoint di accelerazione.

$ aws configure set s3.addressing_style virtual $ aws s3 cp file.txt s3://bucketname/keyname --region region --endpoint-url https://s3-accelerate.amazonaws.com

Di seguito sono riportati alcuni esempi di utilizzo di Transfer Acceleration per caricare oggetti su Amazon S3 utilizzando l'SDK AWS. Alcuni dei linguaggi supportati dall'SDK AWS (ad esempio, Java e .NET) utilizzano un flag di configurazione dell'endpoint di accelerazione del client, per cui non è necessario impostare esplicitamente l'endpoint per Transfer Acceleration su bucketname.s3-accelerate.amazonaws.com.

Java

Nell'esempio seguente viene mostrato come utilizzare un endpoint di accelerazione per il caricamento di un oggetto in Amazon S3. Inoltre, vengono effettuate le seguenti operazioni:

  • Crea un AmazonS3Client configurato per utilizzare endpoint di accelerazione. Tutti i bucket cui accede il client devono avere Transfer Acceleration abilitato.

  • Abilita Transfer Acceleration in un bucket specificato. Questa fase è necessaria solo se sul bucket specificato non è ancora abilitato Transfer Acceleration.

  • Viene verificato se Transfer Acceleration è abilitato per il bucket specificato.

  • Viene caricato un nuovo oggetto nel bucket specificato utilizzando l'endpoint di accelerazione del bucket.

Per ulteriori informazioni sull'utilizzo di Transfer Acceleration, consulta Nozioni di base su Amazon S3 Transfer Acceleration. Per istruzioni su come creare e testare un campione funzionante, consulta Nozioni di base nella Guida per gli sviluppatori di 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; import com.amazonaws.services.s3.model.BucketAccelerateConfiguration; import com.amazonaws.services.s3.model.BucketAccelerateStatus; import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest; public class TransferAcceleration { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; try { // Create an Amazon S3 client that is configured to use the accelerate endpoint. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .enableAccelerateMode() .build(); // Enable Transfer Acceleration for the specified bucket. s3Client.setBucketAccelerateConfiguration( new SetBucketAccelerateConfigurationRequest(bucketName, new BucketAccelerateConfiguration( BucketAccelerateStatus.Enabled))); // Verify that transfer acceleration is enabled for the bucket. String accelerateStatus = s3Client.getBucketAccelerateConfiguration( new GetBucketAccelerateConfigurationRequest(bucketName)) .getStatus(); System.out.println("Bucket accelerate status: " + accelerateStatus); // Upload a new object using the accelerate endpoint. s3Client.putObject(bucketName, keyName, "Test object for transfer acceleration"); System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration."); } 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(); } } }
.NET

L'esempio seguente mostra come usare AWS SDK for .NET per abilitare Transfer Acceleration su un bucket. Per informazioni sull'impostazione e l'esecuzione degli esempi di codice, consulta Guida all'avvio con AWS SDK per .NET nella Guida allo sviluppo di AWS SDK per .NET.

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

Quando si carica un oggetto su un bucket che ha abilitato Transfer Acceleration, si specifica l'uso dell'endpoint di accelerazione al momento della creazione di un client.

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

Per un esempio di abilitazione di Transfer Acceleration tramite l'SDK AWS per JavaScript, consulta Chiamata all'operazione putBucketAccelerateConfiguration in Riferimento API AWS SDK per JavaScript.

Python (Boto)

Per un esempio di attivazione di Transfer Acceleration utilizzando l'SDK per Python, consulta put_bucket_accelerate_configuration in Riferimento API AWS SDK per Python (Boto3).

Other

Per informazioni sull'uso di altri SDK AWS consulta Codice di esempio e librerie.

Utilizza l'operazione REST API PutBucketAccelerateConfiguration per abilitare la configurazione accelerata su un bucket esistente.

Per ulteriori informazioni, consulta l'argomento relativo a PutBucketLifecycleConfiguration nella Documentazione di riferimento dell'API di Amazon Simple Storage Service.