Skip to content

S3

Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance .

Millions of customers of all sizes and industries use S3 to store, manage, analyze, and protect any amount of data for virtually any use case, such as data lakes, cloud-native applications, and mobile apps .

S3 is designed for 99.999999999% of data durability and 99.99% availability of objects over a given year.


Amazon S3 is an object storage service that stores data as objects within buckets . It provides a simple web services interface that you can use to store and retrieve any amount of data, at any time, from anywhere on the web . S3 gives any developer access to the same highly scalable, reliable, fast, and inexpensive data storage infrastructure that Amazon uses to run its own global network of websites .

BenefitDescription
Industry-Leading ScalabilityStore virtually any amount of data, up to EB scale, with unparalleled performance . S3 is fully elastic, automatically scaling and contracting as you add or remove data.
Unmatched DurabilityDesigned for 99.999999999% (11 nines) data durability . Data is redundantly stored across multiple devices and facilities.
High AvailabilityDesigned for 99.99% availability of objects over a given year, backed by the strongest SLA in the cloud .
Security & ComplianceSecure by default with automatic encryption, flexible access controls, and compliance with PCI DSS, SOC, HIPAA, and FedRAMP .
Cost-EffectivePay-as-you-go pricing with no upfront costs. Choose from multiple storage classes to optimize costs .
Deep AWS IntegrationSeamlessly integrates with Lambda, CloudFront, Athena, EMR, and dozens of other AWS services .

Before S3, storing and retrieving data on the internet could be complex and expensive . Organizations had to provision their own storage infrastructure, manage hardware failures, plan for capacity, and handle data replication. S3 revolutionized cloud storage by offering a simple, reliable, and affordable object storage solution that eliminates infrastructure management .


Amazon S3 stores data as objects within buckets . Understanding these two fundamental concepts is essential.

A bucket is a container for objects . Think of a bucket as a top-level folder or directory.

Bucket CharacteristicDescription
Global NamespaceBucket names must be globally unique across all AWS accounts and regions
Region-BoundOnce created, a bucket is permanently bound to its AWS region
Account LimitUp to 100 buckets per AWS account by default (soft limit, can be increased)
Naming RulesMust follow internet naming conventions—no underscores, no uppercase letters, etc.
Access URLhttp://bucket-name.s3.amazonaws.com/object-key

An object is a file and any metadata that describes that file . Objects are the fundamental entities stored in Amazon S3 .

Object CharacteristicDescription
Object KeyA unique identifier within a bucket (like a file path)
Maximum SizeUp to 5 TB per object
ComponentsData (the file content) + Metadata (descriptive information)
Access URLhttp://bucket-name.s3.amazonaws.com/key-name

If an object with key value /photos/mygarden.jpg is stored in bucket myawsbucket, it is addressable using the URL:

http://myawsbucket.s3.amazonaws.com/photos/mygarden.jpg
AWS Account
└── Bucket 1 (globally unique name)
├── Object A (key: "document.pdf")
├── Object B (key: "images/photo.jpg")
└── Object C (key: "images/thumbnail.jpg")
└── Bucket 2
└── ...

Important: Buckets cannot be nested—you cannot create a bucket inside another bucket . However, you can use object key prefixes (like “folder/subfolder/”) to create a logical folder structure.


Amazon S3 offers multiple storage classes, each designed for different access patterns and cost profiles . Choosing the right storage class can significantly impact your costs.

Storage ClassUse CaseDurabilityAvailabilityMinimum Storage DurationRetrieval Time
S3 StandardFrequently accessed data11 nines99.99%NoneMilliseconds
S3 Intelligent-TieringUnknown or changing access patterns11 nines99.9%30 days (auto-tiering)Milliseconds
S3 Standard-IAInfrequently accessed data11 nines99.9%30 daysMilliseconds
S3 One Zone-IAInfrequent access, recreatable data11 nines (single AZ)99.5%30 daysMilliseconds
S3 Glacier Instant RetrievalLong-lived archive, instant access needed11 nines99.9%90 daysMilliseconds
S3 Glacier Flexible RetrievalLong-term archive, minutes to hours retrieval11 nines99.99% (after restore)90 daysMinutes to hours
S3 Glacier Deep ArchiveLong-term retention, accessed 1-2 times/year11 nines99.99% (after restore)180 days12 hours

