オブジェクトのコピー
コピーオペレーションを行うと、Amazon S3 内に既に格納されているオブジェクトのコピーが作成されます。
1 回のアトミックオペレーションでコピーできるオブジェクトのサイズは最大 5 GB です。5 GB を超えるオブジェクトをコピーする場合は、マルチパートアップロード API を使用する必要があります。
CopyObject
オペレーションを使用すると、以下のことができます。
-
オブジェクトの追加コピーを作成する
-
オブジェクトをコピーし、元のオブジェクトを削除することで、オブジェクトの名前を変更する
-
Amazon S3 のロケーション (us−west−1 や Europe など) 間でオブジェクトを移動する
-
オブジェクトメタデータを変更する
各 Amazon S3 オブジェクトにはメタデータがあります。メタデータは名前と値のペアのセットです。オブジェクトメタデータは、オブジェクトをアップロードするときに設定できます。オブジェクトのアップロード後にはオブジェクトメタデータは変更できません。オブジェクトメタデータを変更する唯一の方法は、オブジェクトのコピーを作成し、メタデータを設定することです。コピーオペレーションでは、コピー元とコピー先として同じオブジェクトを設定します。
各オブジェクトはメタデータを持ちます。システムメタデータの場合もあれば、ユーザー定義メタデータの場合もあります。ユーザーはオブジェクトに対して使用するストレージクラス設定など一部のシステムメタデータを制御でき、サーバー側の暗号化を設定できます。オブジェクトをコピーするときは、ユーザーが制御するシステムメタデータとユーザー定義メタデータもコピーされます。システムが制御するメタデータは Amazon S3 によってリセットされます。たとえば、オブジェクトをコピーすると、コピーしたオブジェクトの作成日が Amazon S3 によってリセットされます。コピーリクエストの中でこのような値を設定する必要は一切ありません。
オブジェクトをコピーするときは、一部のメタデータ値を更新することができます。例えば、コピー元のオブジェクトが S3 標準ストレージを使用するように設定されている場合、オブジェクトコピーに S3 Intelligent-Tiering を使用することができます。また、コピー元のオブジェクトに存在するユーザー定義メタデータの一部を変更することもできます。オブジェクトのユーザー設定可能なメタデータ (システムまたはユーザー定義) をコピー時に更新する場合、メタデータ値の 1 つだけを変更する場合でも、コピー元オブジェクトに存在するすべてのユーザー設定可能メタデータをリクエスト内で明示的に指定する必要があります。
オブジェクトメタデータの詳細については、オブジェクトメタデータの使用 を参照してください。
注記
-
ロケーション間でオブジェクトをコピーすると、帯域料金が発生します。
-
ソースオブジェクトが S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive にアーカイブされている場合は、オブジェクトを他のバケットにコピーする前に、一時コピーを復元する必要があります。オブジェクトのアーカイブについては、S3 Glacier Flexible Retrieval と S3 Glacier Deep Archive ストレージクラスへの移行 (オブジェクトのアーカイブ) を参照してください。
-
Amazon S3 コンソールでは、S3 Glacier Flexible Retrieval ストレージクラスまたは S3 Glacier Deep Archive ストレージクラスのオブジェクトに対する、復元したオブジェクトのコピー操作はサポートされていません。このタイプのコピー操作には、AWS Command Line Interface (AWS CLI)、AWS SDK、または REST API を使用します。
Amazon S3 は、S3 バケットにコピーされたすべての新しいオブジェクトを自動的に暗号化します。コピーリクエストで暗号化情報を指定しない場合、ターゲットオブジェクトの暗号化設定は送信先バケットのデフォルトの暗号化設定に設定されます。デフォルトでは、すべてのバケットには、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用します。送信先バケットに AWS Key Management Service (AWS KMS) キー (SSE-KMS) によるサーバー側の暗号化またはお客様が指定した暗号化キー (SSE-C) を使用するデフォルトの暗号化設定がある場合、Amazon S3 は対応する KMS キーまたはお客さんが指定したキーを使用してターゲットオブジェクトのコピーを暗号化します。オブジェクトをコピーするときに、ターゲットオブジェクトで別の暗号化設定を使用する場合は、Amazon S3 に対し、KMS キー、Amazon S3 マネージドキー、またはお客様が指定したキーでターゲットオブジェクトを暗号化するようリクエストできます。リクエストの暗号化設定が送信先バケットのデフォルトの暗号化設定と異なる場合は、リクエストの暗号化設定が優先されます。コピー元のオブジェクトが SSE-C を使用して Amazon S3 に保存されている場合、Amazon S3 がコピー用のオブジェクトを復号化できるように、リクエストに必要な暗号化情報を提供する必要があります。詳細については、「暗号化によるデータの保護」を参照してください。
オブジェクトをコピーするとき、オブジェクトに対して別のチェックサムアルゴリズムを使用するように選択できます。同じアルゴリズムを使用するか、新しいアルゴリズムを使用するかにかかわらず、Amazon S3 はオブジェクトのコピー後に新しいチェックサム値を計算します。Amazon S3 は、チェックサムの値を直接コピーしません。マルチパートアップロードを使用してロードされたオブジェクトのチェックサム値が変更される場合があります。チェックサムの計算方法の詳細については、「マルチパートアップロードにパートレベルのチェックサムを使用する」を参照してください。
1 つのリクエストで複数の Amazon S3 オブジェクトをコピーするには、Amazon S3 バッチオペレーションを使用できます。S3 バッチオペレーションには、オペレーションターゲットのオブジェクトのリストを指定します。S3 バッチオペレーションは、各 API オペレーションを呼び出して、指定されたオペレーションを実行します。1 つのバッチオペレーションジョブで、エクサバイトのデータを含む数十億ものオブジェクトに対して、指定されたオペレーションを実行できます。
S3 バッチオペレーション機能は、進捗状況の追跡、通知の送信、すべてのアクションの詳細な完了レポートの保存を行い、フルマネージドの監査可能なサーバーレスエクスペリエンスを提供します。S3 バッチオペレーションは、Amazon S3 コンソール、AWS CLI、AWS SDK、または REST API を通じて使用できます。詳細については、「S3 バッチ操作の基本」を参照してください。
注記
Amazon S3 Express One Zone ストレージクラスをディレクトリバケットで使用する方法の詳細については、「S3 Express One Zone とは」と「ディレクトリバケット」を参照してください。オブジェクトをディレクトリバケットにコピーする方法の詳細については、「オブジェクトのディレクトリバケットへのコピー」を参照してください。
オブジェクトをコピーするには
オブジェクトをコピーするには、以下のメソッドを使用します。
Amazon S3 コンソールで、オブジェクトをコピーまたは移動できます。詳細については、次の手順を参照してください。
注記
-
お客様が用意した暗号化キー (SSE−C) で暗号化されたオブジェクトを、S3 コンソールを使用してコピーまたは移動することはできません。SSE−C で暗号化されたオブジェクトをコピーまたは移動するには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
-
Amazon S3 コンソールを使用してオブジェクトをコピーする場合は、アクセス許可
s3:ListAllMyBuckets
を付与する必要があります。コピー操作を検証するには、コンソールにこのアクセス許可が必要です。 -
AWS KMS の暗号化されたオブジェクトのクロスリージョンコピーは、Amazon S3 コンソールではサポートされていません。
オブジェクトをコピーするには
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
コピーするオブジェクトを含む Amazon S3 バケットまたはフォルダに移動します。
-
コピーするオブジェクトの名前の左にあるチェックボックスをオンにします。
-
[Actions (アクション)] を選択し、表示されるオプションのリストから [Copy (コピー)] を選択します。
または、右上のオプションから [Copy] (コピー) を選択します。
-
送信先タイプと送信先アカウントを選択します。送信先パスを指定するには、[Browse S3 (S3 の参照)] を選択し、送信先に移動して、送信先の左側にあるチェックボックスをオンにします。右下の [Choose destination] (送信先を選択する) を選択します。
または、送信先パスを入力します。
-
バケットのバージョニングが有効になっていない場合は、同じ名前の既存のオブジェクトが上書きされることを確認するように求められる場合があります。上書きされてもよい場合は、チェックボックスを選択して続行します。このバケットのオブジェクトの全バージョンを保持する場合は、[Enable Bucket Versioning] (バケットのバージョニングを有効にする) をクリックします。デフォルトの暗号化プロパティと S3 オブジェクトロックプロパティを更新することもできます。
-
[Additional checksums] (追加のチェックサム) で、既存のチェックサム関数を使用してオブジェクトをコピーするか、既存のチェックサム関数を新しいチェックサム関数に置き換えるかを選択します。オブジェクトをアップロードしたとき、データの整合性を検証するために使用されたチェックサムアルゴリズムを指定するオプションがありました。オブジェクトをコピーするとき、新しい関数を選択するオプションがあります。最初に追加のチェックサムを指定しなかった場合は、コピーオプションのこのセクションを使用して追加できます。
注記
同じチェックサム関数を使用することを選択した場合でも、オブジェクトをコピーして、サイズが 16 MB を超えると、チェックサム値が変更されることがあります。チェックサム値は、マルチパートアップロードのチェックサムの計算方法によって変わる可能性があります。オブジェクトをコピーするときのチェックサムの変更については、「マルチパートアップロードにパートレベルのチェックサムを使用する」を参照してください。
チェックサム関数を変更するには、[Replace with a new checksum function] (新しいチェックサム関数で置き換える) を選択します。ボックスから新しいチェックサム関数を選択します。オブジェクトがコピーされると、指定されたアルゴリズムを使用して新しいチェックサムが計算され、保存されます。
-
右下の [Copy] (コピー) を選択します。Amazon S3 によってオブジェクトがコピー先にコピーされます。
オブジェクトを移動するには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
移動するオブジェクトが含まれている Amazon S3 のバケットまたはフォルダに移動します。
-
移動するオブジェクトの名前の左にあるチェックボックスをオンにします。
-
[Actions (アクション)] を選択し、表示されるオプションのリストから [Move (移動)] を選択します。
または、右上のオプションから [Move] (移動) を選択します。
-
送信先パスを指定するには、[Browse S3 (S3 の参照)] を選択し、送信先に移動して、送信先の左側にあるチェックボックスをオンにします。右下の [Choose destination] (送信先を選択する) を選択します。
または、送信先パスを入力します。
-
バケットのバージョニングが有効になっていない場合は、同じ名前の既存のオブジェクトが上書きされることを確認するように求められる場合があります。上書きされてもよい場合は、チェックボックスを選択して続行します。このバケットのオブジェクトの全バージョンを保持する場合は、[Enable Bucket Versioning] (バケットのバージョニングを有効にする) をクリックします。デフォルトの暗号化プロパティとオブジェクトロックプロパティを更新することもできます。
-
右下の [Move] (移動) を選択します。Amazon S3 は、オブジェクトを移動先に移動します。
注記
-
このアクションでは、更新された設定で指定されたすべてのオブジェクトのコピーが作成されます。また、指定された場所の最終更新日が更新され、元のオブジェクトに削除マーカーが追加されます。
-
フォルダを移動するときは、移動アクションが完了するのを待ってから、フォルダをさらに変更してください。
-
このアクションは、バケットのバージョニング、暗号化、オブジェクトロック機能、アーカイブされたオブジェクトのメタデータを更新します。
このセクションの例は、1 回のオペレーションで最大 5 GB のオブジェクトをコピーする方法を示しています。5 GB を超えるオブジェクトをコピーする場合は、マルチパートアップロード API を使用する必要があります。詳細については、マルチパートアップロードを使用したオブジェクトのコピー を参照してください。
次の例では、REST を使用してオブジェクトをコピーする方法について説明します。REST API の詳細については、PUT Object (Copy) を参照してください。
このサンプルは、flotsam
オブジェクト (pacific
バケット) を jetsam
オブジェクト (atlantic
バケット) にコピーし、そのメタデータを維持します。
PUT /jetsam HTTP/1.1 Host: atlantic.s3.amazonaws.com x-amz-copy-source: /pacific/flotsam Authorization: AWS AKIAIOSFODNN7EXAMPLE:ENoSbxYByFA0UGLZUqJN5EUnLDg= Date: Wed, 20 Feb 2008 22:12:21 +0000
署名は次の情報から生成されています。
PUT\r\n \r\n \r\n Wed, 20 Feb 2008 22:12:21 +0000\r\n x-amz-copy-source:/pacific/flotsam\r\n /atlantic/jetsam
Amazon S3 から、オブジェクトの ETag と最終変更日を示す次のレスポンスが返されます。
HTTP/1.1 200 OK x-amz-id-2: Vyaxt7qEbzv34BnSu5hctyyNSlHTYZFMWK4FtzO+iX8JQNyaLdTshL0KxatbaOZt x-amz-request-id: 6B13C3C5B34AF333 Date: Wed, 20 Feb 2008 22:13:01 +0000 Content-Type: application/xml Transfer-Encoding: chunked Connection: close Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult> <LastModified>2008-02-20T22:13:01</LastModified> <ETag>"7e9c608af58950deeb370c98608ed097"</ETag> </CopyObjectResult>
また、AWS Command Line Interface (AWS CLI) を使用して、S3 バケットを作成することもできます。詳細については、「AWS CLI コマンドリファレンス」の「copy-object
AWS CLI の詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS Command Line Interface とは」を参照してください。