スキップしてコンテンツを表示

Amazon S3 で AWS CLI の sync コマンドを実行する際、データ転送のパフォーマンスを向上させる方法を教えてください

所要時間2分
0

AWS コマンドラインインターフェイス (AWS CLI) の sync コマンドを使用して Amazon Simple Storage Service (Amazon S3) にデータを転送しています。転送が完了するまでに時間がかかっています。

簡単な説明

ソースバケットと宛先バケット内のオブジェクトの数により、sync コマンドがプロセスを完了するまでにかかる時間が影響を受ける可能性があります。転送サイズは、同期の所要時間と Amazon S3 へのリクエストのコストに影響する可能性があります。

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

期限切れの削除マーカーを削除する

sync コマンドはバックエンドで list API コールを実行するため、削除マーカーは sync コマンドのパフォーマンスに影響します。削除マーカーの数を最小限に抑えることを推奨します。S3 ライフサイクル設定ルールを使用すると、バージョニングが有効なバケット内の期限切れの削除マーカーを自動的に削除できます。

複数の AWS CLI 操作を実行する

大量のデータをコピーするには、別々の sync 操作を並行して実行します。次のコマンド例は、複数のプレフィックスに対する sync 操作を並行して実行します。

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

または、別々の除外フィルターと包含フィルターに対し、sync 操作を並行で実行します。次の操作例では、0 ~ 4 で始まるキー名と、5 ~ 9 で始まるキー名で同期するファイルを区切っています。

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

注: 除外 フィルターと 包含 フィルターを使用する場合も、sync コマンドはソースバケット内のすべてのファイルをレビューします。このレビューにより、宛先バケットにコピーするソースファイルを識別します。異なるキー名プレフィックスを対象とする同期操作が複数ある場合、各 sync 操作がすべてのソースファイルをレビューします。ただし、除外フィルターと包含フィルターにより、フィルターに含まれるファイルのみが Amazon S3 により宛先バケットにコピーされます。

ワークロードのパフォーマンスを最適化する方法の詳細については、「ベストプラクティスの設計パターン: Amazon S3 のパフォーマンスを最適化する」を参照してください。

S3 Transfer Acceleration を有効にする

S3 Transfer Acceleration を使用すると、転送速度を向上できます。

S3 Transfer Acceleration の料金については、「Amazon S3 の料金」ページの [データ転送] タブを参照してください。A3 Transfer Acceleration で転送速度を向上できるかどうかを判断するには、Amazon S3 Transfer Acceleration Speed Comparison ツールを使用します。

注: S3 Transfer Accelerationでは、複数 AWS リージョンにわたり CopyObject アクションを実行できません。

AWS CLI の設定値を変更する

max_concurrent_requests

max_concurrent_requests を使用する際の、Amazon S3 に同時に送信できるリクエストのデフォルト数は 10 です。パフォーマンスを向上させるには、値を大きくします。

重要:

  • 実行するスレッドが増えると、マシン上のリソースの使用量も増えます。お使いのマシンに、同時リクエストの最大数をサポートするのに十分なリソースがあることを確認してください。
  • 同時リクエスト数が多すぎると、接続がタイムアウトしたり、システムの応答が遅くなったりする可能性があります。AWS CLI がタイムアウトする問題を回避するには、the --cli-read-timeout オプションまたは --cli-connect-timeout オプション0 に設定します。

multipart_threshold

ファイルがサイズのしきい値に達している場合、Amazon S3 は単一の操作ではなく、マルチパートアップロードを実行します。multipart_threshold のデフォルト値は 8 MB です。デフォルト値を増やすには、次のコマンドを実行します。

aws configure set default.s3.multipart_threshold 16MB

注: **16MB ** をマルチパートのしきい値サイズに置き換えてください。

multipart_chunksize

multipart_chunksize のデフォルト値は 8 MB で、最小値は 5 MB です。チャンクサイズを増やすには、次のコマンドを実行します。

aws configure set default.s3.multipart_chunksize 16MB

注: 16MB を目的のチャンクサイズに置き換えてください。

大容量オブジェクトでは、multipart_threshold100 MB に設定し、大容量ファイルのみにマルチパートアップロードを実行することを推奨します。multipart_chunksize25 MB に設定し、効率的なアップロードと扱いやすいパートサイズのバランスを取ることも推奨されます。

(オプション) EC2 インスタンスの設定を確認する

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから sync を実行する場合は、次のベストプラクティスを実施するとパフォーマンスを向上できます。

関連情報

S3 バケットと EC2 インスタンス間のデータコピーの転送速度を向上させる方法を教えてください

ある Amazon S3 バケットから別の Amazon S3 バケットに大量のデータを転送する方法を教えてください

オンプレミスクライアントから Amazon S3 にデータをダウンロードまたはアップロードする際に、速度が遅くなったり不安定になったりする場合のトラブルシューティング方法を教えてください

AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