

# バケットの作成時のオブジェクトの所有権の設定。
<a name="object-ownership-new-bucket"></a>

バケットを作成するときに、S3 オブジェクトの所有権を設定できます。既存のバケットのオブジェクトの所有権を設定するには、[既存のバケットでのオブジェクトの所有権の設定](object-ownership-existing-bucket.md) を参照してください。

S3 オブジェクトの所有権は、[アクセスコントロールリスト (ACL)](acl-overview.md) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。デフォルトでは、オブジェクト所有者はバケット所有者の強制設定に設定され、新しいバケットの ACL が無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、ACL は無効にしておくことをお勧めします。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

**ACL の無効化**
+ **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。バケットは、ポリシーを使用してアクセスコントロールを定義します。

**ACL の有効化。**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

**アクセス許可**: **[Bucket owner enforced]** (バケット所有者の強制) 設定、または **[Bucket owner preferred]** (バケット所有者の優先) 設定を適用するには、`s3:CreateBucket` および `s3:PutBucketOwnershipControls` のアクセス許可が必要です。**オブジェクトライター**設定が適用されたバケットを作成する場合、追加の権限は必要ありません。詳細については、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**重要**  
Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなり、オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL を無効にすることをお勧めします。オブジェクトの所有権を使用すると ACL を無効にして、アクセスコントロールに関するポリシーに依存できます。ACL を無効にすると、別の AWS アカウントによってアップロードされたオブジェクトを含むバケットを簡単に維持できます。バケット所有者は、バケット内のすべてのオブジェクトを所有し、ポリシーを使用してオブジェクトへのアクセスを管理できます。

## S3 コンソールの使用
<a name="object-ownership-new-bucket-console"></a>

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。
**注記**  
一旦バケットを作成したら、そのリージョンを変更することはできません。
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。Amazon S3 AWS リージョン のリストについては、**「Amazon Web Services 全般のリファレンス」の「[AWS のサービス エンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)」を参照してください。

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

1. [**Create bucket (バケットの作成)**] を選択します。**[バケットの作成]** ページが開きます。

1. **[バケット名]** にバケットの名前を入力します。

   バケット名には次の条件があります。
   + パーティション内で一意にする必要があります。パーティションは、リージョンのグループです。AWS には、現在 `aws` (商用リージョン)、`aws-cn` (中国リージョン)、および `aws-us-gov` (AWS GovCloud (US) Regions) の 3 つのパーティションがあります。
   + 3～63 文字で指定する。
   + 小文字、数字、ピリオド (`.`)、ハイフン (`-`) のみで構成されます。互換性を最も高くするには、静的ウェブサイトホスティング専用のバケットを除き、バケット名にピリオド (`.`) を使用しないことをお勧めします。
   + 文字や数字で始まり、文字や数字で終わります。
   + バケットの命名規則の完全なリストについては、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。
**重要**  
バケットを作成したら、その名前を変更することはできません。
バケット名に機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。

1. (オプション) **[全般設定]** で、既存のバケットの設定を新しいバケットにコピーすることを選択できます。既存のバケットの設定をコピーしない場合は、次のステップにスキップします。
**注記**  
このオプションの特徴:  
AWS CLI では使用できません。Amazon S3 コンソールでのみ利用できます。
バケットポリシーは既存のバケットから新しいバケットにコピーしません。

    既存のバケットの設定をコピーするには、**[既存のバケットから設定をコピー]** で **[バケットを選択]** をクリックします。**[バケットを選択]** ウィンドウが開きます。コピーする設定を持つバケットを検索して、**[バケットを選択]** をクリックします。**[バケットを選択]** ウィンドウが閉じて、**[バケットを作成]** ウィンドウが再び開きます。

   **[既存のバケットから設定をコピー]** に、選択したバケットの名前が表示されるようになります。新しいバケットの設定が、選択したバケットの設定と一致するようになりました。コピーした設定を削除する場合は、**[デフォルトを復元]** を選択します。**[バケットを作成]** ページで、バケットの残りの設定を確認します。変更しない場合は、最後のステップに進みます。

1. **[オブジェクト所有者]** で、ACL を無効または有効にし、バケットにアップロードされたオブジェクトの所有権を制御するには、次のいずれかの設定を選択します。

**ACL は無効です**
   +  **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者は汎用バケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 汎用バケット内のデータへのアクセス許可に影響を与えなくなりました。このバケットはアクセスコントロールを定義するためだけにポリシーを使用します。

     デフォルトでは、ACL は無効になっています。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

