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

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

所要時間2分
0

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

簡単な説明

Amazon S3 に大きなファイルをアップロードする場合、マルチパートアップロードを使用するのがベストプラクティスです。また、マルチパートアップロードのオブジェクトサイズのしきい値を設定してください。AWS CLI を使用してファイルをアップロードする場合、オブジェクトサイズがしきい値を超えると、すべての high-level aws s3 コマンドが自動的にマルチパートアップロードを実行します。これらの high-level コマンドには、aws s3 cpaws s3 sync が含まれます。

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

解決策

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

オプション 1: CRT ベースのクライアントを AWS CLI で使用する

CRT ベースのクライアントを使用するには、次の手順を実行します。

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

    [default]s3 =
    preferred_transfer_client = crt

    または、configure コマンドを実行します。

    aws configure set default.s3.preferred_transfer_client crt
  2. cp コマンドを実行して、CRT クライアントがアクティブであることを確認します。

    aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt

    CRT クライアントがアクティブな場合の出力例:

    aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt  
    \[DEBUG\] \[2025-12-01T07:58:46Z\] \[00007fe20f9b9340\] \[tls-handler\] - Set security policy to AWS-CRT-SDK-TLSv1.0-2025-PQ (minimum\_tls\_version: 128; cipher\_pref: 0)  
    2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Recommended CRT throughput target in gbps: None  
    2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Using CRT throughput target in gbps: 10.0
  3. (オプション) target_bandwidth を設定して最大スループットを制御します。AWS CLI 設定ファイルに target_bandwidth 値を追加します。

    \[default\]  
    s3 =  
        preferred\_transfer\_client = crt  
        target\_bandwidth = 1Gb/s

    または、configure コマンドを実行します。

    aws configure set default.s3.target_bandwidth 1Gb/s

    注: 特定の帯域幅要件がある場合にのみ設定してください。AWS CLI は、システムの能力に基づいて帯域幅を自動的に最適化します。この値を誤って設定すると、ネットワークまたはシステムリソースが過負荷になる可能性があります。このオプションは null のままにしておくことをお勧めします。

CRT ベースのクライアントをアクティブ化すると、AWS CLI は自動的にクライアントを使用してファイルをアップロードします。これにより、特に大きなファイルをアップロードする場合に、標準の AWS CLI と比較してパフォーマンスと信頼性が向上します。

これらのパラメータを使用してマルチパートアップロードをカスタマイズします。

パラメータ説明デフォルト値推奨事項
max_bandwidthAmazon S3 にデータをアップロードするための最大帯域幅なし (無制限)ネットワークの飽和を防ぐために設定します。
max_concurrent_requestsAmazon S3 への同時リクエスト数10十分なシステムリソースを備えた高帯域幅接続の場合は、20~50 に増やします。
max_queue_size転送キュー内の最大タスク数1,000多数のファイルを扱うバッチ操作の場合は増やします。
multipart_chunksizeアップロードされる各パーツのサイズ8 MB1 GB を超えるファイルで、チャンク数が 10,000 未満の場合は、16~64 MB に増やします。
multipart_thresholdマルチパートアップロードが開始されるファイルサイズ8 MB大半のユースケースではデフォルトのままにします。

注: マシンに、必要な同時リクエストの最大数をサポートするのに十分なリソースがあることを確認する必要があります。

オプション 2: S3 Transfer Acceleration を有効にする

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

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

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

Amazon S3 Transfer Acceleration を有効にするには、次の手順を実行します。

  1. バケットの S3 Transfer Acceleration をオンにします。

  2. 単一のファイル転送に高速化エンドポイントを指定します。

    aws s3 cp large-file.zip s3://your-bucket-name/ --endpoint-url https://s3-accelerate.amazonaws.com

    または、すべてのファイル転送に適用するように CLI 設定ファイル内のエンドポイントを設定します。

    \[default\]  
    s3 =  
        use\_accelerate\_endpoint = true

関連情報

AWS CLI S3 Configuration (AWS CLI の S3 設定)

AWS Command Line Interface とはどのようなものですか

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

関連するコンテンツ