S3 Standard :

  • Designed for frequently accessed data
  • Stores data across a minimum of three Availability Zones
  • Ideal for active data, content distribution, big data analytics

S3 Intelligent-Tiering :

  • Automatically moves data between four access tiers (frequent, infrequent, archive, deep archive)
  • Small monthly monitoring and auto-tiering charge
  • No retrieval fees, no minimum storage duration
  • Best when access patterns are unknown or changing

S3 Standard-IA (Infrequent Access) :

  • For long-lived, infrequently accessed data
  • Stores data across multiple Availability Zones
  • Per-GB retrieval fee applies
  • Good for backups, disaster recovery, older media

S3 One Zone-IA :

  • Lower cost than Standard-IA but stores data in a single AZ
  • Not resilient to AZ destruction
  • Suitable for recreatable data or secondary backups

S3 Glacier Instant Retrieval :

  • Archive storage with millisecond retrieval
  • Same low-latency and high-throughput performance as S3 Standard
  • 90-day minimum storage duration
  • Great for medical images, news archives, user-generated content archives

S3 Glacier Flexible Retrieval :

  • Low-cost archive storage with configurable retrieval times
  • Three retrieval options: Expedited (1-5 min), Standard (3-5 hours), Bulk (5-12 hours)
  • 90-day minimum storage duration
  • Alternative to magnetic tape libraries

S3 Glacier Deep Archive :

  • Lowest cost storage class
  • Retrieval time within 12 hours
  • 180-day minimum storage duration
  • Perfect for long-term retention, compliance archives, digital preservation

Storage Class Pricing (us-east-1 approximate)

Section titled “Storage Class Pricing (us-east-1 approximate)”
Storage ClassPrice per GB-month
S3 Standard$0.023
S3 Intelligent-Tiering$0.023 + monitoring fee
S3 Standard-IA$0.0125
S3 One Zone-IA$0.01
S3 Glacier Instant Retrieval$0.004
S3 Glacier Flexible Retrieval$0.0036
S3 Glacier Deep Archive$0.00099

  • AWS account
  • AWS Management Console access
  1. Navigate to the AWS Management Console
  2. Search for S3 in the services search bar
  1. Click Create bucket

  2. Bucket name: Enter a globally unique name

    • Must be unique across all AWS accounts
    • No uppercase letters, no underscores
    • Example: my-unique-bucket-name-2024
  3. AWS Region: Choose the region closest to your users

    • Data never leaves this region unless you transfer it
  4. Object Ownership: Select ACLs disabled (recommended)

    • New buckets have Block Public Access enabled by default
  5. Block Public Access settings:

    • All four settings are enabled by default
    • Keep enabled unless you specifically need public access
  6. Bucket Versioning: Choose Enable or Disable

    • Recommended for production to protect against accidental deletions
  7. Tags (optional): Add key-value pairs for cost tracking

  8. Default encryption: Enabled by default (SSE-S3)

  9. Click Create bucket

  1. Click on your bucket name
  2. Click Upload
  3. Click Add files or drag and drop files
  4. Configure permissions (keep default for now)
  5. Click Upload
  1. Click on the object name
  2. Click Open to view in browser or Download to save locally
Terminal window
# List buckets
aws s3 ls
# Create a bucket
aws s3 mb s3://my-unique-bucket-name --region us-east-1
# Upload a file
aws s3 cp local-file.txt s3://my-unique-bucket-name/
# Download a file
aws s3 cp s3://my-unique-bucket-name/local-file.txt downloaded-file.txt
# Sync a directory
aws s3 sync ./local-folder s3://my-unique-bucket-name/folder/
# List objects in bucket
aws s3 ls s3://my-unique-bucket-name/

