Chapter 5.9 - Optimizing S3 Performance Flashcards
What are the primary resources and structure of S3?
In Amazon S3, buckets and objects are the primary resources, and objects are stored in buckets.
Amazon S3 has a flat structure instead of a hierarchy like you would see in a file system.
S3 is NOT a hierarchical file system (HFS). “You can’t create a bucket from within another bucket.”
How are objects organized within buckets?
By using prefixes in conjunction with the object name, aka key name.
You can think of prefixes as a way to organize your data in a similar way to directories aka folders and subfolders. However, prefixes are not directories.
A prefix is the string of characters representing the complete path in front of the object name, which includes the bucket name.
Example: BucketName/Project/WordFiles/123.txt
How do prefixes affect the S3 performance?
The more prefixes you have in S3, the better the performance you get.
3,500 PUT/COPY/POST/DELETE requests per second, per prefix.
5,500 GET/HEAD requests per second, per prefix.
What are the limitations when using KMS with S3?
Built-in request rate limits, by region, due to needing to call GenerateDataKey and Decrypt in the KMS API when uploading and downloading files, respectively.
Uploading and downloading with count towards the KMS quota.
5,500, 10,000 or 30,000 requests per second, depending upon the region.
Currently cannot request a quota increase.
What are the S3 performance parameters for uploads?
Multipart Uploads are:
Recommended for files over 100 MB
Required for files over 5 GB
Parallelize uploads to increase efficiency
What are the S3 performance parameters for downloads?
S3 Byte-Range Fetches
Parallelize downloads by specifying byte ranges which speeds up downloads
If there is a failure in the download, it’s only for a specific byte range.
Can be used to download partial amounts of files e.g. header information only.