AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日にサポート終了
AWS SDK for Java を使用した AWS 開発のベストプラクティス
次のベストプラクティスは、AWS SDK for Java で AWS アプリケーションを開発する際に問題を回避するのに役立ちます。ベストプラクティスはサービスごとに整理してあります。
S3
ResetExceptions の回避
(Amazon S3 クライアントまたは AmazonS3 経由で) ストリームを使用して TransferManager にオブジェクトをアップロードするとき、ネットワーク接続またはタイムアウトの問題が発生する場合があります。デフォルトでは、AWS SDK for Java は、入力ストリームを転送の開始前にマーク (mark) して再試行前にリセット (reset) することで、失敗した転送を再試行しようとします。
ストリームが mark と reset をサポートしていない場合、一時的なエラーが発生して再試行が有効になると、SDK は ResetException をスローします。
ベストプラクティス
mark オペレーションと reset オペレーションをサポートするストリームを使用することをお勧めします。
ResetException を避ける最も信頼性の高い方法は、mark と reset の制限に制約されることなく AWS SDK for Java が処理できる、File
ストリームが FileInputStreamsetReadLimit メソッドを使用して mark の制限を設定できます。デフォルト値は 128 KB です。読み取り制限値をストリームのサイズより 1 バイト大きく設定すると、信頼できる方法で ResetException を回避できます。
たとえば、ストリームの最大予想サイズが 100,000 バイトである場合、読み取り制限を 100,001 (100,000 + 1) バイトに設定します。mark と reset は常に 100,000 バイト以下で動作します。これにより、一部のストリームではそのバイト数がメモリにバッファされる場合があることに注意してください。