S3 バケットと EC2 インスタンス間のデータコピーの転送速度を向上させるにはどうすればよいですか?

所要時間1分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから Amazon Simple Storage Service (Amazon S3) バケットにデータを転送するときの速度を向上させたいと考えています。

簡単な説明

Amazon EC2 から Amazon S3 にデータをコピー、移動、または同期するときの転送速度は、いくつかの要因によって異なります。EC2 インスタンスと S3 バケット間の転送速度を向上させるには、以下の解決方法を使用してください。

解決方法

EC2 インスタンスで拡張ネットワーキングを使用する

拡張ネットワーキングにより、帯域幅が広くなり、1 秒あたりのパケット数 (PPS) のパフォーマンスが向上し、インスタンス間のレイテンシーが低下します。拡張ネットワーキングは追加料金なしで有効にできます。

EC2 インスタンスの PPS レートが上限に達しているように見える場合は、インスタンスがネットワークインターフェイスドライバーの上限しきい値に達した可能性があります。このような場合は、拡張ネットワーキングを有効にしてください。

注:拡張ネットワーキングのインスタンス要件を必ず確認してください。

データ転送に並列ワークロードを使用する

データ転送の完了にかかる全体的な時間を短縮するために、転送を相互に排他的な複数の操作に分割します。たとえば、AWS コマンドラインインターフェイス (AWS CLI) を使用している場合、AWS S3 cpAWS S3 mv、または AWS S3 sync の同時インスタンスを実行できます。データを複数のプレフィックスに分散させる場合は、AWS CLI の複数のインスタンスを実行して、個別の同期操作を並列で実行します。

たとえば、次のようなさまざまなプレフィックスに対して並列同期操作を実行できます:

  • 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

**注:**AWS CLI コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を実行していることを確認してください

AWS CLI でアップロード設定をカスタマイズする

データ転送を高速化するには、Amazon S3 の次の AWS CLI 設定値をカスタマイズします:

  • **multipart_chunksize:**この値は、AWS CLI が個々のファイルのマルチパートアップロードでアップロードする各パートのサイズを設定します。この設定では、大きなファイルを小さなパートに分割することでアップロード速度を上げることができます。
    **注:**マルチパートアップロードでは、1 つのファイルを最大 10,000 個のパートに分けてアップロードする必要があります。設定するチャンクサイズでパーツファイルのサイズとパーツ数のバランスが取れていることを確認してください。
  • **max_concurrent_requests:**デフォルトで、AWS CLI はマルチスレッドに対応しています。Amazon S3 に一度に送信できるリクエストの数を増やすには、max_concurrent_requests の値を変更してください。デフォルト値は 10 です。この値を大きくすると、応答が停滞することがあります。ただし、max_concurrent_requests の値を大きくして並列ワークロードと組み合わせると、全体的に転送速度が向上します。
    **注:**実行するスレッドが増えると、マシン上で消費されるリソースが増えます。マシンに、同時リクエストの最大数をサポートするのに十分なリソースがあることを確認してください。

Amazon S3 の VPC エンドポイントを使用する

EC2 インスタンスが S3 バケットと同じ AWS リージョンにある場合は、Amazon S3 の仮想プライベートクラウド (VPC) エンドポイントを使用してください。VPC エンドポイントは、全体的なパフォーマンスを向上させ、ネットワークアドレス変換 (NAT) の負荷を軽減するのに役立ちます。

また、インターネットゲートウェイ、NAT デバイス、VPN 接続なしで VPC にプライベートに接続できます。VPC 内のインスタンスは、Amazon S3 バケットなどのリソースと通信するためにパブリック IP アドレスを必要としません。VPC エンドポイントを使用すると、VPC と Amazon S3 の間のデータトラフィックは AWS ネットワーク上でルーティングされます。

地理的に離れたリージョン間で S3 Transfer Acceleration を使用する

EC2 インスタンスと S3 バケットが地理的に近い場合、データ転送速度は高速になる可能性があります。インスタンスとバケットが地理的に離れたリージョンにある場合は、Amazon S3 Transfer Acceleration をオンにします。Transfer Acceleration には追加料金がかかるため、Amazon S3 の料金表を必ず確認してください。

Transfer Acceleration によってユースケースの転送速度が向上するかどうかを判断するには、Amazon S3 転送アクセラレーション速度比較ツールを使用してください。

EC2 インスタンスタイプをアップグレードする

EC2 インスタンスの CPU 使用率が高いと、転送速度に影響する可能性があります。インスタンスを、より高いメモリとネットワークパフォーマンスを提供する別のインスタンスタイプにアップグレードできます。通常、インスタンスタイプのインスタンスサイズを大きくすると、同じタイプの小さいインスタンスサイズよりもネットワークパフォーマンスが向上します。

**注:**EC2 インスタンスと Amazon S3 間の信頼性の高いネットワーク接続を実現するには、10 GiBps 以上のネットワーク接続を備えたインスタンスタイプを選択してください。

チャンク転送を使用する

サイズの大きいファイルを転送する場合は、マルチパートアップロードと範囲指定の GET が全体的な転送パフォーマンスの向上に役立ちます。

関連情報

設計パターンのベストプラクティス: Amazon S3 のパフォーマンスの最適化

AWS公式
AWS公式更新しました 1年前
コメントはありません