Amazon S3 Transfer Manager のバージョン 1 からバージョン 2 への変更 - AWS SDK for Java 2.x

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

Amazon S3 Transfer Manager のバージョン 1 からバージョン 2 への変更

このトピックでは、Amazon S3 Transfer Manager のバージョン 1 (v1) からバージョン 2 (v2) への変更点について詳しく説明します。

高レベル変更

変更 v1 v2

Maven の依存関係

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.6911</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.27.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> // Add the following if using the // AWS CRT-based S3 client. <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.29.143</version> </dependency> </dependencies>
パッケージ名 com.amazonaws.services.s3.transfer software.amazon.awssdk.transfer.s3
Class name

TransferManager

S3TransferManager

1 最新バージョン2 最新バージョン3 最新バージョン

設定変更

v2 転送マネージャーに設定する必要がある設定変更は、使用する S3 クライアントによって異なります。 AWS CRTベースの S3 クライアントまたは標準の Java ベースの S3 非同期クライアントを選択できます。相違点の詳細については、の S3 クライアント AWS SDK for Java 2.x「」トピックを参照してください。

Use the AWS CRT-based S3 client
設定 v1 v2 - AWS CRTベースの S3 クライアントを使用する Transfer Manager

(ビルダーを入手する)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

S3 クライアント

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

エグゼキュター

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

スレッドプールをシャットダウンする

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
サポート外。が閉じられている場合、指定されたエグゼキュターS3TransferManagerはシャットダウンされません

最小アップロードパートサイズ

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

マルチパートアップロードのしきい値

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

最小コピーパーツサイズ

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

マルチパートコピーのしきい値

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

並列ダウンロードを無効にする

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
マルチパートが無効 (デフォルト) の標準 Java ベースの S3 クライアントを転送マネージャーに渡して、並列ダウンロードを無効にします。
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

常にマルチパート md5 を計算する

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
サポート外。
Use Java-based S3 async client
設定 v1 v2 - Java ベースの S3 非同期クライアントを使用する Transfer Manager

(ビルダーを入手する)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

S3 クライアント

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

エグゼキュター

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

スレッドプールをシャットダウンする

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
サポート外。が閉じられている場合、指定されたエグゼキュターS3TransferManagerはシャットダウンされません

最小アップロードパートサイズ

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

マルチパートアップロードのしきい値

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

最小コピーパーツサイズ

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

マルチパートコピーのしきい値

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

並列ダウンロードを無効にする

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
マルチパートが無効 (デフォルト) の標準 Java ベースの S3 クライアントを転送マネージャーに渡して、並列ダウンロードを無効にします。
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

常にマルチパート md5 を計算する

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
サポート外。

動作の変更

並列転送要件

for SDKJava 2.x では、 AWS CRTベースの S3 クライアントJava ベースの S3 非同期クライアント を介して、自動並列転送機能 (マルチパートアップロード/ダウンロード) を使用できます。 AWS CRTベースの S3 クライアントを使用するには、パフォーマンスを最大化するために AWS Common Runtime (CRT) ライブラリの依存関係を明示的に追加する必要があります。マルチパートが有効になっている Java ベースの S3 非同期クライアントを使用するには、 バージョン SDK で を使用する必要があります。2.25.X <TODO> 以上。

AWS CRTベースの S3 クライアントだけでは、 を使用せずにS3TransferManager、並列転送のパフォーマンスを最大化できます。v2 S3TransferManager には、ファイルやディレクトリの転送を容易にAPIsする追加機能が用意されています。

バイト範囲フェッチによる並列ダウンロード

自動並列転送機能が有効になっている場合、S3 Transfer Manager v2 はバイト範囲フェッチを使用してオブジェクトの特定の部分を並列して取得します (マルチパートダウンロード)。v2 でのオブジェクトのダウンロード方法は、オブジェクトが最初にアップロードされた方法には依存しません。すべてのダウンロードで、高いスループットと同時実行性のメリットが得られます。

これとは対照的に、S3 Transfer Manager v1 では、オブジェクトが最初にどのようにアップロードされたかが問題になります。S3 Transfer Manager v1 は、パーツがアップロードされたのと同じ方法でオブジェクトの一部を取得します。オブジェクトが元々単一のオブジェクトとしてアップロードされた場合、S3 Transfer Manager v1 はサブリクエストを使用してダウンロードプロセスを高速化することはできません。

失敗動作

S3 Transfer Manager v1 では、いずれかのサブリクエストが失敗すると、ディレクトリ転送リクエストは失敗します。v1 とは異なり、S3 Transfer Manager v2 から返される Future は、一部のサブリクエストが失敗しても正常に完了します。

そのため、Future が正常に完了した場合でも、CompletedDirectoryDownload.failedTransfers() メソッドまたは CompletedDirectoryUpload.failedTransfers() メソッドを使用してレスポンスにエラーがないかどうかを確認する必要があります。