

# Habilitar e usar o S3 Transfer Acceleration
<a name="transfer-acceleration-examples"></a>

É possível usar a Aceleração de Transferências do Amazon S3 para transferir arquivos com rapidez e segurança por longas distâncias entre o cliente e um bucket de uso geral do S3. Você pode habilitar a Aceleração de Transferências usando o console do S3, a AWS Command Line Interface (AWS CLI), a API ou os AWS SDKs.

Esta seção fornece exemplos de como ativar o Amazon S3 Transfer Acceleration em um bucket e usar o endpoint de aceleração para o bucket ativado. 

Para obter mais informações sobre os requisitos do Transfer Acceleration, consulte [Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer Acceleration](transfer-acceleration.md).

## Usar o console do S3
<a name="enable-transfer-acceleration"></a>

**nota**  
Se você quiser comparar velocidades de upload aceleradas e não aceleradas, abra a [ ferramenta Comparação de velocidade do Amazon S3 Transfer Acceleration](https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html).  
A ferramenta de Comparação de velocidade usa o carregamento fracionado para transferir um arquivo do seu navegador para várias Regiões da AWS com e sem o uso do Amazon S3 Transfer Acceleration. É possível comparar a velocidade de upload para uploads diretos e uploads de transferência acelerada por região. 

**Como habilitar a aceleração de transferência para um bucket de uso geral do S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista **Buckets de uso geral**, escolha o nome do bucket no qual você deseja habilitar a aceleração de transferência.

1. Escolha **Properties (Propriedades)**.

1. Em **Transfer acceleration (Aceleração de transferência)**, escolha **Edit (Editar)**.

1. Escolha **Enable (Habilitar)** e **Save changes (Salvar alterações)**.

**Para acessar transferências de dados aceleradas**

1. Depois que o Amazon S3 habilitar a aceleração de transferência para seu bucket, visualize a guia **Properties (Propriedades)** do bucket.

1. Em **Transfer acceleration (Aceleração de transferência)**, o **Accelerated endpoint (Endpoint acelerado)** exibe o endpoint de aceleração de transferência para o bucket. Use esse endpoint para acessar transferências de dados aceleradas do bucket e para ele. 

   Se você suspender a Transfer Acceleration, o endpoint de aceleração não funcionará mais.

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

Veja a seguir exemplos de comandos da AWS CLI usados para o Transfer Acceleration. Consulte instruções sobre como configurar a AWS CLI em [Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) na *Referência de API do Amazon S3*.

### Habilitar o Transfer Acceleration em um bucket
<a name="transfer-acceleration-examples-aws-cli-1"></a>

Use o 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) da AWS CLI para habilitar ou suspender a Aceleração de Transferências em um bucket. 

O exemplo a seguir define `Status=Enabled` para habilitar a Aceleração de Transferências em um bucket chamado `amzn-s3-demo-bucket`. Para suspender a Aceleração de Transferências, use `Status=Suspended`.

**Example**  

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

### Habilitar o Transfer Acceleration
<a name="transfer-acceleration-examples-aws-cli-2"></a>

É possível direcionar todas as solicitações do Amazon S3 feitas pelos comandos `s3` e `s3api` da AWS CLI ao endpoint de aceleração: `s3-accelerate.amazonaws.com`. Para fazer isso, defina o valor de configuração de `use_accelerate_endpoint` como `true` em um perfil no arquivo do AWS Config. O Transfer Acceleration deve ser ativado em seu bucket para usar o endpoint de aceleração. 

Todas as solicitações são enviadas usando o estilo virtual de endereçamento de bucket: `amzn-s3-demo-bucket.s3-accelerate.amazonaws.com`. Nenhuma solicitação `ListBuckets`, `CreateBucket` e `DeleteBucket` será enviada ao endpoint de aceleração porque esse endpoint não é compatível com essas operações. 

