

# ディレクトリバケットから、またはディレクトリバケットへのオブジェクトのコピー
<a name="directory-buckets-objects-copy"></a>

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

**注記**  
ソースバケットまたは送信先バケットが AWS Local Zone にある場合、異なる AWS リージョン間でのオブジェクトのコピーはサポートされていません。ソースバケットと送信先バケットは、親 AWS リージョンが同じである必要があります。ソースバケットと送信先バケットは、異なるバケットの場所タイプ (アベイラビリティーゾーンまたは Local Zone) にすることができます。

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

**アクセス許可**  
 これを実行するには、次のアクセス許可が必要です。
+ あるディレクトリバケットから別のディレクトリバケットにオブジェクトをコピーするには、`s3express:CreateSession` アクセス許可が必要です。
+ ディレクトリバケットから汎用バケットにオブジェクトをコピーするには、コピー先バケットにオブジェクトコピーを書き込む `s3express:CreateSession` アクセス許可と `s3:PutObject` アクセス許可が必要です。
+ 汎用バケットからディレクトリバケットにオブジェクトをコピーするには、`s3express:CreateSession` アクセス許可とコピーされるソースオブジェクトを読み取る `s3:GetObject` アクセス許可が必要です。

   詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)」を参照してください。

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

ディレクトリバケットでは、SSE-S3 と AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) がサポートされています。レプリケート先バケットがディレクトリバケットの場合、レプリケート先バケットのデフォルトの暗号化では必要な暗号化設定を使用することをお勧めします。また、バケットのデフォルトの暗号化を上書きしないことをお勧めします。その後、新しいオブジェクトは必要な暗号化設定で自動的に暗号化されます。SSE-KMS で暗号化されたオブジェクトを、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) を使用して、汎用バケットからディレクトリバケットへ、ディレクトリバケットから汎用バケットへ、またはディレクトリバケット間でコピーする場合、S3 バケットキーはサポートされません。この場合、KMS で暗号化されたオブジェクトのコピーリクエストが実行されるたびに、Amazon S3 は AWS KMS を呼び出します。ディレクトリバケットの暗号化の上書き動作の詳細については、「[新しいオブジェクトのアップロードに AWS KMS によるサーバー側の暗号化を指定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)」を参照してください。

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

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

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

**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-optimizing-performance.md#s3-express-optimizing-performance-checksums)」を参照してください。

**サポートされている機能**  
S3 Express One Zone でサポートされている Amazon S3 機能については、「[ディレクトリバケットの違い](s3-express-differences.md)」を参照してください。

## S3 コンソールの使用 (ディレクトリバケットへのコピー)
<a name="directory-bucket-copy-console"></a>

**注記**  
コンソールでオブジェクトをディレクトリバケットにコピーする際の制約と制限は次のとおりです。  
`Copy` アクションは、指定されたフォルダ (プレフィックス) 内のすべてのオブジェクトに適用されます。アクションの進行中にこれらのフォルダに追加されたオブジェクトが影響を受ける可能性があります。
お客様が提供する暗号化キー (SSE−C) で暗号化されたオブジェクトは、S3 コンソールを使用してコピーすることはできません。SSE−C で暗号化されたオブジェクトをコピーするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
コピーされたオブジェクトは、元のオブジェクトの Object Lock 設定を保持しません。
オブジェクトのコピー元のバケットが S3 オブジェクト所有者にバケット所有者強制設定を使用している場合、オブジェクト ACL は指定された宛先にコピーされません。
S3 オブジェクト所有権にバケット所有者強制設定を使用するバケットにオブジェクトをコピーする場合は、ソースバケットでもバケット所有者強制設定が使用されていることを確認するか、他の AWS アカウントおよびグループへのオブジェクト ACL 許可を削除します。
汎用バケットからディレクトリバケットにコピーされたオブジェクトは、オブジェクトタグ、ACLまたは Etag 値を保持しません。チェックサム値はコピーできますが、Etag と同等ではありません。チェックサム値は、追加時と異なる場合があります。
 ディレクトリバケットにコピーされたすべてのオブジェクトは、S3 オブジェクト所有権のバケット所有者強制設定になります。

**汎用バケットまたはディレクトリバケットからディレクトリバケットにオブジェクトをコピーするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、オブジェクトのコピー元のバケットタイプ:
   + 汎用バケットからコピーするには、**[汎用バケット]** タブをクリックします。
   + ディレクトリバケットからコピーするには、**[ディレクトリバケット]** タブをクリックします。

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

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

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

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

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

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

1. **[追加のコピー設定]** で、**[ソース設定をコピー]** するか、**[設定を指定しない]** か、**[設定を指定]** するかを選択します。**[ソース設定をコピー]** がデフォルトのオプションです。ソース設定の属性なしでオブジェクトのみをコピーする場合は、**[設定を指定しない]** を選択します。サーバー側の暗号化、チェックサム、メタデータの設定を指定するには、**[設定を指定]** を選択します。

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

## S3 コンソールの使用 (汎用バケットへのコピー)
<a name="directory-bucket-copy-console"></a>

**注記**  
コンソールでオブジェクトを汎用バケットにコピーする際の制約と制限は次のとおりです。  
`Copy` アクションは、指定されたフォルダ (プレフィックス) 内のすべてのオブジェクトに適用されます。アクションの進行中にこれらのフォルダに追加されたオブジェクトが影響を受ける可能性があります。
お客様が提供する暗号化キー (SSE−C) で暗号化されたオブジェクトは、S3 コンソールを使用してコピーすることはできません。SSE−C で暗号化されたオブジェクトをコピーするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。
コピーされたオブジェクトは、元のオブジェクトの Object Lock 設定を保持しません。
オブジェクトのコピー元のバケットが S3 オブジェクト所有者にバケット所有者強制設定を使用している場合、オブジェクト ACL は指定された宛先にコピーされません。
S3 オブジェクト所有権にバケット所有者強制設定を使用するバケットにオブジェクトをコピーする場合は、ソースバケットでもバケット所有者強制設定が使用されていることを確認するか、他の AWS アカウントおよびグループへのオブジェクト ACL 許可を削除します。

**ディレクトリバケットから汎用バケットにオブジェクトをコピーするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

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

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

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

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

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

    

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

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

1. **[追加のコピー設定]** で、**[ソース設定をコピー]** するか、**[設定を指定しない]** か、**[設定を指定]** するかを選択します。**[ソース設定をコピー]** がデフォルトのオプションです。ソース設定の属性なしでオブジェクトのみをコピーする場合は、**[設定を指定しない]** を選択します。ストレージクラス、ACL、オブジェクトタグ、メタデータ、サーバー側の暗号化、その他のチェックサムの設定を指定するには、**[設定を指定]** を選択します。

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

## AWS SDK の使用
<a name="directory-bucket-copy-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  

```
 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);
       }
 }
```

------

## の使用AWS CLI
<a name="directory-copy-object-cli"></a>

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

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

詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)」を参照してください。