View a markdown version of this page

署名付き URL ダウンロードを v1 から AWS SDK for Java v2 に移行する - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

署名付き URL ダウンロードを v1 から AWS SDK for Java v2 に移行する

署名付き URL ダウンロードコードを移行して非同期処理を使用し、バージョン 2 で拡張されたダウンロードオプションにアクセスします。このトピックでは、 のバージョン 1.x (v1) からバージョン 2.x (v2) に移行する方法について説明します AWS SDK for Java。v2 の署名付き URL ダウンロード機能の詳細については、「」を参照してください署名 Amazon S3 付き URLsの使用

高レベル変更

次のリストは、署名付き URL ダウンロードの v1 と v2 の主な違いをまとめたものです。

  • パッケージ: com.amazonaws.services.s3software.amazon.awssdk.services.s3

  • クライアントクラス: AmazonS3 (同期) → S3AsyncClient (非同期)。

  • アーキテクチャ: 同期ブロック呼び出し → を使用した非同期呼び出しCompletableFuture

  • マルチパート: Transfer Manager を介してのみ使用可能 → を使用するクライアントで直接使用可能multipartEnabled(true)

  • Transfer Manager: ファイル送信先のみ → ファイル、バイト、またはカスタムトランスフォーマー。

依存関係、パッケージ、クラス名の変更

次の表は、v1 から v2 への依存関係とクラス名の変更を示しています。

変更 v1 v2

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>
パッケージ名 com.amazonaws.services.s3 software.amazon.awssdk.services.s3
クラス名 AmazonS3, TransferManager S3AsyncClient, S3TransferManager

1 Maven Central ウェブサイトの最新バージョン。 2 Maven Central ウェブサイトの最新バージョン

API の変更

S3 クライアントのダウンロード

次の表は、S3 クライアントダウンロードの v1 および v2 API コールを比較したものです。

ユースケース v1 v2
クライアントの作成
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
署名付き URL を生成する
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();
ダウンロードリクエストを作成する
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
ダウンロードしてストリーミングする
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
ファイルへのダウンロード
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
範囲を含むダウンロード
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();

Transfer Manager のダウンロード

次の表は、Transfer Manager ダウンロードの v1 および v2 API コールを比較したものです。

ユースケース v1 v2
Transfer Manager を作成する
TransferManager tm = TransferManagerBuilder.standard().build();
S3TransferManager tm = S3TransferManager.create();
ダウンロード
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();

詳細については、「署名付き URL を使用してダウンロードする」を参照してください。

設定変更

S3 クライアント

次の表に、v1 から v2 への S3 クライアント設定の変更を示します。

設定 v1 v2
マルチパート設定 PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...))
カスタムヘッダー PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) サポート外。ダウンロード時に設定If-Matchできるのは Rangeと のみです。

Transfer Manager

次の表は、Transfer Manager の設定変更を v1 から v2 にまとめたものです。

設定 v1 v2
進捗状況追跡 PresignedUrlDownloadConfig.withS3progressListener(...) PresignedDownloadFileRequest.builder().addTransferListener(...)
再試行時に再開する PresignedUrlDownloadConfig.withResumeOnRetry(true) サポートされていません
一時停止/再開 サポートされません サポートされません
注記

AWS CRT ベースの S3 クライアント (S3AsyncClient.crtBuilder()) は現在、署名付き URL 拡張をサポートしていません。S3AsyncClient.builder() を使用します。