Amazon S3 Concepts
- Data Consistency Model
- A bucket is a container used for storing the objects.
- Every object is incorporated in a bucket.
- For example, if the object named photos/tree.jpg is stored in the treeimage bucket, then it can be addressed by using the URL http://treeimage.s3.amazonaws.com/photos/tree.jpg.
- A bucket has no limit to the amount of objects that it can store. No bucket can exist inside of other buckets.
- S3 performance remains the same regardless of how many buckets have been created.
- The AWS user that creates a bucket owns it, and no other AWS user cannot own it. Therefore, we can say that the ownership of a bucket is not transferrable.
- The AWS account that creates a bucket can delete a bucket, but no other AWS user can delete the bucket.
- Objects are the entities which are stored in an S3 bucket.
- An object consists of object data and metadata where metadata is a set of name-value pair that describes the data.
- An object consists of some default metadata such as date last modified, and standard HTTP metadata, such as Content type. Custom metadata can also be specified at the time of storing an object.
- It is uniquely identified within a bucket by key and version ID.
- A key is a unique identifier for an object.
- Every object in a bucket is associated with one key.
- An object can be uniquely identified by using a combination of bucket name, the key, and optionally version ID.
- For example, in the URL http://jtp.s3.amazonaws.com/2019-01-31/Amazons3.wsdl where "jtp" is the bucket name, and key is "2019-01-31/Amazons3.wsdl"
- You can choose a geographical region in which you want to store the buckets that you have created.
- A region is chosen in such a way that it optimizes the latency, minimize costs or address regulatory requirements.
- Objects will not leave the region unless you explicitly transfer the objects to another region.
- Data Consistency Model
Amazon S3 replicates the data to multiple servers to achieve high availability.
Two types of model:
- Read-after-write consistency for PUTS of new objects.
- For a PUT request, S3 stores the data across multiple servers to achieve high availability.
- A process stores an object to S3 and will be immediately available to read the object.
- A process stores a new object to S3, it will immediately list the keys within the bucket.
- It does not take time for propagation, the changes are reflected immediately.
- Eventual consistency for overwrite PUTS and DELETES
- For PUTS and DELETES to objects, the changes are reflected eventually, and they are not available immediately.
- If the process replaces an existing object with the new object, you try to read it immediately. Until the change is fully propagated, the S3 might return prior data.
- If the process deletes an existing object, immediately try to read it. Until the change is fully propagated, the S3 might return the deleted data.
- If the process deletes an existing object, immediately list all the keys within the bucket. Until the change is fully propagated, the S3 might return the list of the deleted key.