

# 汎用バケットの削除
<a name="delete-bucket"></a>

空の Amazon S3 汎用バケットを削除できます。汎用バケットを空にする方法については、「[汎用バケットを空にする](empty-bucket.md)」を参照してください。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用してバケットを削除できます。

**重要**  
汎用バケットを削除する前に、以下の点を考慮してください。  
**バケットが削除された場合、AWS で復元することはできません。**バケットを削除する前に、データをバックアップまたはレプリケートしていることを確認してください。
汎用バケット名はグローバル名前空間内で一意です。**共有グローバル名前空間のバケットを削除した場合、別の AWS アカウントが新しいバケットに同じ汎用バケット名を使用できるため、削除したバケットへのリクエストを受け取る可能性があることに注意してください。**これを防ぐ場合、または同じバケット名を使い続ける場合は、バケットを削除しないでください。バケットを空にして保持し、代わりに必要に応じてバケットリクエストをブロックすることをお勧めします。バケットがアクティブに使用されなくなった場合は、バケット自体を保持しながらコストを最小限に抑えるために、すべてのオブジェクトのバケットを空にすることをお勧めします。
ご使用のアカウントのみがこれらのバケット名を所有できるように、アカウントのリージョン名前空間にバケットを作成することをお勧めします。詳細については、「[汎用バケットの名前空間](gpbucketnamespaces.md)」を参照してください。
汎用バケットを削除しても、バケットがすぐに削除されない場合があります。代わりに、Amazon S3 はバケットを削除キューに入れます。Amazon S3 は AWS リージョン全体に分散されるため、削除プロセスが完全に伝達され、システム全体で一貫性を実現するには時間がかかります。
バケットが静的ウェブサイトをホストしていて、Amazon Route 53 ホストゾーンが [チュートリアル: Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定](website-hosting-custom-domain-walkthrough.md) の説明通りに作成され設定されている場合は、バケットに関連する Route 53 ホストゾーンの設定をクリーンアップする必要があります。詳細については、「[ステップ 2: Route 53 ホストゾーンを削除する](getting-started-cleanup.md#getting-started-cleanup-route53)」を参照してください。
バケットに Elastic Load Balancing (ELB) からログデータを配信している場合は、バケットを削除する前に、バケットへの ELB ログの配信を停止することをお勧めします。バケットの削除後に、別のユーザーが同じ名前でバケットを作成した場合、そのバケットにログデータが配信される可能性があります。ELB アクセスログの詳細については、「*Classic Load Balancer のユーザーガイド*」の「[Access logs for your Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/access-log-collection.html)」、および「*Application Load Balancer のユーザーガイド*」の「[Access logs for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html)」を参照してください。

**トラブルシューティング**  
Amazon S3 汎用バケットを削除できない場合は、次の点を考慮してください。
+ **バケットが空であることを確認する** — バケット内にオブジェクトがないバケットのみ削除できます。バケットが空であることを確認します。バケットを空にする方法については、「[汎用バケットを空にする](empty-bucket.md)」を参照してください。
+ **アクセスポイントがアタッチされていないことを確認する** – バケットを削除できるのは、同じアカウント内に S3 アクセスポイントまたはマルチリージョンアクセスポイントがアタッチされていない場合に限ります。バケットを削除する前に、バケットにアタッチされている同一アカウントのアクセスポイントをすべて削除します。
+ **`s3:DeleteBucket` アクセス許可があることを確認する** – バケットを削除できない場合は、IAM 管理者と協力して、`s3:DeleteBucket` アクセス許可があることを確認してください。IAM アクセス許可を表示または更新する方法については、*IAM ユーザーガイド*の「[IAM ユーザーの許可の変更](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html)」を参照してください。トラブルシューティング情報については、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。
+ **AWS Organizations サービスコントロールポリシー (SCP) とリソースコントロールポリシー (RCP) で `s3:DeleteBucket Deny` ステートメントを確認する** – SCP と RCP は、バケットに対する削除のアクセス許可を拒否できます。詳細については、「*AWS Organizations ユーザーガイド*」の「[サービスコントロールポリシー](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_scps.html)」と「[リソースコントロールポリシー](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。
+ **バケットポリシーの `s3:DeleteBucket Deny` ステートメントを確認する** – IAM ユーザーまたはロールのポリシーに `s3:DeleteBucket` アクセス許可があり、バケットを削除できない場合は、バケットポリシーに `s3:DeleteBucket` に対する `Deny` ステートメントが含まれている場合があります。AWS Elastic Beanstalk によって作成されたバケットは、デフォルトでこのステートメントを含むポリシーを持っています。バケットを削除する前に、このステートメントまたはバケットポリシーを削除する必要があります。

**前提条件**  
汎用バケットを削除するには、事前にバケットを空にする必要があります。バケットを空にする方法については、「[汎用バケットを空にする](empty-bucket.md)」を参照してください。

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

**S3 バケットを削除するには**

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

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

1. バケットリストで、削除するバケットの名前の横にあるオプションボタンを選択してから、ページの上部にある **[削除]** を選択します。

1. **[バケットの削除]** ページで、テキストフィールドにバケット名を入力することでバケットを削除することを確認し、**[バケットを削除]** を選択します。
**注記**  
バケットにオブジェクトが含まれている場合は、**[このバケットは空ではありません]** というエラーアラートの **[バケットを空にする]** ボタンを選択し、**[バケットを空にする]** ページの指示に従って、バケットを空にしてから削除します。次に、[**バケットを削除する**] ページに戻り、バケットを削除します。

1. バケットを削除したことを確認するには、**[汎用バケット]** リストを開き、削除したバケットの名前を入力します。バケットが見つからない場合、削除は成功しています。

## AWS SDK for Java の使用
<a name="delete-empty-bucket"></a>

AWS SDK for Java を使用して汎用バケットを空にして削除するには、まず汎用バケット内のすべてのオブジェクトを削除してから、バケットを削除する必要があります。

他の言語の例については、「*Amazon Simple Storage Service API リファレンス*」の「[AWS SDK または CLI で DeleteBucket を使用する](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteBucket_section.html)」を参照してください。その他の AWS SDK の使用方法については、「[Tools for Amazon Web Services](https://aws.amazon.com/tools/)」を参照してください。

------
#### [ Java ]

AWS SDK for Java を使用してオブジェクトを含むバケットを削除するには、まずすべてのオブジェクトを削除してから、バケットを削除する必要があります。このアプローチは、バージョニングの有無を問わず、バケットで使用できます。

**注記**  
バージョニングが有効になっていないバケットの場合、すべてのオブジェクトを直接削除し、その後でバケットを削除できます。バージョニングが有効なバケットの場合は、バケットを削除する前に、すべてのオブジェクトバージョンを削除する必要があります。

AWS SDK for Java を使用してバケットを削除する方法の例については、「*Amazon S3 API リファレンス*」の「[Delete a bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteBucket_section.html)」を参照してください。

------

## の使用AWS CLI
<a name="delete-bucket-awscli"></a>

オブジェクトを含む汎用バケットでバージョニングが有効になっていない場合は、バケットを AWS CLI で削除できます。オブジェクトを含むバケットを削除すると、S3 Glacier Flexible Retrieval ストレージクラスに移行済みのオブジェクトを含む、そのバケット内にあるすべてのオブジェクトが完全に削除されます。

バケットのバージョニングが有効になっていない場合は、`rb` (バケット削除) の AWS CLI コマンドを `--force` パラメータと共に使用することで、バケットとその内部のオブジェクトのすべてを削除できます。このコマンドは、すべてのオブジェクトを削除した後にバケットを削除します。

バージョニングが有効になっている場合、`--force` パラメータと共に `rb` コマンドを使用しても、バージョニングされたオブジェクトは削除されず、バケットが空にならないため、バケットの削除は失敗します。バージョニングされたオブジェクトの削除については、「[オブジェクトバージョンの削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html)」を参照してください。

次のコマンドを使用するには、`amzn-s3-demo-bucket` を削除するバケットの名前に置き換えます。

```
$ aws s3 rb s3://amzn-s3-demo-bucket --force  
```

詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[Using High-Level S3 Commands with the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html)」を参照してください。