AWS コマンドラインインターフェイス (AWS CLI) を使用してサイズの大きいファイル (1 GB 以上) を Amazon Simple Storage Service (Amazon S3) にアップロードするときのパフォーマンスを最適化したいと考えています。
簡単な説明
Amazon S3 に大きなファイルをアップロードする場合、マルチパートアップロードを使用するのがベストプラクティスです。また、マルチパートアップロードのオブジェクトサイズのしきい値を設定してください。AWS CLI を使用してファイルをアップロードする場合、オブジェクトサイズがしきい値を超えると、すべての high-level aws s3 コマンドが自動的にマルチパートアップロードを実行します。これらの high-level コマンドには、aws s3 cp と aws s3 sync が含まれます。
パフォーマンスを最適化するには、次の方法のいずれかを選択します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
オプション 1: CRT ベースのクライアントを AWS CLI で使用する
CRT ベースのクライアントを使用するには、次の手順を実行します。
-
preferred_transfer_client を AWS CLI 設定ファイルに追加します。
[default]s3 =
preferred_transfer_client = crt
または、configure コマンドを実行します。
aws configure set default.s3.preferred_transfer_client crt
-
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
-
(オプション) 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_bandwidth | Amazon S3 にデータをアップロードするための最大帯域幅 | なし (無制限) | ネットワークの飽和を防ぐために設定します。 |
| max_concurrent_requests | Amazon S3 への同時リクエスト数 | 10 | 十分なシステムリソースを備えた高帯域幅接続の場合は、20~50 に増やします。 |
| max_queue_size | 転送キュー内の最大タスク数 | 1,000 | 多数のファイルを扱うバッチ操作の場合は増やします。 |
| multipart_chunksize | アップロードされる各パーツのサイズ | 8 MB | 1 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 を有効にするには、次の手順を実行します。
-
バケットの S3 Transfer Acceleration をオンにします。
-
単一のファイル転送に高速化エンドポイントを指定します。
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 とはどのようなものですか