You should follow these recommendations when implementing the S3 REST API for use with StorageGRID.
If your application routinely checks to see if an object exists at a path where you do not expect the object to actually exist, you should use the Available
consistency control. For example, you should use the Available
consistency control if your application HEADs a location before PUT-ing to it.
Otherwise, if the HEAD operation does not find the object, you might receive a high number of 500 Internal Server errors if one or more Storage Nodes are unavailable.
You can set the Available
consistency control for each bucket using the PUT Bucket consistency request, or you can specify the consistency control in the request header for an individual API operation.
For buckets that are created in StorageGRID 11.4, restricting object key names to meet performance best practices is no longer required. For example, you can now use random values for the first four characters of object key names.
For buckets that were created in releases earlier than StorageGRID 11.4, continue to follow these recommendations for object key names:
mybucket/mydir/f8e3-image3132.jpg
Instead of this format:
mybucket/f8e3-image3132.jpg
range reads
If the Compress Stored Objects option is selected ( ), S3 client applications should avoid performing GET Object operations that specify a range of bytes be returned. These range read
operations are inefficient because StorageGRID must effectively uncompress the objects to access the requested bytes. GET Object operations that request a small range of bytes from a very large object are especially inefficient; for example, it is very inefficient to read a 10 MB range from a 50 GB compressed object.
If ranges are read from compressed objects, client requests can time out.