Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから Amazon Simple Storage Service (Amazon S3) バケットにデータを転送するときの速度を向上させたいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
EC2 インスタンスで拡張ネットワーク機能を使用する
前提条件: Enhanced Network Adapter (ENA) を使用する場合は、インスタンスの拡張ネットワーク機能に関する前提条件を満たしてください。Intel 82599 VF インターフェイスを使用する場合は、インスタンスで拡張ネットワーク機能の準備を行ってください。
Amazon CloudWatch を使用してインスタンスのメトリクスを確認してください。インスタンスの NetworkPacketsOut 値が期待する値よりも大きい場合は、拡張ネットワーク機能を有効にします。
データ転送に並列ワークロードを使用する
データ転送の完了にかかる時間を短縮するために、転送を相互に排他的な複数の操作に分割します。例えば、AWS CLI を使用する場合、複数の cp、mv、または sync AWS CLI コマンドを同時に実行します。
データを複数のプレフィックスに分散させる場合は、同時に別々の同期を実行する複数の AWS CLI 操作を実行します。手順については、「Amazon S3 で AWS CLI の sync コマンドを実行する際、データ転送のパフォーマンスを向上させる方法を教えてください」の「複数の AWS CLI 操作を実行する」セクションを参照してください。
AWS CLI でアップロード設定をカスタマイズする
データ転送を高速化するには、次の Amazon S3 の AWS CLI 設定値をカスタマイズします。
- multipart_chunksize の値は、AWS CLI が個々のファイルのマルチパートアップロードでアップロードする各パートのサイズを設定します。この値を最適化すると、大きなファイルが小さなパーツに分割され、アップロード速度が速くなります。
注: マルチパートアップロードでは、1 つのファイルを最大 10,000 個のパーツに分けてアップロードする必要があります。設定するチャンクサイズでパーツファイルのサイズとパーツ数のバランスが取れていることを確認してください。
- Amazon S3 に一度に送信できるリクエストの数を増やすには、max_concurrent_requests の値を変更してください。デフォルト値は 10 です。この値を大きくすると、応答が滞ることがあります。max_concurrent_requests の値を大きくして並列ワークロードと組み合わせると、全体的に転送速度が向上します。デフォルトで、AWS CLI はマルチスレッドに対応しています。
注: マシンに、同時リクエストの最大数をサポートするのに十分なリソースがあることを確認してください。
Amazon S3 の VPC エンドポイントを使用する
インスタンスが Amazon S3 バケットと同じ AWS リージョンにある場合は、Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントを使用してください。
インターネットゲートウェイ、NAT デバイス、VPN 接続なしで VPC にプライベートに接続することもできます。VPC 内のインスタンスは、Amazon S3 バケットと通信するためのパブリック IP アドレスを必要としません。Amazon VPC エンドポイントを使用する場合、VPC と Amazon S3 間のデータトラフィックは AWS ネットワーク上でルーティングされます。
注: Amazon S3 の Amazon VPC エンドポイントは、異なる AWS リージョンにわたるリクエストをサポートしていません。
地理的に離れたリージョン間で Amazon S3 Transfer Acceleration を使用する
インスタンスと Amazon S3 バケットが地理的に近いリージョンにあると、データ転送速度が速くなることがあります。インスタンスとバケットが地理的に離れたリージョンにある場合は、Amazon S3 Transfer Acceleration を有効にします。Amazon S3 Transfer Acceleration を有効にする前に、Amazon S3 の料金を確認してください。
Transfer Acceleration によってインスタンスの転送速度が向上するかどうかを判断するには、Amazon S3 Transfer Acceleration 速度比較ツールを確認してください。
注: S3 Transfer Acceleration を使用する場合、リージョン間で CopyObject API コールを使用することはできません。
Amazon EC2 インスタンスタイプをアップグレードする
Amazon EC2 インスタンスの CPU 使用率が高いと、データ転送速度に影響する可能性があります。インスタンスを、メモリとネットワークパフォーマンスがより優れたインスタンスタイプに変更できます。
注: Amazon EC2 インスタンスと Amazon S3 間の信頼性の高いネットワーク接続を実現するには、接続が 10 GiBps 以上のインスタンスタイプを選択してください。
チャンク転送を使用する
サイズの大きいファイルを転送する場合は、マルチパートアップロードと範囲指定の HTTP マルチパートリクエストを使用してください。
関連情報
設計パターンのベストプラクティス: Amazon S3 のパフォーマンスの最適化