Skip to content

Commit 0507e94

Browse files
authored
Merge pull request #405 from epam/release/1.13
1.13.1
2 parents effb769 + 0a56747 commit 0507e94

File tree

4 files changed

+11
-22
lines changed

4 files changed

+11
-22
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
# [1.13.1] - 2024-08-05
8+
- Speed up deletion of s3 bucket with lots of objects
9+
710
# [1.13.0] - 2024-07-10
811
- Added possibility to configure `FunctionResponseTypes` for lambda functions
912
- Updated maven plugin version to 1.12.0 with support of `FunctionResponseTypes`

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
setup(
2929
name='aws-syndicate',
30-
version='1.13.0',
30+
version='1.13.1',
3131
packages=find_packages(),
3232
include_package_data=True,
3333
install_requires=[

syndicate/connection/s3_connection.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,11 @@ def create_bucket(self, bucket_name, acl=None, location=None):
176176
def remove_bucket(self, bucket_name):
177177
""" Remove bucket by name. To remove bucket it must be empty."""
178178
bucket = self.resource.Bucket(bucket_name)
179-
for each in bucket.objects.all():
180-
each.delete()
179+
bucket_versioning = self.resource.BucketVersioning(bucket_name)
180+
if bucket_versioning.status == 'Enabled':
181+
bucket.object_versions.delete()
182+
else:
183+
bucket.objects.all().delete()
181184
bucket.delete()
182185

183186
def delete_bucket(self, bucket_name):

syndicate/core/resources/s3_resource.py

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -183,25 +183,8 @@ def remove_buckets(self, args):
183183
def _remove_bucket(self, arn, config):
184184
bucket_name = config['resource_name']
185185
try:
186-
errors = []
187-
keys = self.s3_conn.list_object_versions(bucket_name)
188-
if keys:
189-
for s3_keys in chunks(keys, 1000):
190-
errors.extend(self._delete_objects(bucket_name, s3_keys))
191-
192-
markers = self.s3_conn.list_object_markers(bucket_name)
193-
if markers:
194-
for s3_markers in chunks(markers, 1000):
195-
errors.extend(
196-
self._delete_objects(bucket_name, s3_markers))
197-
198-
if errors:
199-
raise AssertionError('Error occurred while deleting S3 objects'
200-
' from {0} bucket. Not deleted keys: '
201-
'{1}'.format(bucket_name, str(errors)))
202-
else:
203-
self.s3_conn.delete_bucket(bucket_name)
204-
_LOG.info('S3 bucket {0} was removed.'.format(bucket_name))
186+
self.s3_conn.remove_bucket(bucket_name=bucket_name)
187+
_LOG.info('S3 bucket {0} was removed.'.format(bucket_name))
205188
except ClientError as e:
206189
if e.response['Error']['Code'] == 'NoSuchBucket':
207190
_LOG.warn('S3 bucket {0} is not found'.format(bucket_name))

0 commit comments

Comments
 (0)