S3 provides multiple methods for uploading and downloading data, from simple console uploads to programmatic access.

MethodBest ForLimitations
ConsoleSmall files, testingManual, not automated
AWS CLIScripted uploads, automationSingle-threaded by default
AWS SDKApplication integrationRequires development
Multipart UploadLarge files (100MB+)Must be implemented in code
S3 Transfer AccelerationLong-distance, large filesAdditional cost
AWS DataSyncLarge-scale migrationsRequires agent setup

For objects larger than 100 MB, use multipart upload to improve throughput and recoverability .

Terminal window
# Initiate multipart upload
aws s3api create-multipart-upload --bucket my-bucket --key large-file.zip
# Upload parts (repeat for each part)
aws s3api upload-part --bucket my-bucket --key large-file.zip --part-number 1 --upload-id <upload-id> --body part1.file
# Complete upload
aws s3api complete-multipart-upload --bucket my-bucket --key large-file.zip --upload-id <upload-id> --multipart-upload file://parts.json

S3 Transfer Acceleration enables fast, secure, and easy transfers of files over long distances between your client and your S3 bucket . It uses AWS edge locations to accelerate uploads.

Terminal window
# Enable Transfer Acceleration
aws s3api put-bucket-accelerate-configuration --bucket my-bucket --accelerate-configuration Status=Enabled
# Upload using accelerated endpoint
aws s3 cp large-file.zip s3://my-bucket/ --endpoint-url https://my-bucket.s3-accelerate.amazonaws.com

If an object is publicly accessible, you can download it using wget :

Terminal window
wget https://my-bucket.s3.amazonaws.com/path-to-file

Data stored in Amazon S3 is secure by default; only bucket and object owners have access to the S3 resources they create . Amazon S3 supports multiple access control mechanisms .

As of January 5, 2023, Amazon S3 automatically encrypts all object uploads to all buckets .

Encryption TypeDescriptionKey Management
SSE-S3Base level of encryption with S3-managed keysAWS manages keys
SSE-KMSServer-side encryption with KMS keysAWS KMS (customer or AWS managed)
DSSE-KMSDual-layer server-side encryption with KMSAWS KMS with double encryption
SSE-CServer-side encryption with customer-provided keysYou manage keys
Client-Side EncryptionEncrypt data before uploadingYou manage all aspects

Amazon SGS provides four different access control mechanisms :

MechanismScopeUse Case
IAM PoliciesUsers and roles across multiple bucketsOrganization-wide access control
Bucket PoliciesAll objects in a single bucketCross-account access, public access
Access Control Lists (ACLs)Individual objects (legacy)Fine-grained object permissions
Query String AuthenticationSingle object, time-limitedPresigned URLs for temporary access

S3 Block Public Access is a set of security controls that ensures S3 buckets and objects do not have public access . All new buckets have Block Public Access enabled by default .

  • Can be applied at account level or bucket level
  • Overrides all other S3 access permissions
  • Enforces a “no public access” policy

S3 Access Points provide named network endpoints with dedicated access policies, making it easier to manage access to shared data sets at scale .

Use gateway VPC endpoints and interface VPC endpoints to connect to S3 resources from your Amazon VPC and from on-premises .

Generate time-limited URLs to grant temporary access to private objects :

Terminal window
# Generate presigned URL valid for 1 hour
aws s3 presign s3://my-bucket/private-file.pdf --expires-in 3600

S3 can host static websites (HTML, CSS, JavaScript, and media files) with a public URL .

  1. Create a bucket with a name matching your domain (e.g., www.example.com)

  2. Upload website files (index.html, error.html, CSS, JS, images)

  3. Enable static website hosting:

    • Go to bucket Properties tab
    • Scroll to Static website hosting
    • Click Edit
    • Select Enable
    • Enter index document (e.g., index.html)
    • Enter error document (optional)
    • Save changes
  4. Make objects public:

    • Add a bucket policy allowing public read access
  5. Access your website at:

    http://my-bucket.s3-website-us-east-1.amazonaws.com
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}

