S3
Introduction
It can used to host file and static website
Object
Max object size: 5TB
If larger than 5GB, must use multi-part upload
Security
IAM Policy
To specify a user permission to specific bucket, suitable for grant access to a user
Bucket Policy
To granting access to public or cross account
Versioning
Can be enabled on bucket level
Easy to rollback
For deleting, it will add a delete marker on object
After deleting delete marker, the object can restored
It must be enabled if replication is needed
Storage Class

General Purpose - Frequently Access Data
Infrequent Access - Infrequent Access Data, but rapid access when needed, e.g: backup for recovery
Glacier Storage - For archive/backup, low cost object storage
Intelligent Tier - Move object across different class automatically based on the frequency of access to the object
Lifecycle Policy
There are 2 types of action after the condition is triggered
Moving storage class to another class
Delete the object
Event Notification
After the object is deleted/updated/created, the event will be triggered and send the message to sqs , sns, ... for performing additional logic
Encryption
There are 4 types of encryption
AWS S3 Managed Key - Enabled by default, encrypt the data by key managed by aws and decrypt when getting the data
KMS Key - Generated key from AWS key management service and need specify the header x-amz-server-side-encryption: aws:kms
Client Side key - using the key managed by user and pass it through the header
Client Side encryption - encryption the file in application level
Pre-signed URL
Generate a url with expiry time for user to access the resource temporarily
Access Point
Define the policy for specific group of user (within VPC) to access specific resource
Last updated