AWS CDK package that manages ECR repository and is able to fully delete it.
Project description
AWS Empty Bucket
A custom S3 bucket with an ability to completely delete itself (even if it contains files within).
Remarks
The project is written by Laimonas Sutkus and is owned by iDenfy. This is an open source library intended to be used by anyone. iDenfy aims to share its knowledge and educate market for better and more secure IT infrastructure.
Related technology
This project utilizes the following technology:
- AWS (Amazon Web Services).
- AWS CDK (Amazon Web Services Cloud Development Kit).
- AWS CloudFormation.
- AWS S3 (Amazon Web Services Simple Storage Service).
Assumptions
This library project assumes the following:
- You have knowledge in AWS (Amazon Web Services).
- You have knowledge in AWS CloudFormation and AWS S3.
- You are managing your infrastructure with AWS CDK.
- You are writing AWS CDK templates with a python language.
Install
The project is built and uploaded to PyPi. Install it by using pip.
pip install aws-empty-bucket
Or directly install it through source.
./build.sh -ic
Description
Natively S3 buckets can not be deleted if they contain files. If you were to delete a bucket through CloudFormation, you would get a similar error message:
The bucket you tried to delete is not empty (Service: Amazon S3; Status Code: 409; Error Code: BucketNotEmpty; Request ID: ; S3 Extended Request ID: )
This gets especially annoying if a developer is spinning up and tearing down the infrastructure many times a day. Wouldn't it be awesome if S3 buckets could just be simply deleted in any case?
With this project you can create S3 buckets that can be deleted even if they
contain filed inside. A project exposes a class EmptyS3Bucket
which can
be used exactly the same as a class Bucket
provided by AWS CDK. Next time
you delete your stack, you will not see that error message again.
Examples
To create an S3 Bucket that can be easily deleted create an EmptyS3Bucket
instance in your stack. An example is given below:
from aws_cdk import core, aws_s3
from aws_empty_ecr_repository.empty_ecr_repository import EmptyS3Bucket
class MainStack(core.Stack):
def __init__(self, scope: core.App) -> None:
super().__init__(
scope=scope,
id='MyCoolStack'
)
self.empty_bucket = EmptyS3Bucket(
self,
'MyCoolBucketThatCanBeDeleted',
access_control=aws_s3.BucketAccessControl.PRIVATE,
bucket_name='mybucket',
)
To delete inner S3 Bucket files, a custom resource with a lambda function as
as a backend is created too. EmptyS3Bucket
exposes two properties:
backend
and custom_resource
. If you need to access them use the following:
from aws_empty_ecr_repository.empty_ecr_repository import EmptyS3Bucket
empty_bucket = EmptyS3Bucket(...)
function = empty_bucket.backend
resource = empty_bucket.custom_resource
Release history
1.0.0
Initial. No extensive readme.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aws_empty_ecr_repository-1.0.0.tar.gz
.
File metadata
- Download URL: aws_empty_ecr_repository-1.0.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2c8c1f4e9b13e43de157bfcb35afabf27112a32eca10d196a15e5df622ed7f1 |
|
MD5 | 93eb2dbc295dd63a18a46b21395ecd19 |
|
BLAKE2b-256 | b378dbc6834e91ba0570face788b11f9642f3c2b1c6acaa0af41708b78ae6bbd |
File details
Details for the file aws_empty_ecr_repository-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: aws_empty_ecr_repository-1.0.0-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea7e4e9146e74a3e7781ed5427a503b3bd17c67583bba4e11d93652fbb33c758 |
|
MD5 | 898a0f86816ac883b879c613c846c8d0 |
|
BLAKE2b-256 | 75c3135e850d59f45d8978f124ab1216b339743153cd47f0f70301f5e1c028ea |