There are a lot of pitfalls when using S3. Most of them are in bucket names and object keys. For example, Amazon has deprecated path style buckets with limits the valid characters for buckets since they now have to be valid DNS labels.
This means it is possible for a user to create a bucket via path style, that can't be deleted using virtual host style. The same problem is evident in object keys, as it is possible to PUT objects with 0x01 in the name, but impossible to delete using DeleteObjects since object keys have to be valid XML 1.0 characters.
For this reason, there should be a usability layer based on validation that ensures that any bucket or object created through the library is possible to copy and delete later on.
There are a lot of pitfalls when using S3. Most of them are in bucket names and object keys. For example, Amazon has deprecated path style buckets with limits the valid characters for buckets since they now have to be valid DNS labels.
This means it is possible for a user to create a bucket via path style, that can't be deleted using virtual host style. The same problem is evident in object keys, as it is possible to PUT objects with 0x01 in the name, but impossible to delete using DeleteObjects since object keys have to be valid XML 1.0 characters.
For this reason, there should be a usability layer based on validation that ensures that any bucket or object created through the library is possible to copy and delete later on.