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á.
Use um cliente S3 de alto desempenho: cliente S3 AWS CRT baseado em
O cliente S3 AWS CRT baseado, construído com base no AWS Common Runtime (CRT), é um cliente assíncrono S3 alternativo. Ele transfere objetos de e para o Amazon Simple Storage Service (Amazon S3) com desempenho e confiabilidade aprimorados usando automaticamente o upload de várias partes e as buscas de intervalo de bytes do Amazon S3. API
O cliente S3 AWS CRT baseado melhora a confiabilidade da transferência no caso de uma falha na rede. A confiabilidade é aprimorada ao realizar novas tentativas de partes individuais com falha em uma transferência de arquivos sem reiniciar a transferência desde o início.
Além disso, o cliente S3 AWS CRT baseado oferece pool de conexões aprimorado e balanceamento de carga do Sistema de Nomes de Domínio (DNS), o que também melhora a taxa de transferência.
Você pode usar o cliente S3 AWS CRT baseado no lugar SDK do cliente assíncrono S3 padrão e aproveitar imediatamente sua taxa de transferência aprimorada.
AWS CRTcomponentes baseados no SDK
O cliente S3 AWS CRT baseado, descrito neste tópico, e o HTTPcliente AWS CRT baseado são componentes diferentes noSDK.
O cliente S3 AWS CRT baseado é uma implementação da AsyncClient interface S3S3AsyncClient
baseada em Java e oferece vários benefícios.
O HTTPcliente AWS CRT baseado é uma implementação da SdkAsyncHttpClientSdkAsyncHttpClient
do Netty e oferece várias vantagens.
Embora ambos os componentes usem bibliotecas do AWS Common Runtime, o cliente S3 AWS CRT baseado usa a biblioteca aws-c-s 3
Adicione dependências para usar o cliente AWS CRT S3 baseado
Para usar o cliente S3 AWS CRT baseado, adicione as duas dependências a seguir ao seu arquivo de projeto Maven. O exemplo mostra as versões mínimas a serem usadas. Pesquisar no repositório central do Maven as versões mais recentes dos artefatos s3
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>
2.27.21
</version> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.30.11
</version> </dependency>
Crie uma instância do cliente S3 AWS CRT baseado
Crie uma instância do cliente S3 AWS CRT baseado com as configurações padrão, conforme mostrado no trecho de código a seguir.
S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();
Para configurar o cliente, use o construtor de AWS CRT clientes. Você pode alternar do cliente assíncrono S3 padrão para o cliente AWS CRT baseado alterando o método builder.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_WEST_2) .targetThroughputInGbps(20.0) .minimumPartSizeInBytes(8 * 1025 * 1024L) .build();
nota
Algumas das configurações no construtor padrão podem não ser suportadas atualmente no construtor de AWS CRT clientes. Obtenha o construtor padrão chamando S3AsyncClient#builder()
.
Use o cliente S3 AWS CRT baseado
Use o cliente S3 AWS CRT baseado para chamar as operações do Amazon API S3. O exemplo a seguir demonstra as GetObject
import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectResponse; S3AsyncClient s3Client = S3AsyncClient.crtCreate(); // Upload a local file to Amazon S3. PutObjectResponse putObjectResponse = s3Client.putObject(req -> req.bucket(
<BUCKET_NAME>
) .key(<KEY_NAME>
), AsyncRequestBody.fromFile(Paths.get(<FILE_NAME>
))) .join(); // Download an object from Amazon S3 to a local file. GetObjectResponse getObjectResponse = s3Client.getObject(req -> req.bucket(<BUCKET_NAME>
) .key(<KEY_NAME>
), AsyncResponseTransformer.toFile(Paths.get(<FILE_NAME>
))) .join();
Limitações de configuração
O cliente S3 AWS CRT baseado e o cliente assíncrono S3 baseado em Java fornecem recursos comparáveis, com o cliente S3 AWS CRT baseado oferecendo uma vantagem de desempenho. No entanto, o cliente S3 AWS CRT baseado não tem as definições de configuração que o cliente assíncrono S3 baseado em Java tem. Essas configurações incluem:
-
Configuração em nível de cliente: tempo limite de tentativa de API chamada, interceptores de execução de compressão, editores de métricas, atributos de execução personalizados, opções avançadas personalizadas, serviço de execução programado personalizado, cabeçalhos personalizados
-
Configuração em nível de solicitação: assinantes personalizados, provedores de credenciais, tempo limite de tentativa de chamada API
Para obter uma lista completa das diferenças de configuração, consulte a API referência.
Cliente assíncrono S3 baseado em Java | AWS CRTcliente S3 baseado |
---|---|
Configurações em nível de cliente Configurações em nível de solicitação |
Configurações em nível de cliente Sem configurações em nível de solicitação |