Buckets are region specificbutthe S3 namespace are universal
stored as key , values along with version and metadata
Key - object name ,
value - actual data
version
metadata - permissions , etc.,
5 TB per file is maximum size
PUT request - max size is 5GB
Storage Classes
Permissions
Can be controlled via
Access Control Lists (object level)
Bucket Policies (Bucket level)
Encryption
Can be encrypted via S3 Managed or KMS Managed or Customer Managed Keys
In a request we can define the x-amz-server-side-encryption header to specify the server-side encryption method for Amazon S3 objects - SSE-S3, SSE-KMS, CMKs
Server-Side Encryption (SSE):
Amazon S3 uses AES-256 to encrypt data on the server side on both SSE-S3 and SSE-KMS.
Client-Side Encryption:
CMKs are used to encrypt data locally before uploading it to S3.
Key Steps in client side encryption:
Data Key Generation: The client (your application) generates a random, unique data key to encrypt the object data.
Data Encryption: The client uses the data key to encrypt the object data.
Key Encryption: The client uses a customer-managed key (CMK) stored in AWS Key Management Service (KMS) to encrypt the data key.
Object Upload: The client uploads the encrypted object data to S3, along with the encrypted data key as metadata.
Decryption: When the client retrieves the object, it uses the CMK to decrypt the data key, and then uses the decrypted data key to decrypt the object data.