Habilitar e usar o S3 Transfer Acceleration - Amazon Simple Storage Service

Habilitar e usar o S3 Transfer Acceleration

É 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.

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.

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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

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

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

  4. Escolha Properties (Propriedades).

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

  6. 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.

  2. 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.

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 na Referência de API do Amazon S3.

Habilitar o Transfer Acceleration em um bucket

Use o comando put-bucket-accelerate-configuration 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.

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

Habilitar o Transfer Acceleration

É 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 na Referência de comandos da AWS CLI.

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

$ 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

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.

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

$ 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

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.

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 no Guia do desenvolvedor do AWS SDK 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); } } } }

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 PutBucketAccelerateConfiguration 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_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.

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

Para obter mais informações, consulte PutBucketAccelerateConfiguration na Referência da API do Amazon Simple Storage Service.