Trabalhar com o Amazon S3 - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Trabalhar com o Amazon S3

Esta seção fornece informações básicas para trabalhar com o Amazon S3 usando o AWS SDK for Java 2.x. Esta seção complementa os exemplos do Java v2 do Amazon S3 apresentados na seção Exemplos de código deste guia.

Clientes do S3 no AWS SDK for Java 2.x

O AWS SDK for Java 2.x fornece diferentes tipos de clientes do S3. A tabela a seguir mostra as diferenças e pode ajudar você a decidir o que é melhor para seus casos de uso.

Diferentes tipos de clientes do Amazon S3
Cliente do S3 Descrição breve Quando usar Limitação/desvantagem

Cliente do S3 baseado no AWS CRT

Interface: S3AsyncClient

Compilador: S3CrtAsyncClientBuilder

  • Fornece as mesmas operações assíncronas de API do cliente assíncrono do S3 baseado em Java, mas com maior desempenho.

  • Requer a dependência aws-crt.

  • Permite transferências paralelas automáticas (de várias partes).

Consulte Usar um cliente do S3 de alta performance: cliente do S3 baseado no AWS CRT.

  • A aplicação transfere objetos grandes (maiores de 8 MB) e você deseja maximizar o desempenho.

  • Você quer fazer upload de objetos com tamanho de conteúdo desconhecido.

  • Você quer um pool de conexões e um balanceamento de carga de DNS aprimorados, o que melhora o throughput e o desempenho.

  • Você quer maior confiabilidade de transferência no caso de uma falha na rede. As peças individuais com falha são testadas novamente sem reiniciar a transferência desde o início.

  • Permite menos configurações do que os clientes do S3 baseados em Java.

  • Requer uma dependência adicional.

Cliente assíncrono do S3 baseado em Java com várias partes habilitadas

Interface: S3AsyncClient

Compilador: S3AsyncClientBuilder

  • Fornece uma API assíncrona.

  • Permite transferências paralelas automáticas (de várias partes) quando você ativa várias partes no momento da criação.

Consulte Configurar o cliente assíncrono do S3 baseado em Java para usar transferências paralelas.

  • A aplicação transfere objetos grandes e você deseja melhorar o desempenho.

  • você quer fazer upload de objetos com tamanho de conteúdo desconhecido.

  • Você quer maior confiabilidade de transferência no caso de uma falha na rede. As peças individuais com falha são testadas novamente sem reiniciar a transferência desde o início.

  • Você precisa de opções de configuração que não estão disponíveis com o cliente do S3 baseado no AWS CRT.

Menos desempenho do que o cliente do S3 baseado no AWS CRT.

Cliente assíncrono do S3 baseado em Java sem várias partes habilitadas

Interface: S3AsyncClient

Compilador: S3AsyncClientBuilder

  • Fornece uma API assíncrona.

  • Você está transferindo objetos com menos de 8 MB.

  • Você quer uma API assíncrona.

Sem otimização do desempenho.

Cliente síncrono do S3 baseado em Java

Interface: S3Client

Compilador: S3ClientBuilder

  • Fornece uma API síncrona.

  • Você está transferindo objetos com menos de 8 MB.

  • Você quer uma API síncrona.

Sem otimização do desempenho.

nota

A partir da versão 2.18.x, o AWS SDK for Java 2.x usa endereçamento no estilo de host virtual ao incluir uma substituição de endpoint. Isso se aplica desde que o nome do bucket seja um rótulo DNS válido.

Chame o método forcePathStyle com true no seu construtor de clientes para forçar o cliente a usar o endereçamento no estilo de caminho para os buckets.

O exemplo a seguir mostra um cliente de serviço configurado com uma substituição de endpoint e usando o endereçamento no estilo de caminho.

S3Client client = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com")) .forcePathStyle(true) .build();