For better performance, security, and custom domain support, place CloudFront in front of your S3 static website .


8. Versioning and Object Lifecycle Management

Section titled “8. Versioning and Object Lifecycle Management”

Versioning allows you to preserve, retrieve, and restore every version of every object stored in your S3 bucket . This helps recover from unintended user actions and application failures.

Versioning FeatureDescription
Default behaviorRequests retrieve the most recently written version
Old versionsCan be retrieved by specifying a version ID
Storage costsStorage rates apply for every version stored
Lifecycle integrationAutomatically control lifetime of multiple versions
Terminal window
# Enable versioning
aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled
# List object versions
aws s3api list-object-versions --bucket my-bucket
# Delete a specific version
aws s3api delete-object --bucket my-bucket --key my-file.txt --version-id <version-id>

Lifecycle rules automatically transition or expire objects to minimize costs .

Common lifecycle patterns:

PatternDescription
Transition to IAMove objects to Standard-IA after 30 days
Transition to GlacierMove to Glacier Flexible Retrieval after 90 days
ExpirationDelete objects after 365 days
Delete old versionsDelete previous versions after 30 days
Abort incomplete uploadsClean up failed multipart uploads after 7 days
Terminal window
# Create lifecycle configuration JSON
cat > lifecycle.json << EOF
{
"Rules": [
{
"Id": "Move to IA after 30 days, Glacier after 90, delete after 365",
"Status": "Enabled",
"Prefix": "",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}
EOF
# Apply lifecycle rule
aws s3api put-bucket-lifecycle-configuration --bucket my-bucket --lifecycle-configuration file://lifecycle.json

Replication automatically copies objects from one S3 bucket to another .

TypeDescriptionUse Case
Cross-Region Replication (CRR)Copy objects to bucket in different regionDisaster recovery, compliance, latency reduction
Same-Region Replication (SRR)Copy objects within same regionAggregation of logs, dev/prod data sharing
  • Source and destination buckets must have versioning enabled
  • Source bucket owner must have permissions to replicate
  • Destination bucket must be in same or different region
  • IAM role for S3 replication must be created
Terminal window
# Enable versioning on both buckets
aws s3api put-bucket-versioning --bucket source-bucket --versioning-configuration Status=Enabled
aws s3api put-bucket-versioning --bucket destination-bucket --versioning-configuration Status=Enabled
# Put replication configuration
aws s3api put-bucket-replication --bucket source-bucket --replication-configuration file://replication.json

S3 offers multiple data protection features .

Replicate data to another bucket in same or different region for disaster recovery.

Protect against accidental deletions and overwrites.

Prevent object deletion or overwrite for a fixed time or indefinitely. Required for compliance with WORM (Write Once Read Many) regulations.

Centrally manage backups across AWS services, including S3.

Lowest-cost storage for long-term retention (7-10 years) . Ideal alternative to magnetic tape libraries.


S3 automatically scales to high request rates. For a prefix in a bucket, your applications can achieve at least 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second.

PracticeDescription
Use prefix partitioningDistribute keys across many prefixes
Add random prefixFor high-throughput writes, add hash prefix to keys
Use multipart uploadFor objects >100 MB
Use S3 Transfer AccelerationFor long-distance uploads
Use byte-range fetchesDownload specific byte ranges from objects
Use S3 SelectRetrieve subset of data using SQL expressions

S3 Select allows applications to retrieve only a subset of data from an object using SQL-like expressions, reducing data transfer and improving performance.


S3 can send event notifications to AWS services when objects are created, modified, or deleted .

DestinationUse Case
AWS LambdaTrigger serverless functions for image processing, data transformation
Amazon SQSDecouple processing with queues
Amazon SNSFan out notifications to multiple subscribers
Amazon EventBridgeAdvanced event routing and filtering
  • s3:ObjectCreated:* - All object creation events
  • s3:ObjectCreated:Put - PUT operations
  • s3:ObjectCreated:Post - POST operations
  • s3:ObjectCreated:Copy - COPY operations
  • s3:ObjectCreated:CompleteMultipartUpload - Multipart upload completion
  • s3:ObjectRemoved:* - All object deletion events
  • s3:ObjectRemoved:Delete - Delete operations
  • s3:ObjectRestore:* - Object restore events
Terminal window
# Add bucket notification configuration
aws s3api put-bucket-notification-configuration \
--bucket my-bucket \
--notification-configuration file://notification.json
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:process-image",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "prefix",
"Value": "images/"
},
{
"Name": "suffix",
"Value": ".jpg"
}
]
}
}
}
]
}

