Amazon S3 で使用する - AWS SDK for Java 2.x

Amazon S3 で使用する

このセクションでは、AWS SDK for Java 2.x を使用して Amazon S3 を操作するための背景情報を提供します。このセクションは、このガイドの「コード例」セクションで説明されている Amazon S3 Java v2 の例の情報を補完します

AWS SDK for Java 2.x の S3 クライアント

AWS SDK for Java 2.x は、さまざまなタイプの S3 クライアントを提供します。次の表では違いを比較しており、ユースケースに最適なクライアントを決定するのに役立ちます。

Amazon S3 クライアントのさまざまなタイプ
S3 クライアント 簡単な説明 どのようなときに使うか 制限/欠点

AWS CRT ベースの S3 クライアント

インターフェイス: S3AsyncClient

ビルダー: S3CrtAsyncClientBuilder

  • Java ベースの S3 非同期クライアントと同じ非同期 API オペレーションを提供しますが、より高いパフォーマンスを発揮します。

  • aws-crt 依存関係が必要です。

  • 自動並列転送 (マルチパート) をサポートします。

パフォーマンスの高い S3 クライアントを使用する: AWS CRT ベースの S3 クライアント」を参照してください。

  • アプリケーションが大きなオブジェクト (> 8 MB) を転送するため、パフォーマンスを最大化したい場合。

  • コンテンツの長さが不明なオブジェクトをアップロードする場合。

  • 接続プーリングと DNS ロードバランシングを強化して、スループットとパフォーマンスを向上させたい場合。

  • ネットワーク障害が発生した場合の転送の信頼性を向上させたい場合。最初から転送を再開せずに、個々の失敗パートが再試行されます。

  • Java ベースの S3 クライアントよりもサポートされる構成設定少ないです。

  • 追加の依存関係が必要です。

マルチパートが有効になっている Java ベースの S3 非同期クライアント

インターフェイス: S3AsyncClient

ビルダー: S3AsyncClientBuilder

  • 非同期 API を提供します。

  • 作成時にマルチパートを有効にすると、自動並列転送 (マルチパート) がサポートされます。

並列転送を使用するように Java ベースの S3 非同期クライアントを設定する」を参照してください。

  • アプリケーションが大きなオブジェクトを転送するため、パフォーマンスを向上させたい場合。

  • コンテンツの長さが不明なオブジェクトをアップロードする場合。

  • ネットワーク障害が発生した場合の転送の信頼性を向上させたい場合。最初から転送を再開せずに、個々の失敗パートが再試行されます。

  • AWS CRT ベースの S3 クライアントでは使用できない設定オプションが必要です。

AWS CRT ベースの S3 クライアントよりもパフォーマンスが低くなります。

マルチパートが有効になっていない Java ベースの S3 非同期クライアント

インターフェイス: S3AsyncClient

ビルダー: S3AsyncClientBuilder

  • 非同期 API を提供します。

  • 8 MB 未満のオブジェクトを転送する場合。

  • 非同期 API が必要な場合。

パフォーマンスの最適化なし。

Java ベースの S3 同期クライアント

インターフェイス: S3Client

ビルダー: S3ClientBuilder

  • 同期 API を提供します。

  • 8 MB 未満のオブジェクトを転送する場合。

  • 同期 API が必要な場合。

パフォーマンスの最適化なし。

注記

バージョン 2.18.x 以降では、AWS SDK for Java 2.x はエンドポイントオーバーライドを含める際に仮想ホスト形式のアドレッシングを使用します。これは、バケット名が有効な DNS ラベルである限り適用されます。

クライアントビルダーの trueforcePathStyle メソッドを呼び出して、クライアントにバケットにパス形式のアドレス指定を使用するように強制します。

以下の例は、エンドポイントオーバーライドを設定し、パス形式のアドレス指定を使用するサービスクライアントを示しています。

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