**ACL の有効化**
   + **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。

     **[バケット所有者を推奨]** 設定を適用して、すべての Amazon S3 アップロードに `bucket-owner-full-control` 既定 ACL を含めることを要求する場合は、この ACL を使用するオブジェクトアップロードのみを許可する[バケットポリシーを追加](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)できます。
   + **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。
**注記**  
デフォルト設定は **[バケット所有者の強制]** です。デフォルト設定を適用して ACL を無効のままにするのに必要なのは、`s3:CreateBucket` アクセス許可のみです。ACL を有効にするためには、`s3:PutBucketOwnershipControls` アクセス許可が必要です。

1. **[このバケットのパブリックアクセスブロック設定]** で、バケットに適用するブロックパブリックアクセス設定を選択します。

   デフォルトでは、4 つすべての [パブリックアクセスをブロック] 設定が有効になっています。特定のユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。ブロックパブリックアクセスの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。
**注記**  
すべての [パブリックアクセスをブロック] 設定を有効にするのに必要なのは、`s3:CreateBucket` アクセス許可のみです。[パブリックアクセスをブロック] 設定をオフにするには、`s3:PutBucketPublicAccessBlock` アクセス許可が必要です。

1. (オプション) **[バケットのバージョニング]** は、デフォルトで無効になります。バージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段です。バージョニングを使用して、 バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。バージョニングを使用すれば、意図しないユーザーアクションからもアプリケーション障害からも、より簡単に復旧できます。バージョニングの詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。

   バケットでバージョニングを有効にするには、**[有効化]** を選択します。

1. (オプション) **[Tags]** (タグ) では、バケットにタグを追加することを選択できます。AWS コスト配分では、バケットタグを使用してバケットの使用に対する請求に注釈を付けることができます。タグはキー/値ペアになっており、バケットに割り当てられるラベルを表します。詳細については、「[S3 バケットタグでのコスト配分タグの使用](CostAllocTagging.md)」を参照してください。

   (オプション) タグを追加するには、**[キー]** を入力してから、オプションの **[値]** を入力し、**[タグの追加]** を選択します。

1. **[デフォルトの暗号化]** を設定するには、**[暗号化タイプ]** で次のいずれかを選択します。
   + **Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)**
   + **AWS Key Management Service キーによるサーバー側の暗号化 (SSE-KMS)**
   + **AWS Key Management Service (AWS KMS) キーによる二層式サーバー側の暗号化 (DSSE-KMS)**
**重要**  
デフォルト暗号化設定として SSE-KMS または DSSE-KMS オプションを使用する場合、AWS KMS の 1 秒あたりのリクエスト数 (RPS) 制限が適用されます。AWS KMS クォータの詳細およびクォータの引き上げをリクエストする方法については、**「AWS Key Management Service デベロッパーガイド」の「[クォータ](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)」を参照してください。

   バケットと新しいオブジェクトは、暗号化設定の基本レベルとして Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側の暗号化で暗号化されます。デフォルトの暗号化の詳細については、「[Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](bucket-encryption.md)」を参照してください。SSE-KMS に関する詳細は、「[Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)](UsingServerSideEncryption.md)」を参照してください。

   サーバー側の暗号化を使用してデータを暗号化する方法の詳細については、「[暗号化によるデータの保護](UsingEncryption.md)」を参照してください。

1. **AWS Key Management Service キーによるサーバー側の暗号化 (SSE-KMS)** または **AWS Key Management Service (AWS KMS) キーによる二層式サーバー側の暗号化 (DSSE-KMS)** を選択した場合は、次の操作を行います。

   1. **[AWS KMS キー]** で、次のいずれかの方法で KMS キーを指定します。
      + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS キー**を選択します。

        AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
      + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
      + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

        AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。
**重要**  
バケットと同じ AWS リージョン で使用可能な KMS キーのみを使用できます。Amazon S3 コンソールには、バケットと同じリージョンで最初の 100 個の KMS キーしか表示されません。リストに存在しない KMS キーを使用するには、KMS キー ARN を入力する必要があります。別のアカウントが所有している KMS キーを使用する場合は、まず、そのキーを使用するアクセス許可が必要であり、次に、KMS キー ARN を入力する必要があります。KMS キーのクロスアカウント権限の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[他のアカウントで使用できる KMS キーを作成する](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)」を参照してください。SSE-KMS に関する詳細は、「[AWS KMS (SSE−KMS) によるサーバー側の暗号化の指定](specifying-kms-encryption.md)」を参照してください。DSSE-KMS に関する詳細については、「[AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS) の使用](UsingDSSEncryption.md)」を参照してください。  
Amazon S3 でサーバー側の暗号化に AWS KMS key を使用する場合は、対称暗号化 KMS キーを選択する必要があります。Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

   1. SSE-KMS でデフォルトの暗号化を使用するようにバケットを設定する場合は、S3 バケットキーを使用することもできます。S3 バケットキーは、Amazon S3 から AWS KMS へのリクエストトラフィックを減らし、暗号化のコストを削減します。詳細については、「[Amazon S3 バケットキーを使用した SSE−KMS のコストの削減](bucket-key.md)」を参照してください。S3 バケットキーは DSSE-KMS ではサポートされていません。

      デフォルトでは、S3 バケットキーは Amazon S3 コンソールで有効になっています。コストを削減するには、S3 バケットキーを有効にしておくことをお勧めします。バケットの S3 バケットキーを無効にするには、**[バケットキー]** で、**[無効化]** を選択します。

1. (オプション) S3 Object Lock は、新しいオブジェクトが削除または上書きされないように保護するのに役立ちます。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。S3 Object Lock を有効にする場合は、次の手順に従います。

   1. **[詳細設定]** を選択します。
**重要**  
バケットに対して Object Lock を有効にすると、自動でバージョニングも有効になります。バケットを有効にして正常に作成したら、バケットの **[プロパティ]** タブで Object Lock のデフォルトの保持とリーガルホールドの設定も設定する必要があります。

   1. オブジェクトロックを有効にする場合は、**[Enable]** (有効化) を選択し、表示される警告を読んだうえで承認します。
**注記**  
Object Lock が有効なバケットを作成するには、`s3:CreateBucket`、`s3:PutBucketVersioning` および `s3:PutBucketObjectLockConfiguration` の許可が必要です。

1. **[バケットを作成する]** を選択します。

## の使用AWS CLI
<a name="object-ownership-new-bucket-cli"></a>

新しいバケットを作成するときにオブジェクトの所有権を設定するには、`create-bucket` パラメータを指定して AWS CLI と `--object-ownership` コマンドを使用します。

この例では、AWS CLI を使用して新しいバケットに [バケット所有者の強制] 設定を適用します。

```
aws s3api create-bucket --bucket  amzn-s3-demo-bucket --region us-east-1 --object-ownership BucketOwnerEnforced
```

**重要**  
AWS CLI を使用してバケットを作成するときにオブジェクト所有権を設定しない場合、デフォルト設定は `ObjectWriter` (ACL 有効) になります。

## AWS SDK for Java の使用
<a name="object-ownership-new-bucket-sdk-java"></a>

この例では、AWS SDK for Java を使用して新しいバケットの [バケット所有者の強制] 設定を設定します。

```
    // Build the ObjectOwnership for CreateBucket
    CreateBucketRequest createBucketRequest = CreateBucketRequest.builder()
            .bucket(bucketName)
            .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
            .build()

     // Send the request to Amazon S3 
     s3client.createBucket(createBucketRequest);
```

## CloudFormation の使用
<a name="object-ownership-new-bucket-cfn"></a>

新しいバケットを作成するときに `AWS::S3::Bucket` と CloudFormation リソースを使用してオブジェクトの所有権を設定するには、「*AWS CloudFormation ユーザーガイド*」の「[AWS::S3::Bucket の OwnershipControls](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-ownershipcontrols)」を参照してください。

## REST API の使用
<a name="object-ownership-new-bucket-rest-api"></a>

S3 オブジェクト所有権に [バケット所有者の強制] 設定を適用するには、`x-amz-object-ownership` リクエストヘッダーを `BucketOwnerEnforced` に設定して `CreateBucket` API オペレーションを使用します。詳細と例については、「*Amazon Simple Storage Service API リファレンス*」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)」を参照してください。

**次のステップ**: オブジェクトの所有権にバケット所有者の強制設定またはバケット所有者の優先設定を適用した後、さらに次の手順を実行できます。
+ [バケット所有者の強制](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) − IAM または組織ポリシーを使用して、ACL を無効にしてすべての新しいバケットを作成する必要があります。
+ [バケット所有者推奨](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) − S3 バケットポリシーを追加して、バケットへのすべてのオブジェクトのアップロードに `bucket-owner-full-control` 規定 ACL を要求します