Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

ベストプラクティスの設計パターン: Amazon S3 パフォーマンスの最適化

アプリケーションは、Amazon S3 からストレージをアップロードおよび取得する際にリクエストパフォーマンスで 1 秒あたり何千ものトランザクションを簡単に達成できます。Amazon S3 は高いリクエスト率に自動的にスケールされます。たとえば、アプリケーションでバケット内のプレフィックスごとに 1 秒あたり 3,500 回以上の PUT/COPY/POST/DELETE リクエストと 5,500 回以上の GET/HEAD リクエストを達成できます。バケット内のプレフィックスの数に制限はありません。読み取りを並列化することによって読み取りまたは書き込みのパフォーマンスを向上させることができます。たとえば、Amazon S3 バケットに 10 個のプレフィックスを作成して読み取りを並列化すると、読み取りパフォーマンスを 1 秒あたり 55,000 回の読み取りリクエストにスケールできます。

Amazon S3 の一部のデータレイクアプリケーションは、ペタバイトを超えるデータを実行するクエリに対して何百万または何十億ものオブジェクトをスキャンします。これらのデータレイクアプリケーションは、単一インスタンスで最大 100 Gb/s であるそれらの Amazon EC2 インスタンスでのネットワークインターフェイス使用を最大化するの単一インスタンス の転送速度を達成します。その後、これらのアプリケーションは、複数のインスタンスにわたってスループットを集約して 1 秒あたり複数テラバイトを確保します。

ソーシャルメディアメッセージングアプリケーションなどの他のアプリケーションは、レイテンシーの影響を受けやすいアプリケーションです。これらのアプリケーションは、約 100 ~ 200 ミリ秒の一定の小さいオブジェクトレイテンシー (大きいオブジェクトの場合は、最初のバイトアウトのレイテンシー) を達成できます。

他の AWS サービスもさまざまなアプリケーションアーキテクチャのパフォーマンスの高速化に役立ちます。たとえば、1 つの HTTP 接続または 1 桁のミリ秒のレイテンシーで転送速度を早くする場合は、Amazon S3 によるキャッシュに Amazon CloudFront または Amazon ElastiCache を使用します。

さらに、クライアントと S3 バケット間の長距離でデータ転送を速くする場合は、Amazon S3 Transfer Acceleration を使用します。Transfer Acceleration では、CloudFront の世界中に分散したエッジロケーションを使用して、地理的距離でのデータ転送を高速化します。Amazon S3 ワークロードで AWS Key Management Service (SSE-KMS) によるサーバー側の暗号化を使用している場合、ユースケースでサポートされるリクエストレートの詳細については、AWS Key Management Service Developer ガイドのAWS KMS の制限」を参照してください。

以下のトピックでは、Amazon S3 を使用するアプリケーションのパフォーマンスを最適化するためのベストプラクティスガイドラインと設計パターンについて説明します。このガイドラインは、Amazon S3 のパフォーマンスの最適化に関する前のガイドラインより優先されます。たとえば、以前の Amazon S3 パフォーマンスガイドラインでは、頻繁なデータ検索のパフォーマンスを最適化するために、ハッシュ文字を使用してプレフィックスの命名をランダム化することを推奨していました。現在は、パフォーマンスを向上させるためにプレフィックスの命名をランダム化する必要はなくなり、プレフィックスに日付順の名前を使用できるようになりました。Amazon S3 のパフォーマンスの最適化に関する最新情報については、Amazon S3 のパフォーマンスガイドラインおよび Amazon S3 のパフォーマンス設計パターンを参照してください。