Amazon S3 に大容量のファイルをアップロードするときにパフォーマンスを最適化する方法を教えてください。

最終更新日: 2019 年 12 月 17 日

大容量のファイルを Amazon Simple Storage Service (Amazon S3) にアップロードしたいのですが、このアップロードのパフォーマンスを最適化する方法を教えてください。 

簡単な説明

大容量のファイルを Amazon S3 にアップロードするときは、マルチパートアップロードを活用するのがベストプラクティスです。AWS コマンドラインインターフェイス (AWS CLI) を使用している場合、オブジェクトが大きい場合、どの aws s3 高レベルコマンドも自動的にマルチパートアップロードを実行します。高レベルコマンドには、aws s3 cpaws s3 sync などがあります。

アップロードのパフォーマンスを改善し、マルチパートアップロードを最適化するには、次のオプションを検討してください。

  • AWS CLI を使用している場合、アップロード設定をカスタマイズします。
  • Amazon S3 Transfer Acceleration を有効にします。

解決方法

AWS CLI を使用している場合、アップロード設定をカスタマイズする

次の Amazon S3 の AWS CLI 設定をカスタマイズできます。

  • max_concurrent_requests: この値で、Amazon S3 に一度に送信できるリクエストの数を設定します。デフォルト値は 10 です。
    注意 : より多くのスレッドを実行すると、マシンのリソースもその分多く消費されます。同時リクエストの最大量をサポートするための十分なリソースがマシンにあることを確認してください。
  • max_queue_size: この値で、キュー内のタスクの最大数を設定します。
  • multipart_threshold: この値で、個々のファイルのマルチパートアップロードのサイズしきい値を設定します。
  • multipart_chunksize: この値で、単一ファイルのマルチパートアップロードで AWS CLI がアップロードする各パートのサイズを設定します。この設定では、大きなファイル (300 MB など) を小さなパートに分割して、アップロードを高速化できます。
    注: マルチパートアップロードでは、1 つのファイルを最高 10,000 個の分割ファイルでアップロードする必要があります。設定したチャンクサイズが、分割ファイルのサイズと数のバランスを取っていることを確認する必要があります。
  • max_bandwidth: この値で、データを Amazon S3 にアップロードするための最大帯域幅を設定します。

Amazon S3 Transfer Acceleration を有効にする

Amazon S3 Transfer Acceleration により、クライアントと Amazon S3 間で長距離にわたる高速かつ安全なファイル転送が行えます。Transfer Acceleration では、Amazon CloudFront のグローバルに分散したエッジロケーションを利用しています。

Transfer Acceleration では追加料金が発生するため、料金を確認してください。Transfer Acceleration でお客様のユースケースの転送速度が向上するかどうかを判断するには、Amazon S3 Transfer Acceleration Speed Comparison ツールでご確認ください。

注: Transfer Acceleration では、CopyObject を使用したリージョン間のコピーはサポートしていません。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合