Is it possible to limit s3 bucket to lowercase files/directories only?
Some downstream systems are case insensitive so I want to prevent any issues.
There’s a Lambda workaround, but is it possible to specify this requirement as a bucket policy?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enforce lower-case",
"Effect": "Deny",
"Principal":"*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringNotEquals": {
"s3:KeyName": "lower(s3:KeyName)"
}
}
}
]
}
2
Answers
No, that is not possible because:
An alternative approach would be to have the S3 bucket trigger an AWS Lambda function, which could:
Key
Copy
the object to a new lowercase Key and delete the original objectHowever, it would mean that
Foo
would rename tofoo
and a laterFOO
would overwritefoo
.