ある Amazon Simple Storage Service (S3) バケットから別の S3 バケットに、使用しているすべてのオブジェクトを移動する必要があります。S3 バケットの間でオブジェクトを移動するにはどうしたらよいですか?

ある S3 バケットから別のバケットにオブジェクトをコピーするには、以下のステップに従います。

1.    新しい S3 バケットを作成します。

2.    AWS コマンドラインインターフェイス (CLI) をインストールおよび設定します。

3.    S3 バケット間でオブジェクトをコピーします。

4.    オブジェクトがコピーされたことを確認する.

5.    既存の API コールを新しいバケット名に更新します。

始める前に、AWS CLI をチューニングして同時性を高め、同期プロセスのパフォーマンスを向上させることを考慮してください。設定オプションの詳細については、「AWS CLI S3 Configuration (AWS CLI S3 の設定)」を参照してください。データ転送の料金の詳細については、「料金」を参照してください。

S3 バケットに多数のオブジェクト (1,000 万以上のオブジェクト) が存在する場合には、Amazon S3 インベントリレポートと Amazon CloudWatch を使用したメトリクスのモニタリングを使用して、コピーされたオブジェクトを確認するためのコストとパフォーマンスを最適化することを考慮してください。また、S3 バケットのパフォーマンスを最適化するために、異なるプレフィックスに対して sync コマンドを分割することもできます。ワークロードのパフォーマンス最適化の詳細については、「リクエスト率およびリクエストパフォーマンスに関する留意事項」を参照してください。

新しい S3 バケットを作成する

1.    Amazon S3 コンソールを開きます。

2.    [Create Bucket (バケットを作成)] を選択します。

3.    新しいバケットのために DNS 準拠の名前を選択します。

4.    自分の AWS リージョンを選択します。
注記: リージョンを越えるトラフィックのためにパフォーマンス上の問題が発生するのを避けるため、新しいバケットはソースのバケットと同じリージョンに作成するのがベストプラクティスです。

5.    必要であれば、[Copy settings from an existing bucket (既存のバケットから設定をコピーする)] を選択して、ソースバケットの設定をミラーリングします。

AWS コマンドラインインターフェイス (AWS CLI) をインストールおよび設定する

1.    AWS コマンドラインインターフェイスをインストールします

2.    次のコマンドを実行して、AWS CLI を設定します。

aws configure

3.    アクセスキー (アクセスキー ID とシークレットアクセスキー) を入力します。

4.    Enter を押して、デフォルトのリージョンオプションとデフォルトの出力オプションをスキップします。リージョンパラメータの詳細については、Amazon S3 用の AWS のリージョンとエンドポイントを参照してください。
注記: AWS CLI の出力は JSON、テキスト、またはテーブルですが、すべてのコマンドが各タイプの出力をサポートしているわけではありません。コマンド出力が選択されたフォーマットをサポートしていない場合、デフォルトとして独自のフォーマットで出力します。詳細については、「AWS Command Line Interface からのコマンド出力の制御」を参照してください。

S3 バケット間でオブジェクトをコピーする

1.    Amazon Glacier にアーカイブされた S3 オブジェクトがある場合には、Amazon Glacier に保存されているオブジェクトをレストアします

2.    次の sync コマンドを実行して、ソースとターゲットの間でオブジェクトをコピーします。

aws s3 sync s3://SOURCE_BUCKET_NAME s3://NEW_BUCKET_NAME

注記: コマンドは、ターゲットとソースのバケット名に合わせて修正してください。

sync コマンドは CopyObject API を使用して S3 バケット間でオブジェクトの移動を行います。sync コマンドはソースとターゲットのバケットのリストを作成して、ソースにはあるもののターゲットバケットには存在しないオブジェクトを識別します。または、ターゲットバケットのオブジェクトとは異なる LastModified 日付を持つソースバケットのオブジェクトを識別します。バージョンの存在するバケットコピーに対して sync コマンドを実行すると、オブジェクトの現在のバージョンだけがコピーされます。以前のバージョンのものはコピーされません。デフォルトでは、これによりオブジェクトのメタデータは保たれます。しかし、AWS アカウントではアクセス制御リストが (ACL) が FULL_CONTROL に設定されているので、追加の ACL は削除されます。オペレーションが失敗した場合には、sync コマンドをもう一度実行できます。以前にコピーされたオブジェクトは複製されません。

オブジェクトがコピーされたことを確認する

1.    次のコマンドを実行して、ソースとターゲットバケットの内容を確認します。

aws s3 ls --recursive s3://SOURCE_BUCKET_NAME --summarize > bucket-contents-source.txt 
aws s3 ls --recursive s3://NEW_BUCKET_NAME --summarize > bucket-contents-new.txt

注記: コマンドは、ソースとターゲットのバケット名に合わせて修正してください。

2.    AWS CLI ディレクトリにあるファイルに保存された出力を用いて、ソースとターゲットバケットのオブジェクトを比較します。次の出力例をご覧ください。

$ aws s3 ls --recursive s3://BUCKETNAME --summarize
2017-11-20 21:17:39      15362 s3logo.png

  Total Objects: 1        Total Size: 15362

既存の API コールを新しいバケット名に更新する

既存のアプリケーションまたはワークロードを、新しいバケット名を使用するように更新します。頻繁に書き込みを行った場合、ソースとターゲットバケットの間の矛盾に対応するため、sync コマンドを実行することが必要になる場合があります。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 1 月 23 日

更新: 2018 年 7 月 2 日