オブジェクトのコピー、移動、名前の変更
CopyObject
オペレーションを使用すると、Amazon S3 内に既に保存されているオブジェクトのコピーを作成できます。
1 回のアトミックオペレーションでコピーできるオブジェクトのサイズは最大 5 GB です。ただし、5 GB を超えるオブジェクトをコピーする場合は、AWS CLI または AWS SDK を使用してマルチパートアップロード API を使用する必要があります。詳細については、「マルチパートアップロードを使用したオブジェクトのコピー」を参照してください。
CopyObject
オペレーションを使用すると、以下のことができます。
-
オブジェクトの追加のコピーを作成します。
-
オブジェクトをコピーし、元のオブジェクトを削除して、オブジェクトの名前を変更します。
-
複数の AWS リージョン 間 (
us-west-1
からeu-west-2
へなど) を含め、オブジェクトをあるバケットから別のバケットにコピーしたり、移動したりします。オブジェクトを移動する場合、Amazon S3 はオブジェクトを指定されたコピー先にコピーしてから、コピー元のオブジェクトを削除します。注記
AWS リージョン 間でオブジェクトをコピーすると、帯域コストが発生します。詳細については、Amazon S3 の料金
を参照してください。 -
オブジェクトのメタデータを変更する 各 Amazon S3 オブジェクトにはメタデータがあります。このメタデータは、名前と値のペアのセットです。オブジェクトメタデータは、オブジェクトをアップロードする際に設定できます。オブジェクトのアップロード後にオブジェクトメタデータを変更することはできません。オブジェクトメタデータを変更する唯一の方法は、オブジェクトのコピーを作成し、メタデータを設定することです。これを行うには、コピーオペレーションで、コピー元とコピー先として同じオブジェクトを指定します。
オブジェクトのメタデータによっては、システムメタデータであったり、ユーザー定義メタデータである場合もあります。システムメタデータによっては、制御できます。例えば、オブジェクトに使用するストレージクラスやサーバー側の暗号化の種類を制御できます。オブジェクトをコピーするときは、ユーザーが制御するシステムメタデータとユーザー定義メタデータもコピーされます。システムが制御するメタデータは Amazon S3 によってリセットされます。たとえば、オブジェクトをコピーすると、コピーしたオブジェクトの作成日が Amazon S3 によってリセットされます。コピーリクエストでは、このようなシステム制御のメタデータ値を設定する必要はありません。
オブジェクトをコピーするときは、一部のメタデータ値を更新することができます。例えば、コピー元のオブジェクトが S3 標準ストレージを使用するように設定されている場合、オブジェクトコピーに S3 Intelligent-Tiering を使用することができます。また、コピー元のオブジェクトに存在するユーザー定義メタデータの一部を変更することもできます。オブジェクトのユーザー設定可能なメタデータ (システムまたはユーザー定義) をコピー時に更新する場合、メタデータ値の 1 つだけを変更する場合でも、コピー元オブジェクトに存在するすべてのユーザー設定可能メタデータをリクエスト内で明示的に指定する必要があります。
オブジェクトメタデータの詳細については、オブジェクトメタデータの使用 を参照してください。
アーカイブされたオブジェクトや復元されたオブジェクトのコピー
ソースオブジェクトが 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、または Amazon S3 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 オブジェクトをコピーするには、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」と「ディレクトリバケットの概要」を参照してください。
オブジェクトをコピーするには
オブジェクトをコピーするには、以下のメソッドを使用します。
注記
コンソールでオブジェクトをコピーする際の制約と制限は次のとおりです。
-
オブジェクトが 5 GB 未満の場合は、オブジェクトをコピーできます。オブジェクトが 5 GB を超える場合は、AWS CLI または AWS SDK を使用してオブジェクトをコピーする必要があります。
-
オブジェクトのコピーに必要な追加のアクセス許可のリストについては、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。このアクセス許可を付与するポリシーの例については、「Amazon S3 のアイデンティティベースのポリシー例」を参照してください。
-
この
Copy
アクションは、指定されたフォルダ (プレフィックス) 内のすべてのオブジェクトに適用されます。アクションの進行中にこれらのフォルダに追加されたオブジェクトが影響を受ける可能性があります。 -
SSE-KMS で暗号化されたオブジェクトのクロスリージョンコピーは、Amazon S3 コンソールではサポートされていません。SSE-KMS で暗号化されたオブジェクトをリージョン間でコピーするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
-
お客様が提供する暗号化キー (SSE−C) で暗号化されたオブジェクトは、S3 コンソールを使用してコピーすることはできません。SSE−C で暗号化されたオブジェクトをコピーするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
-
コピーされたオブジェクトは、元のオブジェクトの Object Lock 設定を保持しません。
-
オブジェクトのコピー元のバケットが S3 オブジェクト所有者にバケット所有者強制設定を使用している場合、オブジェクト ACL は指定された宛先にコピーされません。
-
S3 オブジェクト所有者にバケット所有者強制設定を使用するバケットにオブジェクトをコピーする場合は、ソースバケットでもバケット所有者強制設定が使用されていることを確認するか、他の AWS アカウントおよびグループへのオブジェクト ACL 許可を削除します。
オブジェクトをコピーするには
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
左側のナビゲーションペインで [バケット] を選択してから、[汎用バケット] タブをクリックします。コピーするオブジェクトを含む Amazon S3 バケットまたはフォルダに移動します。
-
コピーするオブジェクトの名前の左にあるチェックボックスをオンにします。
-
[アクション] メニューに表示されるオプションのリストから [コピー] を選択します。
-
送信先タイプと送信先アカウントを選択します。送信先パスを指定するには、[S3 の参照] を選択し、送信先に移動して、送信先の左側にあるチェックボックスをオンにします。右下の [Choose destination] (送信先を選択する) を選択します。
または、送信先パスを入力します。
-
バケットバージョニングを有効にしていない場合は、バケットバージョニングを有効にして、オブジェクトを意図しない上書きまたは削除から保護することを推奨する警告が表示されます。このバケットのオブジェクトの全バージョンを保持する場合は、[バケットのバージョニングを有効にする] をクリックします。[宛先の詳細] で、デフォルトの暗号化プロパティと S3 Object Lock プロパティを確認することもできます。
-
[追加のコピー設定] で、[ソース設定をコピー] するか、[設定を指定しない] か、[設定を指定] するかを選択します。[ソース設定をコピー] がデフォルトのオプションです。ソース設定の属性なしでオブジェクトのみをコピーする場合は、[設定を指定しない] を選択します。ストレージクラス、ACL、オブジェクトタグ、メタデータ、サーバー側の暗号化、その他のチェックサムの設定を指定するには、[設定を指定] を選択します。
-
右下の [Copy] (コピー) を選択します。Amazon S3 によってオブジェクトがコピー先にコピーされます。
このセクションの例は、1 回のオペレーションで最大 5 GB のオブジェクトをコピーする方法を示しています。5 GB を超えるオブジェクトをコピーする場合は、マルチパートアップロード API を使用する必要があります。詳細については、「マルチパートアップロードを使用したオブジェクトのコピー」を参照してください。
この例では、Amazon S3 REST API を使用してオブジェクトをコピーする方法について説明します。REST API の詳細については、CopyObject を参照してください。
このサンプルは、flotsam
オブジェクト (
バケット) を amzn-s3-demo-bucket1
jetsam
オブジェクト (
バケット) にコピーし、そのメタデータを維持します。amzn-s3-demo-bucket2
PUT /jetsam HTTP/1.1 Host:
amzn-s3-demo-bucket2
.s3.amazonaws.com x-amz-copy-source: /amzn-s3-demo-bucket1
/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:/
amzn-s3-demo-bucket1
/flotsam\r\n /amzn-s3-demo-bucket2
/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 とは」を参照してください。
オブジェクトを移動するには
オブジェクトを移動するには、次の方法を使用します。
注記
-
オブジェクトが 5 GB 未満の場合は、オブジェクトを移動できます。オブジェクトが 5 GB を超える場合は、AWS CLI または AWS SDK を使用してオブジェクトを移動する必要があります。
-
オブジェクトの移動に必要な追加のアクセス許可のリストについては、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。このアクセス許可を付与するポリシーの例については、「Amazon S3 のアイデンティティベースのポリシー例」を参照してください。
-
お客様が提供する暗号化キー (SSE−C) で暗号化されたオブジェクトは、Amazon S3 コンソールを使用して移動することはできません。SSE-C で暗号化されたオブジェクトを移動するには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
-
フォルダを移動する場合、フォルダをさらに変更するには、移動オペレーションが完了するまで待ちます。
-
Amazon S3 コンソールの 移動オペレーションの移動元または移動先として S3 アクセスポイントのエイリアスを使用することはできません。
オブジェクトを移動するには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
ナビゲーションペインで [バケット] を選択してから、[汎用バケット] タブをクリックします。移動するオブジェクトが含まれている Amazon S3 のバケットまたはフォルダに移動します。
-
移動するオブジェクトのチェックボックスをオンにします。
-
[アクション] メニューで、[移動] を選択します。
-
宛先パスを指定するには、[S3 の参照] を選択し、宛先に移動して、宛先のチェックボックスをオンにします。[コピー先の選択] を選択します。
または、送信先パスを入力します。
-
バケットバージョニングを有効にしていない場合は、バケットバージョニングを有効にして、オブジェクトを意図しない上書きまたは削除から保護することを推奨する警告が表示されます。このバケットのオブジェクトの全バージョンを保持する場合は、[バケットのバージョニングを有効にする] をクリックします。[宛先の詳細] で、デフォルトの暗号化プロパティと Object Lock プロパティを確認することもできます。
-
[追加のコピー設定] で、[ソース設定をコピー] するか、[設定を指定しない] か、[設定を指定] するかを選択します。[ソース設定をコピー] がデフォルトのオプションです。ソース設定の属性なしでオブジェクトのみをコピーする場合は、[設定を指定しない] を選択します。ストレージクラス、ACL、オブジェクトタグ、メタデータ、サーバー側の暗号化、その他のチェックサムの設定を指定するには、[設定を指定] を選択します。
-
右下の [Move] (移動) を選択します。Amazon S3 は、オブジェクトを移動先に移動します。
また、AWS Command Line Interface (AWS CLI) を使用して、S3 バケットを移動することもできます。詳細については、AWS CLI コマンドリファレンスの「mv
AWS CLI の詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS Command Line Interface とは」を参照してください。
オブジェクトの名前を変更するには
オブジェクトの名前を変更するには、以下の手順を使用します。
注記
-
オブジェクトが 5 GB 未満の場合は、オブジェクトの名前を変更できます。5 GB を超えるオブジェクトの名前を変更するには、AWS CLI または AWS SDK を使用して新しい名前でオブジェクトをコピーし、元のオブジェクトを削除する必要があります。
-
オブジェクトのコピーに必要な追加のアクセス許可のリストについては、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。このアクセス許可を付与するポリシーの例については、「Amazon S3 のアイデンティティベースのポリシー例」を参照してください。
-
オブジェクトの名前を変更すると、オブジェクトのコピーが新しい最終更新日で作成され、元のオブジェクトに削除マーカーが追加されます。
-
デフォルトの暗号化のバケット設定が、暗号化されていない指定されたオブジェクトに自動的に適用されます。
-
Amazon S3 コンソールを使用して、顧客が提供した暗号化キー (SSE-C) を使用してオブジェクトの名前を変更することはできません。SSE−C で暗号化されたオブジェクトの名前を変更するには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用して、新しい名前でこれらのオブジェクトをコピーします。
-
このバケットが S3 オブジェクトの所有権のバケット所有者の強制設定を使用している場合、オブジェクトアクセスコントロールリスト (ACL) はコピーされません。
オブジェクトの名前を変更するには
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
ナビゲーションペインで [バケット] を選択してから、[汎用バケット] タブをクリックします。名前を変更するオブジェクトを含む Amazon S3 バケットまたはフォルダに移動します。
-
名前を変更するオブジェクトのチェックボックスをオンにします。
-
[アクション] メニューで [オブジェクトの名前変更] を選択します。
-
[新しいオブジェクト名] ボックスに、オブジェクトの新しい名前を入力します。
-
[追加のコピー設定] で、[ソース設定をコピー] するか、[設定を指定しない] か、[設定を指定] するかを選択します。[ソース設定をコピー] がデフォルトのオプションです。ソース設定の属性なしでオブジェクトのみをコピーする場合は、[設定を指定しない] を選択します。ストレージクラス、ACL、オブジェクトタグ、メタデータ、サーバー側の暗号化、その他のチェックサムの設定を指定するには、[設定を指定] を選択します。
-
[Save changes] (変更の保存) をクリックします。Amazon S3 によりオブジェクトの名前が変更されます。