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

Para habilitar o Transfer Acceleration para um bucket 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. Na lista Buckets, escolha o nome do bucket no qual você deseja habilitar a aceleração de transferência.

  3. Escolha Properties (Propriedades).

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

  5. 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 o Transfer Acceleration em um bucket.

O exemplo a seguir define Status=Enabled para ativar o Transfer Acceleration em um bucket. Use Status=Suspended para suspender o Transfer Acceleration.

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

Habilitar o Transfer Acceleration

Você pode 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 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: my-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 em seu arquivo 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 habilitado para o Transfer Acceleration usando o perfil padrão que foi configurado para usar o endpoint de aceleração.

$ aws s3 cp file.txt s3://bucketname/keyname --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://bucketname/keyname --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 AWS SDK (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 do Transfer Acceleration como bucketname.s3-accelerate.amazonaws.com.

Java

O exemplo a seguir mostra como usar um endpoint de aceleração para fazer upload de um objeto no Amazon S3. O exemplo faz o seguinte:

  • Cria um AmazonS3Client que é configurado para usar endpoints de aceleração. Todos os buckets acessados pelo cliente devem ter o Transfer Acceleration habilitado.

  • Habilita o Transfer Acceleration em um bucket especificado. Essa etapa é necessária somente se o bucket que você especificar não tiver o Transfer Acceleration habilitado ainda.

  • Verifica se a aceleração da transferência está habilitada para o bucket especificado.

  • Faz upload de um novo objeto para o 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. Consulte instruções sobre como criar e testar uma amostra funcional em Getting Started no Guia do desenvolvedor do 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

O exemplo a seguir mostra como usar o AWS SDK for .NET para habilitar o Transfer Acceleration em um bucket. Para obter informações sobre como configurar e executar exemplos de código, consulte Conceitos básicos do AWS SDK for .NET no Guia do desenvolvedor do AWS SDK for .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 de ativação do Transfer Acceleration usando o AWS SDK para JavaScript, consulte Chamada da operação putBucketAccelerateConfiguration na Referência de API do AWS SDK para JavaScript.

Python (Boto)

Para obter um exemplo de ativação do Transfer Acceleration usando o SDK para Python, consulte put_bucket_accelerate_configuration na Referência da API do AWS SDK for 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.