This chapter dives deep into Amazon S3 Storage Classes and Lifecycle Policies—core concepts for the SAA-C03 exam (Domain 4: Cost-Optimized Architectures, Objective 4.2). You will learn the exact storage class characteristics, when to use each, and how to automate transitions via lifecycle rules. Approximately 10–15% of exam questions touch S3 storage classes or lifecycle management, often asking you to choose the most cost-effective class for a given access pattern or to configure a lifecycle rule correctly. Mastery of this topic is essential for passing the exam and for real-world cost optimization on AWS.
Jump to a section
Imagine you run a massive warehouse with multiple storage zones, each with different costs and retrieval speeds. The 'hot zone' (S3 Standard) is right next to the packing area—items here cost the most to store but can be retrieved instantly. The 'warm zone' (S3 Infrequent Access) is farther away, with lower storage costs but a small fee each time you retrieve an item. The 'cold zone' (S3 Glacier) is in a freezer unit: storage is very cheap, but to get an item out, you must request a thaw (retrieval), which takes minutes to hours and incurs a fee. The 'deep freeze' (Glacier Deep Archive) is a deep freezer: cheapest storage, but thawing takes 12 hours or more. You have a conveyor belt (Lifecycle Policy) that automatically moves items from hot to warm to cold based on how long they've been sitting. The warehouse manager (S3 Lifecycle) can also expire (delete) items after a set time. If you need an item from the freezer urgently, you can pay an expedited thaw fee (Expedited retrieval). This system ensures you pay the lowest storage cost for each item based on its access pattern, but you must plan ahead for retrieval times.
What Are S3 Storage Classes?
Amazon S3 offers multiple storage classes designed for different access patterns and durability/availability needs. Each class has a unique combination of storage cost, retrieval cost, retrieval time, and minimum storage duration. The classes are: - S3 Standard: For frequently accessed data. Durability: 99.999999999% (11 9's). Availability: 99.99%. No retrieval fee. Minimum storage duration: 30 days. Storage cost: highest among S3 classes. - S3 Intelligent-Tiering: Automatically moves data between two tiers (frequent and infrequent access) based on changing access patterns. No retrieval fees, but a monthly monitoring and automation fee per object (currently $0.0025 per 1,000 objects). Minimum storage duration: 30 days. Ideal for unknown or unpredictable access patterns. - S3 Standard-IA (Infrequent Access): For data accessed less frequently but requires rapid access when needed. Storage cost lower than Standard, but a per-GB retrieval fee applies. Minimum storage duration: 30 days. Availability: 99.9%. - S3 One Zone-IA: Same as Standard-IA but data is stored only in a single Availability Zone. Durability: 11 9's within that zone. Availability: 99.5%. Lower storage cost than Standard-IA. Not suitable for data that requires high availability or disaster recovery. - S3 Glacier Instant Retrieval: For archive data that needs millisecond retrieval. Storage cost lower than Standard-IA, but retrieval fee per GB. Minimum storage duration: 90 days. - S3 Glacier Flexible Retrieval: For archive data where retrieval times of minutes to hours are acceptable. Storage cost lower than Glacier Instant Retrieval. Retrieval options: Expedited (1–5 minutes), Standard (3–5 hours), Bulk (5–12 hours). Minimum storage duration: 90 days. - S3 Glacier Deep Archive: Lowest-cost storage class for data that is rarely accessed and retrieval times of 12 hours are acceptable. Retrieval options: Standard (12 hours), Bulk (48 hours). Minimum storage duration: 180 days. - S3 Outposts: For on-premises S3 storage using AWS Outposts. Not commonly tested on SAA-C03.
How Lifecycle Policies Work
S3 Lifecycle policies are rules applied to a bucket or a prefix/tag that automatically transition objects between storage classes or expire (delete) them after a specified number of days. A lifecycle rule consists of:
- Scope: Filter by prefix (e.g., logs/) or object tags (e.g., department=finance).
- Transitions: Move objects to a different storage class after N days. You can have multiple transitions in a rule. For example: Standard -> Standard-IA after 30 days -> Glacier Flexible Retrieval after 90 days -> Glacier Deep Archive after 180 days.
- Expiration: Permanently delete objects after N days. Can also expire incomplete multipart uploads and delete expired object delete markers.
- Noncurrent Version Transitions/Expiration: For versioned buckets, you can apply transitions and expiration to noncurrent versions separately.
Key constraints:
Objects must be at least 30 days old before transitioning to Standard-IA or One Zone-IA (unless using Intelligent-Tiering).
Objects must be at least 30 days old before transitioning to Intelligent-Tiering.
Objects must be at least 90 days old before transitioning to Glacier Instant Retrieval.
Objects must be at least 90 days old before transitioning to Glacier Flexible Retrieval.
Objects must be at least 180 days old before transitioning to Glacier Deep Archive.
Transitions can only go to a colder storage class (lower storage cost, higher retrieval cost/time). You cannot transition from Glacier to Standard automatically.
Lifecycle rules are evaluated once per day. The transition takes effect on the first day after the object meets the age requirement.
Configuration and Verification
You can configure lifecycle policies via AWS Management Console, AWS CLI, or SDKs. Example CLI command to apply a lifecycle rule:
aws s3api put-bucket-lifecycle-configuration --bucket my-bucket --lifecycle-configuration file://lifecycle.jsonExample lifecycle.json:
{
"Rules": [
{
"Id": "Archive logs after 30 days",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}To verify the policy:
aws s3api get-bucket-lifecycle-configuration --bucket my-bucketTo view object storage class:
aws s3api head-object --bucket my-bucket --key logs/2023/01/01/app.logThe output includes StorageClass field.
Interaction with Versioning
When versioning is enabled, lifecycle rules can target current and noncurrent versions separately. For example, you can keep the current version in Standard for 30 days, transition noncurrent versions to Glacier immediately, and expire noncurrent versions after 90 days. This is crucial for cost optimization with versioned buckets.
Lifecycle and Replication
Lifecycle policies can be applied to source and destination buckets independently. Replication does not automatically replicate lifecycle transitions. If you want the same lifecycle behavior on the destination, you must configure it separately. Also, note that lifecycle expiration deletes objects permanently; if replication is configured, the delete marker is replicated, but the actual deletion of the source object does not delete the replica unless you use S3 Replication with Delete Marker replication (which replicates delete markers, not permanent deletions).
Storage Class Analysis
S3 Storage Class Analysis helps you decide when to transition objects to a different storage class by analyzing access patterns. It provides recommendations and can be used to automate tiering with Intelligent-Tiering. The analysis runs for 30 days before providing recommendations.
Create an S3 bucket
Start by creating an S3 bucket in the AWS Management Console or via CLI. Choose a globally unique name and select a region. Enable versioning if needed. No storage class is set at bucket level; storage class is per object. The default storage class for new objects is S3 Standard unless specified at upload.
Define a lifecycle rule
In the bucket's Management tab, click 'Create lifecycle rule'. Give the rule a name (e.g., 'Move logs to IA'). Choose the scope: apply to entire bucket, a prefix (e.g., 'logs/'), or object tags (e.g., 'archive=true'). Then define transitions: for example, transition to Standard-IA after 30 days, to Glacier after 90 days. Also set expiration to delete after 365 days. Ensure you respect minimum age constraints: 30 days for IA, 90 days for Glacier, 180 days for Deep Archive.
Upload objects with appropriate prefixes/tags
Upload objects that match the rule's filter. For example, upload log files with prefix 'logs/'. The lifecycle rule will automatically apply to these objects. You can also upload objects directly to a specific storage class by specifying the storage class at upload time (e.g., `--storage-class STANDARD_IA` in CLI).
Monitor lifecycle transitions
After the specified number of days, S3 will automatically transition objects to the target storage class. You can verify by checking the object's storage class via the console or CLI (head-object). Note that transitions happen asynchronously and may take up to 24 hours after the day threshold is met. There is no charge for transition operations, but you pay storage costs for the destination class from the transition date.
Handle retrieval from Glacier
If you need to access an object that has been transitioned to Glacier, you must initiate a restore request. For Glacier Flexible Retrieval, you can choose expedited (1-5 min), standard (3-5 hours), or bulk (5-12 hours). For Deep Archive, only standard (12 hours) and bulk (48 hours) are available. Restored objects are available for a specified duration (default 1 day). You can restore via CLI: `aws s3api restore-object --bucket my-bucket --key mykey --restore-request '{"Days":7,"GlacierJobParameters":{"Tier":"Expedited"}}'`.
Scenario 1: Enterprise Log Archiving
A financial services company generates terabytes of application logs daily. Compliance requires retaining logs for 7 years. Initially, logs are accessed frequently for troubleshooting (first 30 days). After that, access drops to near zero, but they must be available within 4 hours for audits. The solution: Store logs in S3 Standard for 30 days, then transition to Glacier Flexible Retrieval (standard retrieval, 3-5 hours) for the remainder of the 7-year period. Lifecycle rule: Standard -> (30 days) -> Glacier. At scale (10 TB/day), this reduces storage costs by ~80% compared to keeping all data in Standard. Common pitfall: Forgetting to set a minimum storage duration of 30 days for the transition to IA, but here they go directly to Glacier, which requires 90 days. So they must keep in Standard for 90 days or use a two-step transition: Standard -> Standard-IA after 30 days -> Glacier after 90 days. The latter is more cost-effective.
Scenario 2: Media Content Distribution
A video streaming platform stores raw footage and transcoded files. Raw footage is accessed rarely after initial processing, so it can be stored in Glacier Deep Archive. Transcoded files are accessed frequently for the first week, then sporadically. They use S3 Intelligent-Tiering for transcoded files to automatically optimize costs. After 90 days, they transition to Glacier Deep Archive. Lifecycle rule with Intelligent-Tiering: no transition needed for first 30 days (Intelligent-Tiering automatically moves between frequent and infrequent tiers), then transition to Deep Archive after 90 days. Performance consideration: Retrieval from Deep Archive takes 12 hours, so they pre-fetch popular content during off-peak hours.
Scenario 3: Backup and Disaster Recovery
A healthcare provider uses S3 for backup data. Backups are taken daily and retained for 30 days in Standard for quick restore. After 30 days, they move to Standard-IA for 60 days (lower cost, still quick restore). After 90 days, they move to Glacier for 1 year, then to Deep Archive for 7 years. They also enable S3 Versioning to protect against accidental deletion. Lifecycle rules handle noncurrent versions: transition noncurrent versions to Glacier immediately after they become noncurrent, and expire them after 90 days. This keeps storage costs minimal while maintaining restore flexibility. Common misconfiguration: Setting expiration too early, causing data loss before compliance retention ends. They use S3 Object Lock with retention mode to prevent premature deletion.
What SAA-C03 Tests (Objective 4.2)
The exam will ask you to select the most cost-effective storage class or lifecycle rule given a scenario. Key points: - Access patterns: Frequent (Standard), Infrequent (Standard-IA or One Zone-IA), Unknown (Intelligent-Tiering), Archives (Glacier/Deep Archive). - Retrieval time: Milliseconds (Standard, IA, Glacier Instant), minutes to hours (Glacier Flexible), 12+ hours (Deep Archive). - Minimum storage duration: 30 days for IA/Intelligent-Tiering, 90 days for Glacier, 180 days for Deep Archive. - Lifecycle constraints: Transitions can only go to colder classes; cannot transition to Standard from colder classes automatically. - Versioning: Lifecycle can target current and noncurrent versions separately.
Common Wrong Answers and Why
Choosing S3 Standard-IA for frequently accessed data: Candidates think 'IA saves money', but retrieval fees make it more expensive than Standard if accessed often. The exam will give a scenario with high access frequency.
Transitioning to Glacier before 30 days: The exam may present a lifecycle rule that transitions after 10 days. This is invalid; minimum is 30 days for IA/Intelligent-Tiering, 90 for Glacier.
Using Glacier for data that needs immediate retrieval: Glacier retrieval times are minutes to hours; for millisecond access, use Standard, IA, or Glacier Instant Retrieval.
Enabling Intelligent-Tiering without understanding the monitoring fee: For large numbers of small objects, the per-object fee can outweigh savings. The exam may test cost trade-offs.
Assuming lifecycle rules replicate across regions: Lifecycle is per-bucket; you must configure separately for destination buckets in replication.
Specific Numbers and Terms
99.999999999% durability (11 9's) for all classes except One Zone-IA (still 11 9's within a single AZ).
99.99% availability for Standard; 99.9% for Standard-IA; 99.5% for One Zone-IA.
Minimum storage duration: 30 days (Standard-IA, One Zone-IA, Intelligent-Tiering), 90 days (Glacier Instant, Glacier Flexible), 180 days (Deep Archive).
Retrieval tiers: Expedited (1-5 min), Standard (3-5 hours for Glacier, 12 hours for Deep Archive), Bulk (5-12 hours for Glacier, 48 hours for Deep Archive).
Lifecycle evaluation: once per day.
Edge Cases
Objects smaller than 128KB: Not charged for transition operations, but may not be cost-effective to transition due to minimum storage duration charges.
Lifecycle with versioning: Expired object delete markers are not automatically removed; you need a separate lifecycle rule to delete them.
Lifecycle and replication: If you delete an object via lifecycle, the delete marker is replicated if you have Delete Marker replication enabled, but the actual object in the destination bucket remains unless you have a separate lifecycle on the destination.
How to Eliminate Wrong Answers
If the scenario mentions 'millisecond retrieval' and 'archive', eliminate Glacier and Deep Archive; choose Glacier Instant Retrieval or Standard-IA.
If the scenario mentions 'unknown access pattern', choose Intelligent-Tiering.
If the scenario mentions 'lowest cost for rarely accessed data with retrieval time of 12 hours acceptable', choose Deep Archive.
If the scenario includes 'compliance requirement to retain for 7 years', ensure lifecycle expiration is not set before 7 years; use Object Lock for write-once-read-many (WORM).
S3 Standard: highest storage cost, no retrieval fee, 99.99% availability, 30-day minimum for transitions.
S3 Standard-IA: lower storage cost, retrieval fee per GB, 30-day minimum, 99.9% availability.
S3 One Zone-IA: lowest storage cost among IA classes, single AZ, 99.5% availability, 30-day minimum.
S3 Intelligent-Tiering: automatic cost optimization for unknown patterns, monthly monitoring fee per object, 30-day minimum.
S3 Glacier Instant Retrieval: millisecond retrieval for archive, 90-day minimum, higher storage cost than other Glacier classes.
S3 Glacier Flexible Retrieval: retrieval times from minutes to hours, 90-day minimum, Expedited retrieval available.
S3 Glacier Deep Archive: lowest storage cost, 12-hour retrieval, 180-day minimum, no Expedited.
Lifecycle transitions can only move to colder classes; minimum age constraints apply.
Lifecycle expiration permanently deletes objects; use with caution for compliance data.
For versioned buckets, lifecycle rules can target current and noncurrent versions separately.
These come up on the exam all the time. Here's how to tell them apart.
S3 Standard-IA
Stored in at least 3 Availability Zones
Availability: 99.9%
Suitable for data that needs high durability across AZ failures
Higher storage cost than One Zone-IA
Same retrieval fee per GB as One Zone-IA
S3 One Zone-IA
Stored in a single Availability Zone
Availability: 99.5%
Suitable for non-critical, reproducible data
Lower storage cost than Standard-IA
Same retrieval fee per GB as Standard-IA
S3 Glacier Flexible Retrieval
Retrieval: Expedited (1-5 min), Standard (3-5 hours), Bulk (5-12 hours)
Minimum storage duration: 90 days
Storage cost: moderate among archive classes
Ideal for data that may need occasional access within hours
Can use Expedited retrieval for urgent needs
S3 Glacier Deep Archive
Retrieval: Standard (12 hours), Bulk (48 hours)
Minimum storage duration: 180 days
Storage cost: lowest among all S3 classes
Ideal for data that is accessed rarely, e.g., compliance archives
No Expedited retrieval option
Mistake
S3 Intelligent-Tiering automatically moves objects to Glacier.
Correct
Intelligent-Tiering only moves between two tiers: Frequent Access and Infrequent Access. It does not move to Glacier or Deep Archive automatically. You must add a lifecycle rule for that.
Mistake
You can transition objects from Glacier to Standard automatically.
Correct
Lifecycle transitions only move to colder storage classes; they cannot move back to hotter classes. To move from Glacier to Standard, you must manually restore and copy the object.
Mistake
S3 One Zone-IA is cheaper than Standard-IA and has the same durability.
Correct
One Zone-IA is cheaper, but data is stored in a single Availability Zone. Durability is still 11 9's within that zone, but if the zone is destroyed, data is lost. Standard-IA stores data in at least 3 AZs, so it survives AZ failures.
Mistake
Lifecycle rules can transition objects to any storage class after any number of days.
Correct
There are minimum storage duration requirements: 30 days for Standard-IA/One Zone-IA/Intelligent-Tiering, 90 days for Glacier Instant/Glacier Flexible, 180 days for Deep Archive. Transitions attempted before these days are ignored.
Mistake
Lifecycle expiration deletes objects immediately on the specified day.
Correct
Expiration occurs on the day after the object reaches the specified age. For example, if expiration is set to 30 days, an object uploaded on Jan 1 will be deleted on Jan 31 (the 31st day). The exact time within the day is unpredictable.
Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.
Glacier (Flexible Retrieval) offers retrieval times of minutes to hours (Expedited: 1-5 min, Standard: 3-5 hours, Bulk: 5-12 hours) with a minimum storage duration of 90 days. Glacier Deep Archive has the lowest storage cost but retrieval times of 12 hours (Standard) or 48 hours (Bulk) and a minimum storage duration of 180 days. Choose Glacier if you need faster retrieval; choose Deep Archive for the cheapest long-term storage where retrieval latency is acceptable.
Yes, but you must respect the minimum storage duration of 180 days. The object must be at least 180 days old before the transition takes effect. If you try to transition earlier, the rule will be ignored until the object reaches 180 days. A better approach might be to transition to Standard-IA after 30 days, then to Glacier after 90 days, then to Deep Archive after 180 days to optimize costs along the way.
S3 Intelligent-Tiering monitors access patterns and moves objects between two tiers: Frequent Access and Infrequent Access. If an object is not accessed for 30 consecutive days, it is moved to the Infrequent Access tier. If it is accessed again, it is moved back to Frequent Access. There is no retrieval fee, but a monthly monitoring and automation fee per object ($0.0025 per 1,000 objects). It is ideal for data with unknown or changing access patterns. Note that it does not move objects to Glacier automatically.
The expiration will occur on the day after the object reaches 30 days. For example, if you upload an object on day 0, it will be deleted on day 31. The lifecycle rule is evaluated once per day, so the deletion happens on the next day after the object's age meets the threshold.
Yes. You can add an expiration action specifically for incomplete multipart uploads in your lifecycle rule. You specify the number of days after the upload initiation to abort the upload and delete the parts. This is useful for cleaning up abandoned multipart uploads that would otherwise incur storage costs.
Yes. You can define separate lifecycle rules for current versions and noncurrent versions. For example, you can transition current versions to Standard-IA after 30 days, and transition noncurrent versions to Glacier immediately after they become noncurrent. You can also expire noncurrent versions after a specified number of days.
There is no minimum object size for transitions, but objects smaller than 128KB are not charged for the transition operation. However, you still pay storage costs in the destination class. For very small objects, the cost savings from transitioning may be minimal due to the minimum storage duration charges if you delete early.
You've just covered S3 Storage Classes and Lifecycle — now see how well it sticks with free SAA-C03 practice questions. Full explanations included, no account needed.
Done with this chapter?