Edge Case
I was today years old when I learned that an object key in S3 can end with a slash. Why might someone use such a strange key, you ask? Well, I was working today on a static website served by CloudFront that needs to serve a particular JSON document at /foo/bar/
(note the trailing slash). One option was to create the corresponding object at /foo/bar
and then use a CloudFront function to remove the trailing slash. But that adds complexity, cost, and a tiny bit of latency. Could there be a better way?
Indeed there was! Create the object with a prefix of /foo/bar/
and Bob’s your uncle. Admittedly it’s a bit tricky to create an object with such a key. The console won’t do it, and neither will the aws
CLI (at least not without getting fiddly with encoding, and no one’s got time for that). But boto3
to the rescue, it’ll happily do it.
Obligatory bit of additional knowledge: know your slashes.