大容量のファイル (1 GB 以上) を Amazon Simple Storage Service (Amazon S3) にアップロードしたいと考えています。このアップロードのパフォーマンスを最適化する方法を教えてください。
簡単な説明
大容量のファイルを Amazon S3 にアップロードするときは、マルチパートアップロードを活用するのがベストプラクティスです。AWS Command Line Interface (AWS CLI) を使用している場合、オブジェクトが大きいと、どの aws s3 高レベルコマンドも自動的にマルチパートアップロードを実行します。高レベルコマンドには、aws s3 cp や aws s3 sync などがあります。
アップロードのパフォーマンスを改善し、マルチパートアップロードを最適化するには、次のオプションを検討してください。
- AWS CLI を使用している場合、アップロード設定をカスタマイズします。
- Amazon S3 Transfer Acceleration を有効にします。
解決方法
AWS CLI を使用している場合、アップロード設定をカスタマイズする
次の Amazon S3 の AWS CLI 設定をカスタマイズできます。
- max_concurrent_requests: この値で、Amazon S3 に一度に送信できるリクエストの数を設定します。デフォルト値は 10 です。
注意: より多くのスレッドを実行すると、マシンのリソースもその分多く消費されます。同時リクエストの最大量をサポートするための十分なリソースがマシンにあることを確認してください。
- max_queue_size: この値は、キュー内のタスクの最大数を設定します。デフォルト値は 1,000 です。
- multipart_threshold: この値は、個々のファイルのマルチパートアップロードのサイズしきい値を設定します。デフォルト値は 8 MB です。
- multipart_chunksize: この値は、個々のファイルのマルチパートアップロードで AWS CLI がアップロードする各パートのサイズを設定します。この設定では、大容量ファイル (300 MB など) を小さなパートに分割して、アップロードを高速化できます。デフォルト値は 8 MB です。
注: マルチパートアップロードでは、1 つのファイルを 10,000 個を超えない数の分割ファイルでアップロードする必要があります。設定したチャンクサイズが、分割ファイルのサイズと数のバランスを取っていることを確認する必要があります。
- max_bandwidth: この値は、データを Amazon S3 にアップロードするための最大帯域幅を設定します。デフォルト値はありません。
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
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 を使用したリージョン間のコピーはサポートしていません。