Para obter mais informações sobre `use_accelerate_endpoint`, consulte [Configuração do S3 com a AWS CLI](https://docs.aws.amazon.com/cli/latest/topic/s3-config.html) na *Referência de comandos da AWS CLI*.

O exemplo a seguir define `use_accelerate_endpoint` como `true` no perfil padrão.

**Example**  

```
$ aws configure set default.s3.use_accelerate_endpoint true
```

Se você quiser usar o endpoint de aceleração para alguns comandos da AWS CLI, mas não para outros, use qualquer um destes dois métodos: 
+ Use o endpoint de aceleração para qualquer comando `s3` ou `s3api` definindo o parâmetro `--endpoint-url` como `https://s3-accelerate.amazonaws.com`.
+ Configure perfis separados no arquivo do AWS Config. Por exemplo, crie um perfil que defina `use_accelerate_endpoint` como `true` e um perfil que não defina `use_accelerate_endpoint`. Ao executar um comando, especifique qual perfil deseja usar, caso queira ou não usar o endpoint de aceleração. 

### Fazer upload de um objeto em um bucket habilitado para o Transfer Acceleration
<a name="transfer-acceleration-examples-aws-cli-3"></a>

O exemplo a seguir faz upload de um arquivo em um bucket chamado `amzn-s3-demo-bucket` que foi habilitado para a Aceleração de Transferências usando o perfil padrão configurado para usar o endpoint de aceleração.

**Example**  

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

O exemplo a seguir faz upload de um arquivo em um bucket habilitado para o Transfer Acceleration usando o parâmetro `--endpoint-url` para especificar o endpoint de aceleração.

**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 da SDKs AWS
<a name="transfer-acceleration-examples-sdk"></a>

Veja a seguir exemplos de uso do Transfer Acceleration para fazer upload de objetos para o Amazon S3 usando o AWS SDK. Algumas linguagens compatíveis com o SDK da AWS (por exemplo, Java e .NET) usam uma sinalização de configuração de cliente do endpoint de aceleração para que você não precise definir explicitamente o endpoint da Aceleração de Transferências como `bucket-name.s3-accelerate.amazonaws.com`.

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

Para usar um endpoint de aceleração para fazer upload de um objeto no Amazon S3 com o AWS SDK para Java, você pode:
+ Criar uma S3Client configurada para usar endpoints de aceleração. Todos os buckets acessados pelo cliente devem ter o Transfer Acceleration habilitado.
+ Habilitar a Aceleração de Transferências em um bucket especificado. Essa etapa é necessária somente se o bucket que você especificar não tiver o Transfer Acceleration habilitado ainda.
+ Verificar se a Aceleração da Transferências está habilitada para o bucket especificado.
+ Fazer upload de um novo objeto no bucket especificado usando o endpoint de aceleração do bucket.

Para obter mais informações sobre o Transfer Acceleration, consulte [Conceitos básicos do Amazon S3 Transfer Acceleration](transfer-acceleration-getting-started.md).

O exemplo de código a seguir mostra como configurar a Aceleração de Transferências o 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 ]

O exemplo a seguir mostra como usar o AWS SDK para .NET para habilitar o Transfer Acceleration em um bucket. Consulte informações sobre como configurar e executar exemplos de código, em [Getting Started with the AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do 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);
                }
        }
    }
}
```

Ao fazer upload de um objeto a um bucket com Transfer Acceleration habilitado, especifique usando o endpoint de aceleração no momento da criação de um cliente.



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

------
#### [ JavaScript ]

Para ver um exemplo sobre como habilitar a Aceleração de Transferências usando o AWS SDK para JavaScript, consulte o comando [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/) na *Referência de API do AWS SDK para JavaScript*.

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

Consulte um exemplo sobre como habilitar a Aceleração de Transferências usando o SDK para Python em [put\$1bucket\$1accelerate\$1configuration](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_accelerate_configuration) na *Referência de API do AWS SDK para Python (Boto3)*.

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

Para obter informações sobre como usar outros AWS SDKs, consulte [Código de exemplo e bibliotecas](https://aws.amazon.com/code/). 

------

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

Use a operação `PutBucketAccelerateConfiguration` da API REST para acelerar a configuração em um bucket existente. 

Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html) na *Referência da API do Amazon Simple Storage Service*.