View a markdown version of this page

Migre downloads de URL pré-assinados de AWS SDK para Java v1 para v2 - 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á.

Migre downloads de URL pré-assinados de AWS SDK para Java v1 para v2

Migre seu código de download de URL pré-assinado para usar o processamento assíncrono e acessar opções de download expandidas na versão 2. Este tópico mostra como migrar da versão 1.x (v1) para a versão 2.x (v2) do. AWS SDK para Java Para obter informações sobre os recursos de download de URL pré-assinados v2, consulte. Trabalhe com Amazon S3 URLs pré-assinados

High-level mudanças

A lista a seguir resume as principais diferenças entre v1 e v2 para downloads de URL pré-assinados:

  • Package: com.amazonaws.services.s3software.amazon.awssdk.services.s3.

  • Classe de cliente: AmazonS3 (síncrona) → S3AsyncClient (assíncrona).

  • Arquitetura: Bloqueio síncrono de chamadas → Chamadas assíncronas com. CompletableFuture

  • Multiparte: Disponível somente através do Transfer Manager → Disponível diretamente no cliente commultipartEnabled(true).

  • Gerenciador de transferência: somente destino do arquivo → Arquivo, bytes ou transformador personalizado.

Mudanças nas dependências, pacotes e nomes de classes

A tabela a seguir mostra as alterações da dependência e do nome da classe de v1 para v2.

Alteração v1 v2 da

Dependências do Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.7971</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.48.02</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- Optional: for Transfer Manager --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> </dependencies>
Nome do pacote com.amazonaws.services.s3 software.amazon.awssdk.services.s3
Nomes da classe AmazonS3, TransferManager S3AsyncClient, S3TransferManager

1 Versão mais recente no site do Maven Central. 2 Versão mais recente no site do Maven Central.

Alterações de API

Downloads do cliente S3

A tabela a seguir compara as chamadas de API v1 e v2 para downloads do cliente S3.

Caso de uso v1 v2 da
Criar o cliente
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
Gere um URL pré-assinado
Date expiration = new Date( System.currentTimeMillis() + 600_000); URL presignedUrl = s3Client.generatePresignedUrl( new GeneratePresignedUrlRequest( "my-bucket", "my-key") .withMethod(HttpMethod.GET) .withExpiration(expiration));
S3Presigner presigner = S3Presigner.create(); PresignedGetObjectRequest presigned = presigner.presignGetObject(r -> r .getObjectRequest(req -> req .bucket("my-bucket").key("my-key")) .signatureDuration(Duration.ofMinutes(10))); URL presignedUrl = presigned.url(); presigner.close();
Crie a solicitação de download
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
Baixe para transmitir
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
Baixar para arquivo
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
Baixe com alcance
PresignedUrlDownloadRequest rangeRequest = new PresignedUrlDownloadRequest(presignedUrl); rangeRequest.setRange(0, 1023); s3Client.download(rangeRequest);
PresignedUrlDownloadRequest rangeRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .range("bytes=0-1023") .build(); extension.getObject(rangeRequest, Paths.get("/tmp/partial.bin")) .join();

Downloads do Transfer Manager

A tabela a seguir compara as chamadas de API v1 e v2 para downloads do Transfer Manager.

Caso de uso v1 v2 da
Crie o Gerenciador de Transferências
TransferManager tm = TransferManagerBuilder.standard().build();
S3TransferManager tm = S3TransferManager.create();
Baixar
PresignedUrlDownload download = tm.download( new PresignedUrlDownloadRequest(presignedUrl), new File("/tmp/file.bin")); download.waitForCompletion();
PresignedFileDownload download = tm.downloadFileWithPresignedUrl( PresignedDownloadFileRequest.builder() .presignedUrlDownloadRequest( downloadRequest) .destination(Paths.get("/tmp/file.bin")) .addTransferListener( LoggingTransferListener.create()) .build()); download.completionFuture().join();

Para obter mais informações, consulte Faça o download usando um URL pré-assinado.

Alterações de configuração

Cliente do S3

A tabela a seguir descreve as alterações na configuração do cliente S3 de v1 para v2.

Configuração v1 v2 da
Configuração de várias partes PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...))
Cabeçalhos personalizados PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) Sem compatibilidade. Somente Range e If-Match pode ser configurado no momento do download.

Gerenciador de Transferências

A tabela a seguir descreve as alterações na configuração do Transfer Manager de v1 para v2.

Configuração v1 v2 da
Acompanhamento de andamento PresignedUrlDownloadConfig.withS3progressListener(...) PresignedDownloadFileRequest.builder().addTransferListener(...)
Continuar ao tentar novamente PresignedUrlDownloadConfig.withResumeOnRetry(true) Sem compatibilidade
Pause/Resume Sem compatibilidade Sem compatibilidade
nota

Atualmente, o cliente AWS CRT-based S3 (S3AsyncClient.crtBuilder()) não oferece suporte à extensão de URL pré-assinada. Use S3AsyncClient.builder().