S3 automatically sends metrics to CloudWatch :

MetricDescription
NumberOfObjectsTotal number of objects in bucket
BucketSizeBytesTotal size of bucket in bytes
AllRequestsTotal number of requests
GetRequestsNumber of GET requests
PutRequestsNumber of PUT requests
4xxErrorsClient-side errors
5xxErrorsServer-side errors
FirstByteLatencyTime to first byte
Terminal window
aws s3api put-bucket-metrics-configuration \
--bucket my-bucket \
--id "DailyMetrics" \
--metrics-configuration '{"Id":"DailyMetrics"}'

Configure your S3 bucket to create access log records for all requests made against it . These server access logs capture all requests and can be used for auditing purposes.

Terminal window
# Enable access logging
aws s3api put-bucket-logging \
--bucket my-bucket \
--bucket-logging-status file://logging.json

S3 supports AWS CloudTrail, which records API calls for your account and delivers log files. This helps with security analysis and compliance auditing.

S3 Inventory provides a scheduled report of your objects and their metadata, helping you manage storage, classify data, and audit encryption status .


AWS provides a portfolio of data transfer services for any data migration project .

ServiceBest For
AWS CLI/SDKProgrammatic access, small to medium data
AWS DataSyncLarge-scale migrations, up to 10x faster than open-source tools
AWS Storage GatewayHybrid cloud storage, on-premises file shares backed by cloud storage
AWS Transfer FamilySFTP, FTPS, FTP access to S3
Amazon KinesisStreaming data from IoT devices
AWS Direct ConnectPrivate connectivity between AWS and on-premises
DeviceCapacityUse Case
AWS Snowcone8 TBEdge locations, constrained networks
AWS Snowball EdgeUp to 210 TBLarge data migrations
AWS SnowmobileUp to 100 PBExabyte-scale migrations

S3 pricing is based on three main components :

ComponentDescription
StoragePer GB-month based on storage class
RequestsPer 1,000 requests (PUT, GET, LIST, DELETE)
Data TransferPer GB for data transferred out of S3
ResourceFree Monthly Amount
S3 Standard storage5 GB
GET requests20,000 requests
PUT requests2,000 requests
Request TypePrice per 1,000 requests
PUT, COPY, POST, LIST$0.005
GET, SELECT$0.0004
Lifecycle TransitionsVaries

Data Transfer Pricing (us-east-1 approximate)

Section titled “Data Transfer Pricing (us-east-1 approximate)”
Transfer TypePrice per GB
Inbound to S3Free
Outbound to internet$0.09 (lower at volume)
Outbound to CloudFrontFree (CloudFront pricing applies)
Outbound to EC2 (same region)Free
StrategyDescriptionPotential Savings
Use S3 Intelligent-TieringAutomatically moves data between tiersOptimized for unknown patterns
Implement lifecycle rulesAutomatically expire or transition objectsSignificant over time
Delete incomplete multipart uploadsClean up failed uploadsAvoids hidden storage costs
Use S3 Storage LensOrganization-wide visibility into storageIdentify waste
Enable S3 InventoryUnderstand what you’re storingMake informed decisions
Use requester paysCharge data consumers for requestsTransfer costs to users
Compress data before uploadReduce storage sizeUp to 70% storage reduction

