Habilitación y uso de S3 Transfer Acceleration - Amazon Simple Storage Service

Habilitación y uso de S3 Transfer Acceleration

Puede utilizar Amazon S3 Transfer Acceleration para transferir de forma rápida y segura archivos a largas distancias entre el cliente y un bucket de S3. Puede habilitar Transfer Acceleration a través de la consola de S3, AWS Command Line Interface (AWS CLI) o los AWS SDK.

En esta sección se facilitan ejemplos de cómo habilitar Amazon S3 Transfer Acceleration en un bucket y usar el punto de conexión de aceleración para el bucket activado.

Para obtener más información acerca de los requisitos de Transfer Acceleration, consulte Configuración de transferencias de archivos rápidas y seguras con Amazon S3 Transfer Acceleration.

nota

Si desea comparar velocidades de subida aceleradas y no aceleradas, abra la herramienta de comparación de velocidad de Amazon S3 Transfer Acceleration.

La herramienta de comparación de velocidad utiliza cargas multiparte para transferir un archivo desde su navegador hacia diversas Regiones de AWS con Amazon S3 Transfer Acceleration y sin esta característica. Puede comparar la velocidad de subida para las subidas directas y transferir las subidas aceleradas por región.

Para habilitar Transfer Acceleration para un bucket de S3
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets, seleccione el nombre del bucket para el que desea habilitar la aceleración de transferencia.

  3. Seleccione Propiedades.

  4. En Transfer acceleration (Aceleración de transferencia), elija Edit (Editar).

  5. Elija Enable (Habilitar) y Save Changes (Guardar cambios).

Para acceder a transferencias aceleradas de datos
  1. Una vez que Amazon S3 habilite la aceleración de transferencia para el bucket, consulte la pestaña Properties (Propiedades) del bucket.

  2. En Transfer acceleration (Aceleración de transferencia), Accelerated endpoint (Punto de conexión acelerado) muestra el punto de conexión de aceleración de transferencia del bucket. Utilice este punto de conexión para acceder a transferencias de datos aceleradas desde y hacia el bucket.

    Si suspende Transfer Acceleration, el punto de conexión de aceleración deja de funcionar.

A continuación, se presentan ejemplos de comandos de la AWS CLI utilizados para Transfer Acceleration. Para obtener instrucciones acerca de cómo configurar la AWS CLI, consulte Desarrollo con Amazon S3 mediante la AWS CLI.

Habilitación de Transfer Acceleration en un bucket

Puede utilizar el comando put-bucket-accelerate-configuration de la AWS CLI para habilitar o suspender Transfer Acceleration en un bucket.

En el siguiente ejemplo se usa Status=Enabled para habilitar Transfer Acceleration en un bucket. Se utiliza Status=Suspended para suspender Transfer Acceleration.

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

Uso de Transfer Acceleration

Puede dirigir todas las solicitudes de Amazon S3 realizadas por los comandos de la AWS CLI s3 y s3api al punto de conexión de aceleración: s3-accelerate.amazonaws.com. Para ello, establezca el valor de configuración use_accelerate_endpoint como true en un perfil en el archivo de AWS Config. Transfer Acceleration debe estar activado en su bucket para usar el punto de conexión acelerado.

Todas las solicitudes se envían mediante el direccionamiento al bucket de estilo virtual: my-bucket.s3-accelerate.amazonaws.com. Las solicitudes ListBuckets, CreateBucket y DeleteBucket no se envían al punto de conexión de aceleración, ya que este no admite estas operaciones.

Para obtener más información acerca de use_accelerate_endpoint, consulte Configuración de S3 con la AWS CLI en la Referencia de comandos de la AWS CLI.

En el siguiente ejemplo se establece use_accelerate_endpoint como true en el perfil predeterminado.

$ aws configure set default.s3.use_accelerate_endpoint true

Si quiere usar el punto de conexión acelerado para algunos comandos de la AWS CLI pero no otros, puede usar uno de los dos siguientes métodos:

  • Use el punto de conexión acelerado estableciendo el parámetro --endpoint-url como https://s3-accelerate.amazonaws.com para cualquier comando s3 o s3api.

  • Configure perfiles separados en su archivo de AWS Config. Por ejemplo, puede crear un perfil que configure use_accelerate_endpoint como true y un perfil que no configure use_accelerate_endpoint. Al ejecutar un comando, especifique qué perfil quiere usar en función de si quiere usar el punto de conexión acelerado o no.

Cargar un objeto en un bucket habilitado para Transfer Acceleration

En el siguiente ejemplo se carga un archivo en un bucket activado para Transfer Acceleration usando el perfil predeterminado que se ha configurado para usar el punto de conexión acelerado.

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

En el siguiente ejemplo se carga un archivo en un bucket activado para Transfer Acceleration usando el parámetro --endpoint-url para especificar el punto de conexión acelerado.

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

A continuación se presentan ejemplos del uso de Transfer Acceleration para cargar objetos en Amazon S3 con el AWS SDK. Algunos de los lenguajes compatibles con los AWS SDK (por ejemplo, Java y .NET) utilizan una marca de configuración de cliente de punto de conexión de aceleración, de modo que no tendrá que establecer de forma explícita el punto de conexión de Transfer Acceleration para bucketname.s3-accelerate.amazonaws.com.

Java

En el siguiente ejemplo se demuestra cómo usar un punto de conexión acelerado para cargar un objeto en Amazon S3. En el ejemplo se realiza lo siguiente:

  • Crea un AmazonS3Client que se configura para usar puntos de conexión de aceleración. Todos los buckets a los que accede el cliente deben tener Transfer Acceleration habilitado.

  • Habilita Transfer Acceleration en un bucket específico. Este paso solo es necesario si el bucket que especifica aún no tiene Transfer Acceleration habilitado.

  • Verifica que la aceleración de transferencia está habilitada para el bucket especificado.

  • Carga un nuevo objeto en el bucket especificado utilizando el punto de conexión de aceleración del bucket.

Para obtener más información acerca del uso de Transfer Acceleration, consulte Introducción a Amazon S3 Transfer Acceleration. Para obtener instrucciones sobre cómo crear y probar una muestra funcional, consulte Introducción en la Guía del desarrollador de 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

En el siguiente ejemplo, se muestra cómo usar AWS SDK for .NET con el fin de habilitar Transfer Acceleration en un bucket. Para obtener información acerca de cómo configurar y ejecutar ejemplos de código, consulte Introducción al SDK de AWS para .NET en la Guía para desarrolladores del SDK de AWS para .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); } } } }

Al cargar un objeto en un bucket que tenga Transfer Acceleration habilitado, especifique el uso del punto de conexión de aceleración en el momento de crear un cliente.

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

Para ver un ejemplo de cómo habilitar Transfer Acceleration con el AWS SDK para JavaScript, consulte Llamada a la operación putBucketAccelerateConfiguration en la Referencia de la API de AWS SDK para JavaScript.

Python (Boto)

Para obtener un ejemplo de cómo habilitar Transfer Acceleration con el SDK for Python, consulte put_bucket_accelerate_configuration en la Referencia de la API de AWS SDK for Python (Boto3).

Other

Para obtener información acerca del uso de otros AWS SDK, consulte Código de muestra y bibliotecas.

Utilice la operación PutBucketAccelerateConfiguration de la API de REST para habilitar la configuración acelerada en un bucket existente.

Para obtener más información, consulte PutBucketAccelerateConfiguration en la Referencia de la API de Amazon Simple Storage Service.