Due to an anomaly on our frontend, over 500k objects had been uploaded to an AWS bucket without the correct content-type. Keeping the non-mutable nature of S3 objects in mind, and constraint of retaining the same link, here’s how I fixed this anomaly through a python script built on top of boto3.
In a nutshell, here’s what this script does:
- fetches all objects in a bucket
- for each object:
- fetches the metadata of the file
- checks the intended content type of a file, based on file extension
- updates the following in metadata:
- sets access to ‘public-read’
- sets ContentDisposition to ‘inline’
- sets ContentType to the intended content type
The code, along with inline documentation, is as follows:
If you need any other help with this, feel free to reach out to me.