オブジェクトのディレクトリバケットへのコピー - Amazon Simple Storage Service

オブジェクトのディレクトリバケットへのコピー

コピーオペレーションを行うと、Amazon S3 内に既に格納されているオブジェクトのコピーが作成されます。ディレクトリバケットと汎用バケット間でオブジェクトをコピーできます。また、単一のバケット内または同じタイプのバケット間でオブジェクトをコピーすることもできます。例えば、ディレクトリバケットからディレクトリバケットへとオブジェクトをコピーできます。

1 回のアトミックオペレーションでコピーできるオブジェクトのサイズは最大 5 GB です。5 GB を超えるオブジェクトをコピーする場合は、マルチパートアップロード API オペレーションを使用する必要があります。詳細については、「ディレクトリバケットでのマルチパートアップロードの使用」を参照してください。

アクセス許可

これを実行するには、次のアクセス許可が必要です。

  • あるディレクトリバケットから別のディレクトリバケットにオブジェクトをコピーするには、s3express:CreateSession アクセス許可が必要です。

  • ディレクトリバケットから汎用バケットにオブジェクトをコピーするには、コピー先バケットにオブジェクトコピーを書き込む s3express:CreateSession アクセス許可と s3:PutObject アクセス許可が必要です。

  • 汎用バケットからディレクトリバケットにオブジェクトをコピーするには、s3express:CreateSession アクセス許可とコピーされるソースオブジェクトを読み取る s3:GetObject アクセス許可が必要です。

    詳細については、「Amazon Simple Storage Service API リファレンス」の「CopyObject」を参照してください。

暗号化

Amazon S3 は、S3 バケットにコピーされたすべての新しいオブジェクトを自動的に暗号化します。S3 バケットのデフォルトの暗号化設定は常に有効になっており、最低でも Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) に設定されています。

ディレクトリバケットでは、SSE-S3 のみがサポートされています。汎用バケットの場合、SSE-S3 (デフォルト)、AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS)、AWS KMS キーを使用した二層式サーバー側の暗号化 (DSSE-KMS)、またはお客様が用意したキーによるサーバー側の暗号化 (SSE-C) を使用できます。

ディレクトリバケットの SSE-C、SSE-KMS、または DSSE-KMS パラメータをソースまたは送信先として設定するコピーリクエストを実行すと、応答でエラーが返されます。

タグ

ディレクトリバケットは タグをサポートしていません。タグ付きのオブジェクトを汎用バケットからディレクトリバケットにコピーすると、HTTP 501 (Not Implemented) の応答が返されます。詳細については、「Amazon Simple Storage Service API リファレンス」の「CopyObject」を参照してください。

ETag

S3 Express One Zone のエンティティタグ (ETag) はランダムな英数字文字列であり、MD5 チェックサムではありません。オブジェクトの整合性を確保するには、追加のチェックサムを使用します。

追加のチェックサム

S3 Express One Zone では、アップロードまたはダウンロード中にデータを検証するために使用されるチェックサムアルゴリズムを選択するオプションが提供されます。CRC32、CRC32C、SHA-1、SHA-256 などのセキュアハッシュアルゴリズム (SHA) や巡回冗長検査 (CRC) データ整合性チェックアルゴリズムのいずれかを選択できます。MD5 ベースのチェックサムは S3 Express One Zone ストレージクラスではサポートされていません。

詳細については、「S3 の追加のチェックサムのベストプラクティス」を参照してください。

サポートされている機能

S3 Express One Zone でサポートされている Amazon S3 機能については、「S3 Express One Zone の違いとは」を参照してください。

汎用バケットまたはディレクトリバケットからディレクトリバケットにオブジェクトをコピーするには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 左側のナビゲーションペインで、[バケット] を選択します。

  3. オブジェクトのコピー元のバケットを次のとおり選択します。

    • 汎用バケットからコピーするには、[汎用バケット] タブをクリックします。

    • ディレクトリバケットからコピーするには、[ディレクトリバケット] タブをクリックします。

  4. コピーするオブジェクトが含まれる汎用バケットまたはディレクトリバケットを選択します。

  5. [オブジェクト] タブを選択します。[オブジェクト] ページで、コピーするオブジェクトの名前の左にあるチェックボックスをオンにします。

  6. [Actions (アクション)] メニューで [Copy (コピー)] を選択します。

    [コピー] ページが表示されます。

  7. [送信先] で、送信先タイプに [ディレクトリバケット] を選択します。送信先パスを指定するには、[S3 の参照] を選択し、送信先に移動して、送信先の左側にあるオプションボタンを選択します。右下の [Choose destination] (送信先を選択する) を選択します。

    または、送信先パスを入力します。

  8. [チェックサム] で、既存のチェックサム関数を使用してオブジェクトをコピーするか、既存のチェックサム関数を新しいチェックサム関数に置き換えるかを選択します。オブジェクトをアップロードしたとき、データの整合性を検証するために使用されたチェックサムアルゴリズムを指定するオプションがありました。オブジェクトをコピーするとき、新しい関数を選択するオプションがあります。最初に追加のチェックサムを指定しなかった場合は、[チェックサム] セクションを使用してチェックサムを追加できます。

    注記

    同じチェックサム関数を使用することにした場合でも、オブジェクトサイズが 16 MB を超えると、チェックサム値が変更されることがあります。チェックサム値は、マルチパートアップロードのチェックサムの計算方法によって変わる可能性があります。オブジェクトをコピーするときのチェックサムの変更については、「マルチパートアップロードにパートレベルのチェックサムを使用する」を参照してください。

    チェックサム関数を変更するには、[Replace with a new checksum function] (新しいチェックサム関数で置き換える) を選択します。ドロップダウンリストから新しいチェックサム関数を選択します。オブジェクトがコピーされると、指定されたアルゴリズムを使用して新しいチェックサムが計算され、保存されます。

  9. 右下の [Copy] (コピー) を選択します。Amazon S3 によってオブジェクトがコピー先にコピーされます。

ディレクトリバケットから汎用バケットにオブジェクトをコピーするには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 左側のナビゲーションペインで、[バケット] を選択します。

  3. [ディレクトリバケット] タブをクリックします。

  4. コピーするオブジェクトが含まれるディレクトリバケットを選択します。

  5. [オブジェクト] タブを選択します。[オブジェクト] ページで、コピーするオブジェクトの名前の左にあるチェックボックスをオンにします。

  6. [Actions (アクション)] メニューで [Copy (コピー)] を選択します。

  7. [送信先] で、送信先に [汎用バケット] を選択します。送信先パスを指定するには、[S3 の参照] を選択し、送信先に移動して、送信先の左側にあるオプションボタンを選択します。右下の [Choose destination] (送信先を選択する) を選択します。

    または、送信先パスを入力します。

  8. [チェックサム] で、既存のチェックサム関数を使用してオブジェクトをコピーするか、既存のチェックサム関数を新しいチェックサム関数に置き換えるかを選択します。オブジェクトをアップロードしたとき、データの整合性を検証するために使用されたチェックサムアルゴリズムを指定するオプションがありました。オブジェクトをコピーするとき、新しい関数を選択するオプションがあります。最初に追加のチェックサムを指定しなかった場合は、[チェックサム] セクションを使用してチェックサムを追加できます。

    注記

    同じチェックサム関数を使用することにした場合でも、オブジェクトサイズが 16 MB を超えると、チェックサム値が変更されることがあります。チェックサム値は、マルチパートアップロードのチェックサムの計算方法によって変わる可能性があります。オブジェクトをコピーするときのチェックサムの変更については、「マルチパートアップロードにパートレベルのチェックサムを使用する」を参照してください。

    チェックサム関数を変更するには、[Replace with a new checksum function] (新しいチェックサム関数で置き換える) を選択します。ドロップダウンリストから新しいチェックサム関数を選択します。オブジェクトがコピーされると、指定されたアルゴリズムを使用して新しいチェックサムが計算され、保存されます。

  9. 右下の [Copy] (コピー) を選択します。Amazon S3 によってオブジェクトがコピー先にコピーされます。

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

次の copy-object コマンド例は、AWS CLI を使用して、オブジェクトをあるバケットから別のバケットにコピーする方法を示しています。複数のバケットタイプ間でオブジェクトをコピーできます。このコマンドを実行するには、ユーザー入力プレースホルダーをユーザー自身の情報に置き換えます。

aws s3api copy-object --copy-source bucket SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

詳細については、AWS CLI コマンドリファレンスcopy-object を参照してください。