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

Abilitazione e utilizzo di S3 Transfer Acceleration

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

In questa sezione vengono forniti alcuni esempi di come abilitare Amazon S3 Transfer Acceleration in un bucket e utilizzare l'endpoint di accelerazione per il bucket abilitato.

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

Nota

Se desideri confrontare le velocità di caricamento accelerate e non accelerate, apri lo strumento Speed Comparison di Amazon S3 Transfer Acceleration.

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.

Come abilitare Accelerazione del trasferimento per un bucket per uso generico S3
  1. Accedi alla Console di gestione AWS e apri la console Amazon S3 all’indirizzo https://console.aws.amazon.com/s3/.

  2. Nel riquadro di navigazione sinistro, scegli Bucket per uso generico.

  3. Nell’elenco Bucket per uso generico, scegli il nome del bucket per il quale desideri abilitare Accelerazione del trasferimento.

  4. Scegliere Properties (Proprietà).

  5. In Transfer acceleration (Accelerazione trasferimento), scegliere Edit (Modifica).

  6. Scegliere Enable (Abilita) e quindi Save changes (Salva modifiche).

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

  2. In Transfer acceleration, Endpoint accelerated (Accelerated endpoint) visualizza l'endpoint Transfer acceleration 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 Guida di riferimento delle API di Amazon S3.

Attivazione di Transfer Acceleration su un bucket

Utilizza il comando AWS CLI put-bucket-accelerate-configuration per abilitare o sospendere Accelerazione del trasferimento in un bucket.

L’esempio seguente imposta Status=Enabled per abilitare Accelerazione del trasferimento in un bucket denominato amzn-s3-demo-bucket. Utilizza Status=Suspended per sospendere Accelerazione del trasferimento.

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

Utilizzo di Transfer Acceleration

È possibile 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, occorre impostare il valore di configurazione use_accelerate_endpoint su true in un profilo nel 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: amzn-s3-demo-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.

Nell'esempio che segue, use_accelerate_endpoint viene impostato su true nel profilo di default.

$ aws configure set default.s3.use_accelerate_endpoint true

Se si desidera utilizzare l'endpoint di accelerazione solo per determinati comandi di AWS CLI, escludendone altri, è possibile utilizzare uno dei seguenti metodi:

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

  • Configurare profili separati nel file AWS Config. Ad esempio, si può creare 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

L’esempio seguente carica un file in un bucket denominato amzn-s3-demo-bucket che è stato abilitato per Accelerazione del trasferimento mediante il profilo predefinito configurato per l’utilizzo dell’endpoint di accelerazione.

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

Nell'esempio che segue viene caricato un file in un bucket abilitato per Transfer Acceleration mediante il parametro --endpoint-url per specificare l'endpoint di accelerazione.

$ 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

Di seguito sono riportati esempi di utilizzo di Transfer Acceleration per caricare oggetti su Amazon S3 utilizzando l'SDK AWS. Alcuni dei linguaggi supportati da AWS SDK (ad esempio Java e .NET) utilizzano un flag di configurazione del client per l’endpoint di accelerazione, pertanto non è necessario impostare l’endpoint per Accelerazione del trasferimento in modo esplicito su bucket-name.s3-accelerate.amazonaws.com.

Java

Per utilizzare un endpoint di accelerazione per caricare un oggetto su Amazon S3 con AWS SDK per Java è possibile:

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

  • Abilitare Accelerazione del trasferimento in un bucket specificato. Questa fase è necessaria solo se sul bucket specificato non è ancora abilitato Transfer Acceleration.

  • Verificare se Accelerazione del trasferimento è abilitato per il bucket specificato.

  • Caricare un nuovo oggetto nel bucket specificato utilizzando l’endpoint di accelerazione del bucket.

Per ulteriori informazioni sull'uso di Transfer Acceleration, consulta Nozioni di base su Amazon S3 Transfer Acceleration.

L’esempio di codice seguente mostra come configurare Accelerazione del trasferimento con AWS SDK per Java.

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

Nell'esempio seguente viene mostrato come utilizzare AWS SDK per .NET per abilitare Transfer Acceleration su un bucket. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta Nozioni di base su AWS SDK per .NET nella Guida per gli sviluppatori 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); } } } }

Durante il caricamento di un oggetto in un bucket con Transfer Acceleration abilitato, specifica l'utilizzo dell'endpoint di accelerazione durante la creazione di un client.

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

Per un esempio di abilitazione di Accelerazione del trasferimento utilizzando AWS SDK per JavaScript, consulta Comando PutBucketAccelerateConfiguration nella Guida di riferimento delle API di AWS SDK per JavaScript.

Python (Boto)

Per un esempio di abilitazione di Accelerazione del trasferimento utilizzando SDK per Python, consulta put_bucket_accelerate_configuration nella Guida di riferimento delle API AWS SDK per Python (Boto3).

Other

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

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

Per ulteriori informazioni, consulta PutBucketAccelerateConfiguration in Amazon Simple Storage Service API Reference (Guida di riferimento per l'API di Amazon Simple Storage Service).