Amazon S3 Deep Dive (part 3-object)

Published: 2021-08-04 11:14:15

#### Object Overview

To begin using Amazon S3, you should be familiar with the terminology used for creating, accessing, and securing the data in your buckets.  Use the arrows below, or choose START, to navigate through a brief introduction to Amazon S3 terminology, keys, values, metadata, and access control information. 

###### Amazon S3 Object Introduction
 
Amazon S3 is an object store that uses unique key-values to store as many objects as you want. You store these objects in one or more buckets, and each object can be up to 5 TB in size. 
An object consists of the following: Key, version ID, value, metadata, and access control information. The object key (or key name) uniquely identifies the object in a bucket. Object metadata is a set of name-value pairs. You can set object metadata at the time you upload it. After you upload the object, you cannot modify object metadata. The only way to modify object metadata is to make a copy of the object and set the metadata. 

###### What is an object?

An object is a file and any optional metadata that describes the file. To store a file in Amazon S3, you upload it to a bucket. When you upload a file as an object, you can set permissions on the object and any metadata

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iymqmvhljqifss31z80c.png)
 

###### What is a Key?

When you create an object, you specify the key name. The key name uniquely identifies the object in the bucket. It is the full path to the object in the bucket.
In Amazon S3, there is no hierarchy, as you would see in a file system. However, by using prefixes and delimiters in an object key name, the Amazon S3 console and the AWS SDKs can infer hierarchy and introduce the concept of folders. You do not get actual folders, what you get is a very long key name.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r6sc06hoaaz9kkcj4ifu.png)
 

###### Version ID

Versioning is a means of keeping multiple variants of an object in the same bucket. You can use versioning to preserve, retrieve, and restore every version of every object stored in your Amazon S3 bucket. You can easily recover from both unintended user actions and application failures. If Amazon S3 receives multiple write requests for the same object simultaneously; it stores all of the objects.
If you enable versioning for a bucket, Amazon S3 automatically generates a unique version ID for the object being stored. In one bucket, for example, you can have two objects with the same key, but different version IDs, such as the latest version of dolphins.jpg (version qNTCxBvI7p0pR39sw1sJhHyc59jx75HB) and the previous version of dolphins.jpg (version KWdgdZCncMiiPNs5LGHDz7zmf1QImseb).

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4wmeoag55q26shxz4g7n.png)
 
 
###### Value

Value (or size) is the actual content that you are storing. An object value can be any sequence of bytes, meaning it can be the whole object or a range of bytes within an object that an application needs to retrieve. Objects can range in size from zero to 5 TB.

 ![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/offhfaus2njg3r3iui4x.png)
 

###### Metadata

For each object stored in a bucket, Amazon S3 maintains a set of system metadata. Amazon S3 processes this system metadata as needed. For example, Amazon S3 maintains object creation date and size metadata and uses this information as part of object management.
There are two categories of system metadata:
1.	Metadata such as object creation date is system controlled, where only Amazon S3 can modify the value.
2.	Other system metadata, such as the storage class configured for the object and whether the object has server-side encryption enabled, are examples of system metadata whose values you control.

 ![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ett6nhbwe7tandvu91wo.png)
 

###### Access control information

You can control access to the objects you store in Amazon S3. S3 supports both resource-based and user-based access controls. Access control lists (ACLs) and bucket policies are both examples of resource-based access control. 

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggfqo36mbqcrxw56t1kl.png)