

# Habilitación y uso de Aceleración de transferencias de S3
<a name="transfer-acceleration-examples"></a>

Puede utilizar Aceleración de transferencias de Amazon S3 para transferir de forma rápida y segura archivos a largas distancias entre el cliente y un bucket de uso general de S3. Puede habilitar Aceleración de transferencias 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 Aceleración de transferencias de Amazon S3 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 Aceleración de transferencias, consulte [Configuración de transferencias de archivos rápidas y seguras con Aceleración de transferencias de Amazon S3](transfer-acceleration.md).

## Uso de la consola de S3
<a name="enable-transfer-acceleration"></a>

**nota**  
Si desea comparar velocidades de subida aceleradas y no aceleradas, abra la [herramienta de comparación de velocidad de Aceleración de transferencias de Amazon S3](https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html).  
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. 

**Habilitación de Aceleración de transferencias para un bucket de uso general de S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

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

1. Seleccione **Properties (Propiedades)**.

1. En **Aceleración de transferencias**, elija **Editar**.

1. Elija **Habilitar** y **Guardar cambios**.

**Para acceder a transferencias aceleradas de datos**

1. Una vez que Amazon S3 habilite Aceleración de transferencias para el bucket, consulte la pestaña **Propiedades** del bucket.

1. En **Aceleración de transferencias**, **Punto de conexión acelerado** muestra el punto de conexión de Aceleración de transferencias del bucket. Utilice este punto de conexión para acceder a transferencias de datos aceleradas desde y hacia el bucket. 

   Si suspende Aceleración de transferencias, el punto de conexión de aceleración deja de funcionar.

## Mediante AWS CLI
<a name="transfer-acceleration-examples-aws-cli"></a>

A continuación, se presentan ejemplos de comandos de la AWS CLI utilizados para Aceleración de transferencias. Para obtener instrucciones sobre la configuración de la AWS CLI, consulte [Desarrollo con Amazon S3 mediante la AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) en la *Referencia de la API de Amazon S3*.

### Habilitación de Aceleración de transferencias en un bucket
<a name="transfer-acceleration-examples-aws-cli-1"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-accelerate-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-accelerate-configuration.html) de la AWS CLI para habilitar o suspender Aceleración de transferencias en un bucket. 

En el siguiente ejemplo se configura `Status=Enabled` para habilitar Aceleración de transferencias en un bucket llamado `amzn-s3-demo-bucket`. Para suspender Aceleración de transferencias, utilice `Status=Suspended`.

**Example**  

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

### Uso de Aceleración de transferencias
<a name="transfer-acceleration-examples-aws-cli-2"></a>

Puede dirigir todas las solicitudes de Amazon S3 realizadas por los comandos `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` en `true` en un perfil del archivo de AWS Config. Aceleración de transferencias 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: `amzn-s3-demo-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](https://docs.aws.amazon.com/cli/latest/topic/s3-config.html) en la *Referencia de comandos de la AWS CLI*.

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

**Example**  

```
$ 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 de aceleración de cualquier comando `s3` o `s3api` estableciendo el parámetro `--endpoint-url` en `https://s3-accelerate.amazonaws.com`.
+ Configure perfiles separados en el 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. 

### Carga de un objeto en un bucket habilitado para Aceleración de transferencias
<a name="transfer-acceleration-examples-aws-cli-3"></a>

En el siguiente ejemplo se carga un archivo en un bucket llamado `amzn-s3-demo-bucket` que se ha habilitado para Aceleración de transferencias usando el perfil predeterminado que se ha configurado para usar el punto de conexión de aceleración.

**Example**  

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

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

**Example**  

```
$ 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
```

## Uso de la SDKs AWS
<a name="transfer-acceleration-examples-sdk"></a>

A continuación, se presentan ejemplos del uso de Transfer Acceleration para cargar objetos en Amazon S3 con el SDK de AWS. Algunos de los lenguajes compatibles con los SDK de AWS (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 Aceleración de transferencias en `bucket-name.s3-accelerate.amazonaws.com`.

------
#### [ Java ]

Para utilizar un punto de conexión acelerado para cargar un objeto en Amazon S3 con el AWS SDK para Java, puede hacer lo siguiente:
+ Cree un S3Client que se configura para usar puntos de conexión de aceleración. Todos los buckets a los que accede el cliente deben tener Aceleración de transferencias habilitado.
+ Habilite la aceleración de transferencias en un bucket específico. Este paso solo es necesario si el bucket que especifica aún no tiene Aceleración de transferencias habilitado.
+ Verifique que la aceleración de transferencias está habilitada para el bucket especificado.
+ Cargue un objeto nuevo en el bucket especificado con el punto de conexión de aceleración del bucket.

Para obtener más información acerca del uso de Aceleración de transferencias, consulte [Introducción a Aceleración de transferencias de Amazon S3](transfer-acceleration-getting-started.md).

En el ejemplo de código siguiente, se muestra cómo configurar la aceleración de transferencias con el AWS SDK para 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 ]

En el siguiente ejemplo, se muestra cómo usar AWS SDK para .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 a AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) en la *Guía para desarrolladores de AWS SDK para .NET*. 

**Example**  

```
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 Aceleración de transferencias 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 Aceleración de transferencias mediante AWS SDK para JavaScript, consulte [PutBucketAccelerateConfiguration command](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/) en la *Referencia de la API de AWS SDK para JavaScript*.

------
#### [ Python (Boto) ]

Para ver un ejemplo de cómo habilitar Aceleración de transferencias con el SDK para Python, consulte [put\$1bucket\$1accelerate\$1configuration](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_accelerate_configuration) en la *Referencia de la API de SDK para Python (Boto3) de AWS*.

------
#### [ Other ]

Para obtener información acerca del uso de otros SDK de AWS, consulte [Código de muestra y bibliotecas](https://aws.amazon.com/code/). 

------

## Uso de la API de REST
<a name="transfer-acceleration-examples-api"></a>

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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html) en la *Referencia de la API de Amazon Simple Storage Service*.