in functions/source/DeleteBucketContents/lambda_function.py [0:0]
def create_handler(event, context):
s3 = boto3.client('s3')
# Delete KeyBucket contents
if "KeyBucket" in event["ResourceProperties"].keys():
logger.info('Getting KeyBucket objects...')
s3objects = s3.list_objects_v2(Bucket=event["ResourceProperties"]["KeyBucket"])
if 'Contents' in s3objects.keys():
logger.info('Deleting KeyBucket objects %s...' % str(
[{'Key': key['Key']} for key in s3objects['Contents']]))
s3.delete_objects(Bucket=event["ResourceProperties"]["KeyBucket"],
Delete={'Objects': [{'Key': key['Key']} for key in s3objects['Contents']]})
# Delete Output bucket contents and versions
if "OutputBucket" in event["ResourceProperties"].keys():
logger.info('Getting OutputBucket objects...')
objects = []
versions = s3.list_object_versions(Bucket=event["ResourceProperties"]["OutputBucket"])
while versions:
if 'Versions' in versions.keys():
for v in versions['Versions']:
objects.append({'Key': v['Key'], 'VersionId': v['VersionId']})
if 'DeleteMarkers' in versions.keys():
for v in versions['DeleteMarkers']:
objects.append({'Key': v['Key'], 'VersionId': v['VersionId']})
if versions['IsTruncated']:
versions = s3.list_object_versions(Bucket=event["ResourceProperties"]["OutputBucket"],
VersionIdMarker=versions['NextVersionIdMarker'])
else:
versions = False
if objects:
s3.delete_objects(Bucket=event["ResourceProperties"]["OutputBucket"], Delete={'Objects': objects})