Scenario: 100,000 uploads/day, 500 KB each, retained for 60 days

Storage (60 days): 3 TB × $0.023/GB = $65.80/month
PUT requests: 3M × $0.005/1K = $15.00/month
GET requests: 3M × $0.0004/1K = $1.20/month
Data transfer out: 1.5 TB × $0.09/GB = $128.75/month
Total: approximately $210.75/month

Cost savings recommendations:

  • Use lifecycle rules to expire old objects
  • Add CloudFront for CDN delivery (reduces transfer costs)
  • Use S3 Intelligent-Tiering for changing access patterns

LimitationValueImpact
Maximum object size5 TBLarger objects must be split
Maximum bucket count100 per account (soft limit)Request increase for more
Bucket name uniquenessGlobal across all AWSChoose unique names carefully
Region immutabilityCannot move bucket between regionsPlan region before creation
Key length1,024 bytes maximumVery long keys may impact performance
PracticeDescription
Use unique bucket namesRecommended across all regions
Plan region strategy firstBuckets cannot move between regions
Use meaningful key namesInclude prefixes for logical organization
Enable versioning for productionProtects against accidental deletions
Enable default encryptionAutomatically encrypt all new objects
Use lifecycle rules earlyPrevents cost spiral as data accumulates
PracticeDescription
Never use root user for S3 accessCreate IAM users or roles
Keep Block Public Access enabledUnless public access is explicitly required
Use bucket policies over ACLsSimpler, more powerful access control
Enable S3 access loggingAudit all requests
Use presigned URLs for temporary accessAvoid making objects public
Rotate access keys regularlyEvery 90 days
Enable MFA DeleteRequire MFA to delete versions
PracticeDescription
Tag all resourcesEnable cost tracking and management
Set up billing alertsAvoid unexpected charges
Monitor with S3 Storage LensOrganization-wide visibility
Regularly review bucket contentsIdentify and remove unnecessary data
Establish tagging conventions earlyEnforce across all applications
Test disaster recovery proceduresRegular restore testing

This glossary includes key terms directly related to Amazon S3.


Access Control List (ACL) A legacy access control mechanism for S3 buckets and objects. Allows granting read/write permissions to specific AWS accounts or predefined groups. For new buckets, ACLs are automatically disabled, with access managed through bucket policies and IAM .

Access Point A named network endpoint with a dedicated access policy for an S3 bucket. Simplifies managing access to shared datasets at scale .

Amazon S3 Simple Storage Service. An object storage service offering industry-leading scalability, data availability, security, and performance. Stores data as objects within buckets .


Block Public Access A set of security controls that ensures S3 buckets and objects do not have public access. All new buckets have Block Public Access enabled by default. Overrides other access permissions to enforce a “no public access” policy .

Bucket A container for objects stored in Amazon S3. Buckets are the highest-level organizational unit. Must have a globally unique name and are bound to a specific AWS region .

Bucket Policy A resource-based IAM policy attached to an S3 bucket that defines permissions for the bucket and its objects. Can grant cross-account access, public access, or restrict access based on conditions like IP address .


Cross-Region Replication (CRR) Automatic, asynchronous copying of objects from a bucket in one AWS region to a bucket in a different region. Used for disaster recovery, compliance, and latency reduction .


Data Transfer The movement of data into or out of S3. Inbound data transfer is free. Outbound transfer to the internet incurs charges per GB, with rates decreasing at higher volumes .

Durability The probability that an object will not be lost over a given year. S3 is designed for 99.999999999% (11 nines) data durability .


Encryption S3 automatically encrypts all object uploads as of January 5, 2023. Supports SSE-S3 (S3-managed keys), SSE-KMS (AWS KMS keys), DSSE-KMS (dual-layer), and SSE-C (customer-provided keys) .

