def create_handler()

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})