ある 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 cp、aws s3 mv、aws s3 sync などの並列インスタンスを複数実行します。--exclude および--include パラメータを使用して操作をファイル名でフィルターすると、より多くのアップロードスレッドを作成できます。
注: --exclude および --include パラメータはクライアント側で処理されるため、ローカルマシン上のリソースにより、操作のパフォーマンスが影響を受ける可能性があります。
あるバケットから別のバケットに大量のデータをコピーするには、次のコマンドを実行します。
注: ファイル名は数字で始まります。
-
次の 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 番目の 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 のデータ転送コストを確認する方法を教えてください