Skip to content

Instantly share code, notes, and snippets.

@kylec32
Created May 13, 2021 04:56
Show Gist options
  • Save kylec32/d65deefbfea508aa32a24b4fe439eba1 to your computer and use it in GitHub Desktop.
Save kylec32/d65deefbfea508aa32a24b4fe439eba1 to your computer and use it in GitHub Desktop.
Main part of S3 lowercaser
def lambda_handler(event, context):
for record in event['Records']:
try:
bucket_name = record['s3']['bucket']['name']
object_name = record['s3']['object']['key']
object_size = record['s3']['object']['size']
version_id = record['s3']['object']['versionId']
# Key's come HTML encoded, we need to remove that.
object_name = urllib.parse.unquote_plus(object_name)
lower_case_object_name = object_name.lower()
if lower_case_object_name != object_name:
print("Current object is not of the correct case (" + bucket_name + " / " + object_name +")")
# If over ~ 5 GB copy with alternative method
if object_size > 5368709100:
copy_large_object(bucket_name, object_name, lower_case_object_name)
else:
copy_object(bucket_name, object_name, lower_case_object_name)
delete_object_entirely(object_name, version_id, bucket_name)
else:
print("Already in the right case: (" + bucket_name + " / " + lower_case_object_name +")")
except Exception as e:
send_failed_object(record, e)
raise
return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment