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

AWS CLI を使用して大きなファイルを Amazon S3 にアップロードする場合のパフォーマンスを最適化する方法を教えてください。

所要時間2分
0

AWS コマンドラインインターフェイス (AWS CLI) を使用してサイズの大きいファイル (1 GB 以上) を Amazon Simple Storage Service (Amazon S3) にアップロードするときのパフォーマンスを最適化したいと考えています。

簡単な説明

Amazon S3 に大きなファイルをアップロードする場合、マルチパートアップロードを利用するのがベストプラクティスです。AWS CLI を使用している場合、オブジェクトが大きい場合、すべての高レベルの aws s3 コマンドが自動的にマルチパートアップロードを実行します。これらの高レベルのコマンドには、aws s3 cpaws s3 sync が含まれます。

パフォーマンスを最適化するには、次の方法のいずれかを選択します。

大規模なデータ転送や複雑なワークロードが必要な場合は、AWS CLI 用の AWS CRT ベースのクライアントを使用してください。
**注:**この方法には AWS CLI バージョン 2 を使用する必要があります。AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。

解決策

CRT ベースのクライアントを AWS CLI で使用する

CRT ベースのクライアントをアクティブにする
CRT ベースのクライアントをアクティブにするには、AWS CLI を設定します。これを行うには、AWS CLI 設定ファイル (~/.aws/config) に設定を追加するか、AWS CLI を使用して設定します。

preferred_transfer_client を AWS CLI 設定ファイルに追加します。

[default]
s3 =
preferred_transfer_client = crt

ターミナルで次のコマンドを入力します。

aws configure set default.s3.preferred_transfer_client crt

target_bandwidth オプションの設定 (オプション)
このオプションは、転送クライアントが S3 のアップロードとダウンロードで到達しようとするターゲット帯域幅を制御します。デフォルトでは、AWS CLI はシステムの最大ネットワーク帯域幅と一致するターゲット帯域幅を選択します。

**注:**target_bandwidth 値を設定するときは注意してください。その値がローカルのクライアントリソースの能力よりも大きい場合、クライアントを圧倒してしまう可能性があります。このオプションは null のままにしておくことをお勧めします。

CRT ベースのクライアントをアクティブにすると、AWS CLI は自動的にクライアントを使用して Amazon S3 オペレーション (ファイルのアップロードを含む) を行います。これにより、特に大きなファイルをアップロードする場合に、標準の 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 にデータをアップロードするための最大帯域幅を設定します。デフォルト値はありません。

Amazon S3 Transfer Acceleration をアクティブにする

Amazon S3 Transfer Acceleration は、クライアントと Amazon S3 間の長距離にわたる高速で安全な転送を可能にします。転送アクセラレーションは、Amazon CloudFront のグローバルに分散されたエッジロケーションを使用します。

Transfer Acceleration には追加料金がかかるため、料金表を必ず確認してください。Transfer Acceleration によってユースケースの転送速度が向上するかどうかを判断するには、Amazon S3 転送アクセラレーション速度比較ツールを確認してください。

**注:**転送アクセラレーションは、AWS リージョン間の CopyObject コピーをサポートしていません。

関連情報

AWS CLI の S3 設定

AWS コマンドラインインターフェイス (AWS CLI) とは何ですか?

コメントはありません

関連するコンテンツ