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

ある Amazon S3 バケットから別のバケットに大量のデータを転送する方法を教えてください・

所要時間2分
0

ある Amazon Simple Storage Service (Amazon S3) バケットから別のバケットに、1 TB 以上のデータを転送しようとしています。

解決策

次のいずれかの方法で、ある Amazon S3 バケットから別の Amazon S3 バケットに大量のデータを転送できます。

  • AWS コマンドラインインターフェイス (AWS CLI)
  • クロスリージョンレプリケーションまたは同一リージョンレプリケーション
  • Amazon S3 Batch Operations
  • Amazon EMR と S3DistCP の併用
  • AWS DataSync

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

AWS CLI

データ転送時間を改善するには、転送を複数の相互排他操作に分割します。たとえば、AWS CLI を使用して aws s3 cpaws s3 mvaws s3 sync などの並列インスタンスを複数実行します。--exclude および--include パラメータを使用して操作をファイル名でフィルターすると、より多くのアップロードスレッドを作成できます。

注: --exclude および --include パラメータはクライアント側で処理されるため、ローカルマシン上のリソースにより、操作のパフォーマンスが影響を受ける可能性があります。

あるバケットから別のバケットに大量のデータをコピーするには、次のコマンドを実行します。

注: ファイル名は数字で始まります。

  1. 次の cp コマンドを実行し、0 ~ 4 の数字で始まる名前のファイルをコピーします。

    aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"
    
  2. 2 番目の AWS CLI 操作で次の cp コマンドを実行し、5 ~ 9 の数字で始まる名前のファイルをコピーします。

    aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"
    

次の AWS CLI S3 設定値をカスタマイズしても、データ転送時間を短縮できます。

  • multipart_chunksize では、AWS CLI が個々のファイルのマルチパートアップロードでアップロードする各パートのサイズを設定します。大きなファイルを小さなパートに分割することで、アップロード速度を高速化できます。
    注: マルチパートアップロードでは、単一のファイルを最大 10,000 個の別々のパートに分けてアップロードできます。設定するチャンクサイズで、パーツファイルのサイズとパーツ数のバランスが取れていることを確認してください。
  • max_concurrent_requests では、Amazon S3 に一度に送信できるリクエストの数を設定します。デフォルト値は 10 ですが、これよりも高い値にすることもできます。お使いのマシンに、同時リクエストの最大数をサポートするのに十分なリソースがあることを確認してください。

CRR または SSR

ソースバケットに CRR または SSR を設定し、Amazon S3 がソースバケットからターゲットバケットに新しいオブジェクトを自動的にレプリケートできるようにします。Amazon S3 が複製するオブジェクトを絞り込むには、プレフィックスまたはタグを使用します。詳しくは、「レプリケーション構成ファイルの要素」を参照してください。

レプリケーションを設定した後は、Amazon S3 は既存のオブジェクトではなく、新しいオブジェクトのみを宛先バケットにレプリケートします。詳細については、「バッチレプリケーションを使用して既存オブジェクトを複製する」および「レプリケーション構成で複製されないもの」を参照してください。

Amazon S3 Batch Operations

Amazon S3 Batch Operations を使用すると、1 回のリクエストで複数のオブジェクトをコピーできます。バッチオペレーションジョブを作成する際に、Amazon S3 インベントリレポートを使用すると、Amazon S3 が操作を実行する対象のオブジェクトを指定できます。CSV 形式のマニフェストを使用してもバッチジョブを指定できます。その後、Amazon S3 Batch Operations は API を呼び出して操作を実行します。

バッチペレーションジョブが完了すると、通知および、オプションの完了レポートが表示されます。

Amazon EMR と S3DistCp の併用

Amazon EMR の S3DistCp 操作では、複数 Amazon S3 バケットにわたり、多数のオブジェクトを並行してコピーできます。S3DistCp はまず、ソースバケットから Amazon EMR クラスター内のワーカーノードにファイルをコピーします。次に、この操作はワーカーノードから宛先バケットにファイルを書き込みます。詳細については、「Amazon EMR で S3DistCp を使用して HDFS と Amazon S3 の間でデータを効率的に移動するための 7 つのヒント」を参照してください。

重要: Amazon EMR を S3DistCp と併用する必要があるため、Amazon EMR の料金を必ず確認してください。

AWS DataSync

AWS DataSync を使用して、ある Amazon S3 バケットから別のバケットに大量のデータを移動するには、転送場所を作成する必要があります。汎用バケットについては、「Amazon S3 汎用バケット用の転送場所を作成する」を参照してください。Outpost バケットについては、「Outposts バケットに S3 用の転送場所を作成する」を参照してください。

注:

関連情報

Amazon S3 のデータ転送コストを確認する方法を教えてください

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