Event Notification A mechanism that sends notifications to AWS Lambda, SQS, SNS, or EventBridge when objects are created, modified, or deleted. Enables event-driven architectures .


Glacier See S3 Glacier.


Intelligent-Tiering Storage class that automatically moves data between four access tiers (frequent, infrequent, archive, deep archive) based on changing access patterns. Small monthly monitoring fee but no retrieval charges .

Inventory A scheduled report of objects and their metadata in a bucket. Helps manage storage, classify data, and audit encryption status .


Key (Object Key) The unique identifier for an object within a bucket. Serves as the “filename” in the S3 namespace. Example: images/photo.jpg .


Lifecycle Rule A configuration that automatically transitions objects between storage classes or expires (deletes) objects based on age. Essential for cost optimization .


Multipart Upload A feature that allows uploading large objects in multiple parts. Recommended for objects larger than 100 MB. Improves throughput and recoverability .


Object A file and any metadata that describes that file. The fundamental entity stored in Amazon S3. Can be up to 5 TB in size .

Object Key See Key.


Presigned URL A URL that grants temporary access to a private S3 object. Contains authentication information and an expiration time. Generated using AWS CLI or SDK .

Prefix The part of an object key before the final slash. Used to create logical folder structures and improve request performance. Example: images/2024/ in key images/2024/photo.jpg.


Replication Automatic copying of objects from one S3 bucket to another. Supports both cross-region replication (CRR) and same-region replication (SRR) .


S3 Glacier Archive storage service integrated with S3. Includes three classes: Instant Retrieval (milliseconds), Flexible Retrieval (minutes to hours), and Deep Archive (12 hours) .

S3 Select Feature that allows applications to retrieve only a subset of data from an object using SQL-like expressions. Reduces data transfer and improves performance.

Same-Region Replication (SRR) Automatic copying of objects within the same AWS region. Used for log aggregation, dev/prod data sharing, and compliance .

Server Access Logging Detailed logging of all requests made against a bucket. Records requester, bucket name, request time, action, response status, and error codes .

Storage Class The tier of storage for an object, determining cost, availability, and retrieval time. Options include Standard, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, and Glacier Deep Archive .

Storage Lens Organization-wide visibility into S3 storage usage and activity. Provides metrics, trends, and recommendations for cost optimization.


Transfer Acceleration Feature that enables fast, secure, and easy transfers of files over long distances using AWS edge locations. Additional cost applies .


Versioning Feature that preserves, retrieves, and restores every version of every object stored in a bucket. Protects against accidental deletions and overwrites. Storage rates apply for every version stored .


Amazon S3 is the foundational storage service of AWS, providing virtually unlimited object storage with industry-leading durability, availability, and scalability. Its flexible storage classes, comprehensive security features, and deep integration with other AWS services make it the right choice for almost any data storage need.

Key Takeaways:

  • Buckets contain objects - Buckets are globally unique containers; objects are files with keys
  • Multiple storage classes - Choose based on access frequency from Standard (milliseconds) to Deep Archive (12-hour retrieval)
  • Secure by default - Automatic encryption, Block Public Access enabled by default, fine-grained IAM controls
  • Durability design - 99.999999999% (11 nines) durability across multiple facilities and Availability Zones
  • Lifecycle management - Automate transitions and expiration to optimize costs
  • Event-driven - Trigger Lambda, SQS, SNS on object changes
  • Cost-effective - Pay-as-you-go with free tier for new users

Getting Started Recommendations:

  • Start with S3 Standard for active data
  • Enable versioning for production buckets
  • Implement lifecycle rules early to prevent cost spiral
  • Keep Block Public Access enabled unless public access is required
  • Use bucket policies and IAM over ACLs
  • Tag all resources for cost tracking
  • Set up S3 Storage Lens for organization-wide visibility