AWS SDK for Java
開発者ガイド

AWS SDK for Java を使用した AWS 開発のベストプラクティス

次のベストプラクティスは、AWS SDK for Java で AWS アプリケーションを開発する際に問題を回避するのに役立ちます。ベストプラクティスはサービスごとに整理してあります。

Amazon S3

ResetExceptions の回避

(AmazonS3 クライアントまたは TransferManager 経由で) ストリームを使用して Amazon S3 にオブジェクトをアップロードするとき、ネットワーク接続またはタイムアウトの問題が発生する場合があります。デフォルトでは、AWS SDK for Java は、入力ストリームを転送の開始前にマーク (mark) して再試行前にリセット (reset) することで、失敗した転送を再試行しようとします。

ストリームが mark と reset をサポートしていない場合、一時的なエラーが発生して再試行が有効になると、SDK は ResetException をスローします。

ベストプラクティス

mark オペレーションと reset オペレーションをサポートするストリームを使用することをお勧めします。

ResetException を避ける最も信頼性の高い方法は、mark と reset の制限に制約されることなく AWS SDK for Java が処理できる、File または FileInputStream を使用してデータを提供することです。

ストリームが FileInputStream でないものの mark と reset をサポートしている場合は、RequestClientOptionssetReadLimit メソッドを使用して mark の制限を設定できます。デフォルト値は 128 KB です。読み取り制限値をストリームのサイズより 1 バイト大きく設定すると、信頼できる方法で ResetException を回避できます。

たとえば、ストリームの最大予想サイズが 100,000 バイトである場合、読み取り制限を 100,001 (100,000 + 1) バイトに設定します。mark と reset は常に 100,000 バイト以下で動作します。これにより、一部のストリームではそのバイト数がメモリにバッファされる場合があることに注意してください。

このページの内容: