Deleting a bucket
You can delete an empty Amazon S3 bucket. Before deleting a bucket, consider the following:
-
Bucket names are unique. If you delete a bucket, another AWS user can use the name.
-
If the bucket hosts a static website, and you created and configured an Amazon Route 53 hosted zone as described in Tutorial: Configuring a static website using a custom domain registered with Route 53, you must clean up the Route 53 hosted zone settings that are related to the bucket. For more information, see Step 2: Delete the Route 53 hosted zone.
-
If the bucket receives log data from Elastic Load Balancing (ELB): We recommend that you stop the delivery of ELB logs to the bucket before deleting it. After you delete the bucket, if another user creates a bucket using the same name, your log data could potentially be delivered to that bucket. For information about ELB access logs, see Access logs in the User Guide for Classic Load Balancers and Access logs in the User Guide for Application Load Balancers.
Troubleshooting
If you are unable to delete an Amazon S3 bucket, consider the following:
-
Make sure the bucket is empty – You can only delete buckets that don't have any objects in them. Make sure the bucket is empty.
-
Make sure there aren't any access points attached – You can only delete buckets that don't have any access points attached to them. Delete any access points that are attached to the bucket, before deleting the bucket.
-
AWS Organizations service control policies (SCPs) and resource control policies (RCPs) – SCPs and RCPs can deny the delete permission on a bucket. For more information, see service control policies and resource control policies in the AWS Organizations User Guide.
-
s3:DeleteBucket permissions – If you cannot delete a bucket, work with your IAM administrator to confirm that you have
s3:DeleteBucket
permissions. For information about how to view or update IAM permissions, see Changing permissions for an IAM user in the IAM User Guide. -
s3:DeleteBucket deny statement – If you have
s3:DeleteBucket
permissions in your IAM policy and you cannot delete a bucket, the bucket policy might include a deny statement fors3:DeleteBucket
. Buckets created by ElasticBeanstalk have a policy containing this statement by default. Before you can delete the bucket, you must delete this statement or the bucket policy.
Important
Bucket names are unique. If you delete a bucket, another AWS user can use the name. If you want to continue to use the same bucket name, don't delete the bucket. We recommend that you empty the bucket and keep it.
To delete an S3 bucket
Sign in to the AWS Management Console and open the Amazon S3 console at https://console.aws.amazon.com/s3/
. -
In the Buckets list, select the option next to the name of the bucket that you want to delete, and then choose Delete at the top of the page.
-
On the Delete bucket page, confirm that you want to delete the bucket by entering the bucket name into the text field, and then choose Delete bucket.
Note
If the bucket contains any objects, empty the bucket before deleting it by selecting the empty bucket configuration link in the This bucket is not empty error alert and following the instructions on the Empty bucket page. Then return to the Delete bucket page and delete the bucket.
-
To verify that you've deleted the bucket, open the Buckets list and enter the name of the bucket that you deleted. If the bucket can't be found, your deletion was successful.
The following example shows you how to delete a bucket using the AWS SDK for Java. First, the code deletes
objects in the bucket and then it deletes the bucket. For information about other AWS
SDKs, see Tools for Amazon Web
Services
You can delete a bucket that contains objects with the AWS CLI if it doesn't have
versioning enabled. When you delete a bucket that contains objects, all the objects
in the bucket are permanently deleted, including objects that are transitioned to
the S3 Glacier
storage class.
If your bucket does not have versioning enabled, you can use the rb
(remove bucket) AWS CLI command with the --force
parameter to delete the
bucket and all the objects in it. This command deletes all objects first and then
deletes the bucket.
If versioning is enabled versioned objects will not be deleted in this process which would cause the bucket deletion to fail because the bucket would not be empty. For more information about deleting versioned objects, see Deleting object versions.
$
aws s3 rb s3://bucket-name --force
For more information, see Using High-Level S3 Commands with the AWS Command Line Interface in the AWS Command Line Interface User Guide.