Cost-Optimized Storage: S3 Classes, Lifecycle Policies, and EBS Economics
Cost-optimized storage on AWS means choosing the storage service, class, size, lifecycle and transfer method that meets every stated requirement at the lowest total cost — storage, requests, retrievals and minimum-duration charges included. Task 4.1 covers reading the bill with cost allocation tags, Cost Explorer, Budgets and the Cost and Usage Report; matching S3 storage classes to access patterns without tripping minimum-duration or retrieval-fee traps; automating transitions and cleanup with lifecycle policies; choosing S3 Intelligent-Tiering when patterns are unknown; trimming EBS spend with gp3, right-sizing and snapshot hygiene; tiering EFS and choosing between S3, EBS, EFS and FSx; designing backups and archives; and picking the cheapest way to move data onto AWS storage with DataSync, Transfer Family or Storage Gateway. It sits inside Design Cost-Optimized Architectures, and storage is the half of that domain with the most moving parts. Most questions carry a cost qualifier — several options work, and the skill is eliminating the ones that overpay or that save money by silently breaking a requirement. By the end of this lesson you will pick the right storage class, lifecycle rule, volume type, backup plan and transfer method for any access pattern, and explain the cost trap in each losing option.
On this page10 sections
- See the spend first: tags, Cost Explorer, Budgets, and the CUR
- S3 storage classes: price by access pattern
- The traps: minimum durations, retrieval fees, and frequent access
- Lifecycle policies: transition, expire, and clean up versions
- Intelligent-Tiering for unknown patterns, and Requester Pays
- EBS economics and the storage-waste checklist
- EFS lifecycle, and choosing the lowest-cost service: S3 vs EBS vs EFS
- Backups and archives: Glacier tiers and AWS Backup
- Moving data in cheaply: DataSync, Transfer Family, and Storage Gateway
- Worked scenarios: reasoning through Task 4.1 questions
- Select the correct S3 storage class from an access pattern by pricing storage, retrievals and minimum-duration charges together
- Design S3 lifecycle policies that transition and expire current versions, noncurrent versions, delete markers and incomplete multipart uploads
- Decide when S3 Intelligent-Tiering (including its optional archive tiers) beats hand-picked classes, and when Requester Pays shifts costs correctly
- Cut EBS spend with gp3 over gp2, HDD volumes for sequential workloads, right-sizing, and snapshot cleanup and archiving
- Choose the lowest-cost storage service — S3, EBS, EFS or FSx — for a stated workload, including when capacity must scale automatically
- Pick the cheapest backup, archival and data-migration design using Glacier tiers, AWS Backup, DataSync, Transfer Family and Storage Gateway
- Match each cost-management tool — cost allocation tags, Cost Explorer, Budgets, Data Exports (CUR 2.0), Cost Anomaly Detection — to its job
S3 storage classes: price by access pattern
Every S3 class trades storage price against access price, and the cheapest class is the one whose total of storage, request, retrieval and minimum-duration charges is lowest for the stated pattern. S3 Standard has the highest per-GB storage cost of the general classes but no retrieval fee, no minimum storage duration and no minimum object size — the default for data accessed frequently or kept only briefly. S3 Standard-IA (Infrequent Access) charges much less per GB stored but adds a per-GB retrieval fee, a 30-day minimum storage duration and a 128 KB minimum billable object size — right for data read roughly monthly with millisecond access. S3 One Zone-IA costs less again by storing data in a single Availability Zone: same fees and minimums as Standard-IA, but the data does not survive the loss of that AZ, so it is only correct for data that is re-creatable or replicated elsewhere — secondary backup copies, easily regenerated thumbnails.
The Glacier family trades access cost and retrieval time for storage price. Glacier Instant Retrieval keeps millisecond access at a fraction of Standard-IA's storage price, with a 90-day minimum, a 128 KB minimum billable size and a higher retrieval fee. Glacier Flexible Retrieval drops to asynchronous restores measured in minutes to hours (expedited, standard, and free bulk options), also with a 90-day minimum — the archive for data you can wait for. Glacier Deep Archive is the cheapest storage in S3, with standard restores completing within 12 hours (bulk within 48) and a 180-day minimum — for compliance archives touched once a year or less.
| Access pattern | Class | Cost trap to check |
|---|---|---|
| Frequent, or kept only days to a couple of weeks | S3 Standard | None — but priciest per GB stored |
| About monthly, needs millisecond access | Standard-IA | Retrieval fee; 30-day minimum; 128 KB minimum billable size |
| Infrequent, re-creatable or copied elsewhere | One Zone-IA | Single-AZ — wrong if the data is the only copy |
| Unknown or shifting pattern | Intelligent-Tiering | Per-object monitoring fee; objects under 128 KB not monitored |
| A few times a year, must stay millisecond | Glacier Instant Retrieval | 90-day minimum; retrieval fee higher than Standard-IA's |
| Archival, can wait minutes–hours | Glacier Flexible Retrieval | 90-day minimum; restore is asynchronous |
| Compliance archive, can wait ~12 hours | Glacier Deep Archive | 180-day minimum; slowest restore |
| Hot data needing single-digit-millisecond latency | S3 Express One Zone | Performance class, not a saving — costs several times S3 Standard per GB |
Standard-IA versus Glacier Instant Retrieval is arithmetic, not a label. Both read in milliseconds. Glacier Instant Retrieval stores data for roughly a third of Standard-IA's per-GB price, but its per-GB retrieval fee is about three times Standard-IA's. If each object is read about once a month, the extra retrieval cost outweighs the storage saving and Standard-IA is cheaper; if each object is read a few times a year, the storage saving dominates and Glacier Instant Retrieval wins. Work it per GB per month: storage price plus (fraction of the data read each month × retrieval fee). The same reasoning puts data read several times a week in S3 Standard — retrieval fees on any IA or Glacier class would exceed the storage saving.
S3 Express One Zone is a separate high-performance class stored in directory buckets in a single Availability Zone, built for frequently accessed, latency-sensitive data such as ML training or interactive analytics scratch data. Its per-GB storage price is several times S3 Standard's (its request charges are lower), and like any single-AZ class it is not for the only copy of important data. Choose it when the requirement is speed next to co-located compute; it never answers a requirement to cut storage cost.
Exam scenarios encode the pattern in phrases: "accessed a few times a month but must be immediately available" (Standard-IA), "can be regenerated" (One Zone-IA), "retrieved within 12 hours for an audit" (Deep Archive). Match the phrase, then verify no trap in the next section disqualifies the pick.
The traps: minimum durations, retrieval fees, and frequent access
The wrong answers in storage-class questions are rarely nonsense — they are cheaper-looking classes that a hidden charge makes more expensive. Three traps account for almost all of them, and each is settled by arithmetic rather than by rule of thumb.
Minimum storage duration. Standard-IA and One Zone-IA bill a minimum of 30 days; Glacier Instant and Flexible Retrieval bill 90 days; Deep Archive bills 180 days. Delete, overwrite or transition an object earlier and you are charged for the remaining days anyway. The trap bites hardest between S3 Standard and the IA classes for very short-lived data: Standard-IA's per-GB price is a little over half of Standard's, so an object billed for 30 days in Standard-IA costs about what roughly two weeks in Standard costs. Data deleted after days to a couple of weeks therefore belongs in S3 Standard however rarely it is read. Between archive tiers the effect is smaller than it looks: Deep Archive's storage price is so low that an object billed for its full 180 days still costs less than three months in Glacier Flexible Retrieval or Standard-IA. So a 90- or 120-day archive that can wait hours for a restore can still be cheapest in Deep Archive — compare (price × billed months) for each candidate rather than assuming any early deletion disqualifies a class. Retrieval fees and the restore time must still fit the scenario.
Retrieval fees against real access frequency. Every class below Standard charges per GB retrieved. Infrequent-access pricing only wins when access truly is infrequent: put a working dataset that analysts hit daily into Standard-IA and the retrieval fees swamp the storage savings. Read the stated access frequency literally and price the retrievals, not just the storage.
Small objects and request charges. Standard-IA, One Zone-IA and Glacier Instant Retrieval bill each object as at least 128 KB, so a bucket of tiny objects pays for space it does not use. S3 Intelligent-Tiering does not monitor or tier objects smaller than 128 KB — they stay at the frequent-access rate (with no monitoring fee). Objects archived to Glacier Flexible Retrieval or Deep Archive also carry a small per-object metadata overhead, and every lifecycle transition is billed per object. And every PUT is a billed request. The official skill here is batching: aggregating many small records (log lines, sensor readings, events) into fewer, larger objects before upload — for example with Amazon Data Firehose buffering or a tar/Parquet bundling step — cuts PUT and transition request charges and lets the objects qualify for IA and archive pricing. Individual uploads make sense when each object must be addressable and available on its own the moment it is written.
Treat these as a veto checklist: an option can name a cheaper class, but if the scenario's retention, access frequency or object size makes the total cost higher, the option is wrong — and the question was testing exactly that.
Lifecycle policies: transition, expire, and clean up versions
An S3 Lifecycle configuration automates the cost curve of data — hot when new, cooling with age, eventually deletable — so nobody has to remember to move or delete anything. A lifecycle rule attaches to a bucket (optionally scoped by prefix, tags or object size) and has two action types. Transition actions move objects to a cheaper class at an age counted from object creation: to Standard-IA after 30 days, to Glacier Flexible Retrieval after 90, to Deep Archive after 365. Transitions are a one-way waterfall down the price list — lifecycle never moves data back up. Transitions into Standard-IA or One Zone-IA are only allowed once an object is at least 30 days old. Expiration actions delete objects at a set age — the mechanism behind every "retain for seven years, then delete" requirement. A good design checks each phase against the next class's minimum duration and the final expiration age.
On a versioned bucket, lifecycle earns its keep twice over, because versioning quietly multiplies storage: every overwrite and delete keeps the old version, billed at full price, until something removes it. The two kinds of action behave differently there:
| Lifecycle action | Acts on | Effect on a versioned bucket |
|---|---|---|
Expiration (days or date) | Current versions | Adds a delete marker; the old data becomes a noncurrent version and keeps billing |
NoncurrentVersionTransition | Noncurrent versions only | Moves old versions to a cheaper class after NoncurrentDays |
NoncurrentVersionExpiration | Noncurrent versions only | Permanently deletes them NoncurrentDays after they became noncurrent; NewerNoncurrentVersions keeps a set number of the most recent ones |
ExpiredObjectDeleteMarker | Delete markers with no versions left behind them | Removes the leftover markers |
So a versioned bucket billed for many times its live data is pointing at noncurrent versions, and the fix is a noncurrent-version expiration rule tuned with NoncurrentDays and, if governance needs the last few versions, NewerNoncurrentVersions — not suspending versioning, which leaves the existing versions in place. A plain Expiration rule does not shrink that bill; it only adds delete markers.
Know the bucket's versioning state before choosing rules. In the S3 console a bucket's versioning status is Disabled if versioning has never been enabled, Enabled, or Suspended if it was enabled and later suspended (a bucket can never return to Disabled). On a bucket that has never been versioned there are no noncurrent versions or delete markers, so NoncurrentVersionExpiration and ExpiredObjectDeleteMarker have nothing to act on, and Expiration deletes objects permanently. A Suspended bucket may still hold old versions and needs the noncurrent rules.
The third cleanup target is invisible in the console's object list: incomplete multipart uploads. A multipart upload that never completes leaves its uploaded parts in the bucket, billed, indefinitely. The AbortIncompleteMultipartUpload lifecycle action deletes those parts a set number of days after the upload started, and it belongs in effectively every bucket that receives large uploads, versioned or not.
Exam questions test lifecycle as design: given stated ages and retention, assemble the transition-and-expire sequence that respects every class's minimum duration — and recognize versioning bloat and abandoned multipart parts as lifecycle problems, not manual-cleanup ones.
Intelligent-Tiering for unknown patterns, and Requester Pays
S3 Intelligent-Tiering is the storage class for data whose access pattern is unknown or changing: it monitors each object and moves it between tiers automatically, so you never have to predict the curve. The automatic tiers are Frequent Access, Infrequent Access after 30 consecutive days without access, and Archive Instant Access after 90 days — all with millisecond reads. You can also opt in, per bucket or prefix, to two asynchronous tiers: Archive Access (objects not accessed for at least 90 days, configurable upward) and Deep Archive Access (at least 180 days, configurable upward). Objects in those two tiers must be restored before they can be read — standard restores from Deep Archive Access complete within 12 hours — so opt in only when the workload tolerates that delay for long-idle objects. When an object is accessed again, it moves back to the Frequent Access tier automatically — something a lifecycle waterfall can never do.
The key difference from lifecycle rules is the clock: Intelligent-Tiering counts time since last access for each object, whereas lifecycle transitions count time since creation. That difference decides which requirements each can meet. A rule phrased in terms of age ("archive everything older than a year") is a lifecycle rule; a rule phrased in terms of recent use ("keep anything someone has opened recently readable instantly") can only be met by a per-object last-access clock, because an age-based rule archives an old object even if it was read yesterday. When you opt in to the asynchronous tiers, set the threshold no shorter than the idle period the requirement protects: any object idle longer than the threshold needs a restore before it can be read, and anything idle for less stays instantly readable.
Its economics are the decision rule. Intelligent-Tiering charges a small per-object monitoring and automation fee, but it has no retrieval fees and no minimum storage duration. That makes it the safe default when patterns are unknown: you can never be ambushed by a retrieval bill. The caveats: objects smaller than 128 KB are not monitored or tiered (they stay at the Frequent Access rate), so millions of tiny objects gain nothing; and if the access pattern is genuinely known, an explicit lifecycle into IA or Glacier is cheaper because it skips the monitoring fee.
Requester Pays answers a different question: not how data is stored, but who pays to access it. Normally the bucket owner pays for requests and data transfer out. Enabling Requester Pays on a bucket shifts those request and transfer costs to the requester, who must be an authenticated AWS principal that flags the request accordingly (anonymous access is not allowed) — the owner keeps paying for storage. It fits organizations sharing large datasets with other AWS accounts: each consumer pays for its own downloads. Access controls such as bucket policies, presigned URLs or access points decide who may read; they do not change who pays.
EBS economics and the storage-waste checklist
EBS bills on what you provision, not what you use — a 1 TB volume holding 100 GB costs the same as one that is full — so EBS cost design is about provisioning less, and provisioning smarter. The headline rule: choose gp3 over gp2. gp3 has a lower per-GB price and includes a baseline of 3,000 IOPS and 125 MiB/s regardless of volume size, with more IOPS and throughput provisionable independently. gp2's performance scales with size (3 IOPS per GB), which forced a notorious anti-pattern: oversizing a volume purely to buy IOPS. Reach for io1/io2 only when the workload needs more IOPS or durability than gp3 provides. Below the SSDs, the HDD types are cheap per GB but suited to sequential access: st1 (throughput-optimized) for frequently accessed large sequential workloads like log processing, sc1 (cold HDD) as the cheapest EBS option for infrequent sequential access. Neither can be a boot volume, and both are wrong for random I/O.
Elastic Volumes changes a volume's type, IOPS and throughput, and increases its size, while it stays attached — so gp2-to-gp3 is an online change. It cannot decrease size. Right-sizing an oversized volume therefore means creating a new, smaller (gp3) volume and copying the data across, typically in a maintenance window; an option that "shrinks the volume online with Elastic Volumes" is factually wrong.
The other recurring shape is the audit: "storage spend keeps growing although the workload has not changed." Treat the answer as a checklist of leaks.
- Unattached EBS volumes. Terminating an instance does not delete non-root volumes by default; volumes in the
availablestate bill at full price while doing nothing. When no one is sure the data is unneeded, snapshot them (snapshots bill only for data actually stored, at a lower per-GB price) and then delete the volumes. - Old EBS snapshots. Snapshots are incremental, and deleting old ones is safe — AWS preserves any blocks newer snapshots still reference. Automate retention with Amazon Data Lifecycle Manager or AWS Backup, but note that a DLM policy only manages (and deletes) snapshots that policy created; a backlog of pre-existing manual snapshots must be deleted directly or by a one-off script.
- EBS Snapshots Archive for long-retention snapshots. Archiving converts a snapshot into a full (not incremental) copy in a much cheaper tier, with a 90-day minimum archive period and restores that take up to 72 hours. It pays off only for snapshots kept for months or years and rarely restored — month-end compliance snapshots, not daily operational ones.
- Noncurrent object versions in versioned buckets — the symptom is bucket storage far exceeding the live dataset.
- Incomplete multipart uploads — invisible billed parts, cleaned by
AbortIncompleteMultipartUpload.
The exam tests this section as swap-spotting and leak-hunting: find the gp2, the oversized volume, the SSD doing sequential batch work, or the named leaks — and prefer the option that fixes them with standing automated policies, since a standing policy beats a quarterly manual cleanup.
EFS lifecycle, and choosing the lowest-cost service: S3 vs EBS vs EFS
The lowest-cost storage service is the cheapest one whose interface the workload actually needs: object (S3), block (EBS) or shared file (EFS, FSx). S3 is the cheapest per GB and the default whenever the application can read and write over an API — static assets, documents, backups, data lakes, anything write-once-read-many. EBS is block storage attached to one instance (Multi-Attach is a niche io1/io2 feature within one AZ), priced on provisioned capacity — required for databases and boot volumes, wasteful as a document store. EFS costs more per GB stored but is a shared NFS file system mounted by many Linux instances concurrently across AZs; pay that premium only when shared file access is a stated requirement.
Storage auto scaling. Decide whether capacity must grow (or shrink) on its own. S3 and EFS are elastic — you pay for bytes actually stored, with no capacity to provision or resize — so they are the answer when growth is unpredictable or a team keeps enlarging a volume by hand. EBS volumes and most FSx file systems have provisioned capacity: you pay for the size you set, can grow it, and cannot shrink an EBS volume in place. A workload with steady, known capacity is fine on provisioned storage; one whose data grows continuously belongs on elastic storage or needs automation around the volume. (Database storage autoscaling, such as RDS, is covered with database cost.)
EFS lifecycle management is EFS's cost tiering: files not accessed for a configured period (for example 30 days) move from EFS Standard to EFS Infrequent Access, and long-idle files can move further to EFS Archive, each at a fraction of the per-GB price; a file can be moved back to Standard on its next access if you configure it. IA and Archive charge per-GB access fees, so the win depends on the data really being cold — but for a file share where most files are written once and rarely reopened, enabling lifecycle management is the standard answer to "reduce EFS costs without changing the application." EFS One Zone storage costs less again but lives in one AZ — wrong when instances across several AZs must keep working through an AZ failure.
Amazon FSx is chosen for workload compatibility rather than as the cheap default: FSx for Windows File Server for SMB and Active Directory, FSx for NetApp ONTAP or OpenZFS for those feature sets, and FSx for Lustre for high-throughput HPC and ML jobs. Lustre has two deployment families with a clear cost split:
| FSx for Lustre | Scratch | Persistent |
|---|---|---|
| Data protection | No replication — data on a failed server is lost | Data replicated within the AZ; file servers replaced automatically |
| Cost | Lowest | Higher |
| Fits | Temporary processing of data that can be re-created from S3 | Long-running workloads and data that must persist on the file system |
A Lustre file system can be linked to an S3 bucket (a data repository association): it imports objects as files for processing and exports results back to S3. That makes a scratch file system created for each processing run, linked to S3 and deleted afterwards, the cheapest pattern for a periodic burst job whose source data lives in S3 — you pay for the high-performance file system only while it runs.
The exam encodes the choice in the requirement's verbs: "accessed via API / static website / archive" means S3; "attached to an instance / low-latency block" means EBS; "shared by multiple instances / mounted concurrently" means EFS (or FSx for Windows or HPC needs). The classic trap offers EFS or EBS for content that could live in S3 — if nothing demands a file system or block device, the cost-optimized answer is S3.
Backups and archives: Glacier tiers and AWS Backup
The cheapest archive is chosen by how long you can wait for the data back, then checked against retention. Retrieval tolerance selects the Glacier tier — milliseconds means Glacier Instant Retrieval, minutes to a few hours means Flexible Retrieval (expedited restores in minutes, standard in hours), and up to 12 hours or more means Deep Archive, the cheapest storage on AWS and the default for "retain seven years for compliance, read at most once a year." Always cross-check retention against minimum durations (90/90/180 days) by arithmetic, as in the traps section.
AWS Backup centralizes backup policy across services — EBS, EC2, RDS, EFS, DynamoDB, FSx, S3 and more. A backup plan holds rules that set frequency, retention and lifecycle; resources are assigned to it by tag or ID, so new volumes and file systems are protected automatically. That is the low-overhead answer to per-service backup scripts. (Amazon Data Lifecycle Manager covers only EBS snapshots and EBS-backed AMIs, and EFS lifecycle management is storage tiering, not backup.)
AWS Backup lifecycle can move recovery points to cold storage for supported resources, with rules that shape the design:
- Retention must be at least 90 days longer than the move-to-cold-storage setting. A short-retention rule (for example daily backups kept 35 days) therefore stays in warm storage.
- For EBS, cold storage uses the EBS Snapshots Archive tier, and only backups from rules that run monthly or less frequently can be archived.
- Cold restores are slower, so cold storage suits recovery points that are rarely restored.
The resulting pattern is two rules in one plan: a daily rule with short retention in warm storage for routine restores, and a monthly rule with long retention that moves to cold storage for compliance. "Centrally manage and automatically expire backups across services" is AWS Backup; per-service scripting is the overhead distractor.
Moving data in cheaply: DataSync, Transfer Family, and Storage Gateway
The lowest-cost way to get data into AWS storage is the managed service that matches how the data arrives — a one-time or scheduled bulk copy (DataSync), partner uploads over file-transfer protocols (Transfer Family), or ongoing on-premises access with local caching (Storage Gateway). Two cost anchors apply to all of them: data transfer into AWS is free, and traffic between EC2 and S3 in the same Region is free; cross-Region replication and internet egress are the transfers that cost money.
AWS DataSync is the online mover for file and object data — NFS, SMB, HDFS and other clouds' object stores into S3, EFS or FSx, and between AWS storage services. It runs tasks on a schedule, can throttle bandwidth so production traffic is not starved during business hours, copies only changed data on later runs, and verifies integrity of what it transferred — no scripts to write or maintain. Do the bandwidth math first: a dataset that fits the usable link in the time allowed is a DataSync job. AWS Snowball Edge is no longer available to new customers (from 7 November 2025), and AWS points new customers to DataSync for online transfer, to AWS Data Transfer Terminal (physical locations where you bring your own storage devices and upload over a high-speed connection) for secure physical transfer, and to AWS Partner offline-transfer solutions. A migration whose data cannot cross the available link in time therefore needs more bandwidth (for example AWS Direct Connect), a longer schedule, or one of those physical routes — not a device that a new account cannot order.
AWS Transfer Family provides managed SFTP, FTPS, FTP and AS2 endpoints so partners keep their existing clients, and stores files in either Amazon S3 or Amazon EFS. For write-once partner files that are processed downstream, the S3 backend is cheaper per GB and can trigger processing with S3 event notifications; choose EFS only when the files must be reached through a shared file system. It replaces self-managed SFTP servers on EC2 and their EBS volumes.
AWS Storage Gateway gives on-premises applications hybrid access to AWS storage with a local cache:
| Gateway | Protocol | How data is stored in AWS | Fits |
|---|---|---|---|
| S3 File Gateway | NFS / SMB file share | Each file is a native S3 object, so S3 lifecycle rules and other S3 tools apply; recently used data is cached locally | Backups or archives written as files that should tier down in S3 |
| Volume Gateway — cached | iSCSI block volume | Primary data in AWS, frequently accessed data cached locally; volume data is not individual S3 objects (point-in-time copies are EBS snapshots) | Block storage that should mostly live in AWS |
| Volume Gateway — stored | iSCSI block volume | The full dataset stays on premises, backed up asynchronously to AWS as snapshots | Low-latency access to the whole dataset locally |
| Tape Gateway | iSCSI virtual tape library | Virtual tapes in S3, archived to Glacier Flexible Retrieval or Deep Archive | Replacing physical tape with existing backup software |
One limit matters for cost design: S3 File Gateway does not support the S3 Glacier Instant Retrieval storage class, and objects transitioned to Glacier Flexible Retrieval or Deep Archive must be restored before the share can read them. Lifecycle tiering behind a File Gateway should therefore target classes it supports, such as Standard-IA, when older files must still open immediately. (Amazon FSx File Gateway is no longer offered to new customers.)
Worked scenarios: reasoning through Task 4.1 questions
Scenario 1. A research lab writes microscope images to S3. Scientists work on each image set heavily for about 60 days; after that a set is reopened only a few times a year, but when it is, it must open in milliseconds. After three years the sets are kept only for a funding-body retention rule, and the lab can wait up to two days for any retrieval. Sets must be deleted after eight years. What is the MOST cost-effective design?
Reasoning: Map each phase to the cheapest class that meets it, then verify the traps. The first 60 days are frequent access: S3 Standard — any IA or Glacier class would bleed retrieval fees. From day 60, access is a few times a year but must stay immediate, so the candidates are Standard-IA and Glacier Instant Retrieval; at a few reads a year, Glacier Instant Retrieval's much lower storage price outweighs its higher retrieval fee, so transition to Glacier Instant Retrieval at 60 days (and the three years that follow clear its 90-day minimum easily). One Zone-IA is the trap — the images are original research data, not re-creatable copies, so single-AZ storage fails the requirement. At three years, access stops and two days' wait is acceptable: transition to Glacier Deep Archive — even its bulk restores fit within two days, and the remaining five years clear the 180-day minimum many times over. Finally, an expiration action at eight years deletes the objects, plus an AbortIncompleteMultipartUpload rule, since large images arrive as multipart uploads. If the middle phase had said "read every month", the arithmetic would flip to Standard-IA — the stated access frequency, not the label, picks the class.
Scenario 2. A cost review shows EBS is a company's fastest-growing line item. The account contains hundreds of gp2 volumes, several sized at 1 TB "for performance" while storing under 200 GB; dozens of volumes in the available state left over from terminated instances; and thousands of snapshots dating back years, kept because "deleting incremental snapshots might break the chain." Compliance requires month-end snapshots be kept for five years. What should the architect recommend?
Reasoning: Run the waste checklist. The oversized gp2 volumes exist only to buy IOPS via gp2's size-linked performance — move to gp3, which delivers a 3,000-IOPS baseline regardless of size at a lower per-GB price, and right-size by creating smaller gp3 volumes and copying the data across, because Elastic Volumes can change type online but cannot shrink a volume. The available volumes are pure waste: snapshot if in doubt, then delete unattached volumes. The snapshot fear is the tested misconception: snapshots are incremental, but deleting old ones is safe — AWS retains any blocks that newer snapshots reference — so the answer deletes the unneeded backlog of existing manual snapshots once (a Data Lifecycle Manager policy only manages snapshots it creates) and automates retention going forward with Data Lifecycle Manager or AWS Backup. Those five-year compliance snapshots, rarely restored, belong in EBS Snapshots Archive at a much lower storage price — kept for years, they easily clear its 90-day minimum, and its restores of up to 72 hours are acceptable for snapshots that are rarely needed. Distractors here keep gp2 "because migration is risky" (Elastic Volumes changes the type online), claim the volumes can be shrunk in place, keep every snapshot, or delete the compliance snapshots — the last one is the requirement-breaking "savings" the cost qualifier exists to punish.
Tip. SAA-C03 tests this task with cost-constrained scenarios: several storage designs work, and the correct one is the cheapest that still meets every stated number — retention period, retrieval-time tolerance, access frequency, object size, resilience. Classic shapes include the lifecycle waterfall (transitions and expirations that respect minimum durations), the class choice where a stated access frequency makes an IA or Glacier option a retrieval-fee trap (including Standard-IA versus Glacier Instant Retrieval), One Zone-IA or Express One Zone offered where they do not fit, versioned-bucket and multipart cleanup with the right lifecycle actions, Intelligent-Tiering archive tiers versus age-based rules, the EBS audit (gp2 to gp3, volumes that cannot shrink in place, unattached volumes, snapshot pruning and archiving), file-service selection (EFS lifecycle, FSx for Lustre scratch versus persistent), AWS Backup warm and cold rules, and choosing DataSync, Transfer Family or Storage Gateway to move data in. Watch for options that save money by breaking a requirement and for tool swaps in cost-visibility questions (Budgets alerts on forecasts; Cost Explorer analyzes; CUR/Data Exports give line items; activated tags attribute).
- Price the whole bill — storage, retrievals, requests and minimum durations (IA 30 days, Glacier Instant/Flexible 90, Deep Archive 180) — before picking a class; the duration trap mainly keeps data that lives days to a couple of weeks in S3 Standard.
- Standard-IA vs Glacier Instant Retrieval: both read in milliseconds; data read about monthly favours Standard-IA, data read a few times a year favours Glacier Instant Retrieval's lower storage price despite its higher retrieval fee.
- One Zone-IA only for re-creatable or secondary-copy data; S3 Express One Zone is a costly performance class, never a cost saving.
- Unknown or changing access = S3 Intelligent-Tiering: no retrieval fees or minimum durations, objects under 128 KB not tiered, optional Archive Access (90+ days) and Deep Archive Access (180+ days) tiers need restores and count from last access, not creation.
- Versioned buckets need NoncurrentVersionExpiration (NoncurrentDays, NewerNoncurrentVersions); every upload bucket needs AbortIncompleteMultipartUpload; a bucket shown as Disabled has never been versioned.
- gp3 beats gp2 (3,000 IOPS / 125 MiB/s baseline at any size); Elastic Volumes can change type and grow but never shrink; st1/sc1 for cheap sequential throughput.
- Audit the leaks: unattached volumes, stale snapshots (DLM manages only its own; archive only long-kept snapshots — full copies, 90-day minimum, up to 72-hour restore), noncurrent versions, incomplete multipart uploads.
- Cheapest service by interface: S3 for object access, EBS for single-instance block, EFS (with lifecycle to IA) for shared Linux files, FSx for Lustre scratch linked to S3 for temporary HPC runs; elastic S3/EFS when capacity growth is unpredictable.
- AWS Backup: daily warm rules with short retention plus monthly rules moved to cold storage (retention at least 90 days beyond the move; EBS archive only from monthly-or-rarer rules).
- Move data in with DataSync (scheduled, throttled, verified), Transfer Family (SFTP into S3 or EFS) or Storage Gateway (S3 File Gateway stores native objects; Volume Gateway stores block volumes) — Snowball Edge is not available to new customers.
- Cost tools by job: activated tags (management account) attribute, Cost Explorer analyzes, Budgets alerts on actual or forecasted spend, CUR 2.0 via Data Exports gives line items, Cost Anomaly Detection flags the unexpected.
Frequently asked questions
Which S3 storage class is the cheapest?
For pure storage price, S3 Glacier Deep Archive is the cheapest class — but it has a 180-day minimum storage duration and restores take around 12 hours (longer for bulk), so it only fits long-term archives you almost never read. The cheapest class for your data is the one whose access model matches reality: Standard for frequent access, Standard-IA for roughly monthly access with millisecond reads, Glacier Instant Retrieval for quarterly access, Flexible Retrieval when you can wait hours. Picking a "cheaper" class than your access pattern supports costs more, because retrieval fees and minimum-duration charges outweigh the storage savings.
When should I use S3 Intelligent-Tiering instead of a lifecycle policy?
Use Intelligent-Tiering when you cannot predict the access pattern — new datasets, user-generated content, data lakes where some objects stay hot and others go cold. It moves each object between the Frequent, Infrequent and Archive Instant Access tiers automatically based on its own last access, charges no retrieval fees and no minimum-duration charges, and moves reheated objects back up — something lifecycle transitions never do. You can also opt in to the asynchronous Archive Access and Deep Archive Access tiers for objects idle 90 or 180+ days, which then need a restore before they can be read. Use an explicit lifecycle policy when the pattern is known and uniform (logs cold after 30 days, archived after 90): it reaches cheaper Glacier tiers on your schedule and avoids Intelligent-Tiering's per-object monitoring fee.
What is the minimum storage duration for S3 Standard-IA and the Glacier classes?
S3 Standard-IA and One Zone-IA have a 30-day minimum storage duration; Glacier Instant Retrieval and Glacier Flexible Retrieval have 90 days; Glacier Deep Archive has 180 days. If you delete, overwrite or transition an object before its class minimum, you are billed for the remaining days anyway. The charge matters most for very short-lived data: an object deleted after a week or two is usually cheaper in S3 Standard than in Standard-IA billed for 30 days. Between archive tiers, compare price × billed months — Deep Archive is cheap enough that an object billed for 180 days can still cost less than three months in Glacier Flexible Retrieval. S3 Standard and Intelligent-Tiering have no minimum-duration charge.
Why is gp3 cheaper than gp2 on EBS?
gp3 has a lower per-GB storage price than gp2, and it decouples performance from size: every gp3 volume includes a baseline of 3,000 IOPS and 125 MiB/s throughput at no extra cost, with more provisionable independently if needed. gp2 ties performance to capacity at 3 IOPS per GB, so teams bought oversized volumes just to reach the IOPS they needed. Elastic Volumes can change a gp2 volume to gp3 online, but it cannot reduce a volume's size — to right-size an oversized volume you create a new, smaller gp3 volume and copy the data to it.
Do I need to keep all my EBS snapshots because they are incremental?
No. EBS snapshots are incremental, but AWS manages the block references: when you delete an older snapshot, any blocks still needed by newer snapshots are preserved, so the remaining snapshots always restore correctly. Pruning old snapshots is therefore safe and one of the easiest EBS cost wins. Automate retention with Amazon Data Lifecycle Manager or AWS Backup — remembering that a DLM policy only manages snapshots it created, so an existing backlog of manual snapshots must be deleted directly. Move long-retention, rarely restored snapshots to EBS Snapshots Archive: archived snapshots are stored as full copies with a 90-day minimum and restores of up to 72 hours, so archive only snapshots you will keep for months or years.
What is S3 Requester Pays and when should I use it?
Requester Pays is a bucket setting that shifts request and data-transfer costs from the bucket owner to whoever downloads the data; the owner continues to pay only for storage. Requesters must be authenticated AWS principals and must explicitly flag their requests as Requester Pays, so anonymous access does not work on such buckets. Use it when you share large datasets — research data, public-interest archives, media libraries — with external parties and do not want to fund their downloads. It is a cost-allocation tool, not a security control: access permissions still come from bucket policies and IAM.
What is the cheapest way to migrate data to AWS now that Snowball Edge is unavailable to new customers?
For most migrations it is AWS DataSync over the existing network: inbound data transfer to AWS is free, and DataSync schedules transfers, throttles bandwidth to protect production traffic, copies only changes on repeat runs and verifies data integrity, with no scripts to maintain. AWS Snowball Edge has not been available to new customers since 7 November 2025, and AWS directs them to DataSync for online transfer, AWS Data Transfer Terminal for secure physical transfer, or AWS Partner offline solutions. Check the bandwidth math first — if the data cannot cross the usable link in time, add capacity such as AWS Direct Connect, extend the schedule, or use one of those physical routes. Use AWS Transfer Family when partners upload over SFTP or FTPS, and AWS Storage Gateway when on-premises applications need ongoing file, volume or tape access to AWS storage.
Is S3 Standard-IA or S3 Glacier Instant Retrieval cheaper?
It depends on how often the data is read. Both classes return data in milliseconds. Glacier Instant Retrieval stores data for roughly a third of Standard-IA's per-GB price, but its per-GB retrieval fee is about three times higher and its minimum storage duration is 90 days instead of 30. Data read about once a month is usually cheaper in Standard-IA, because the extra retrieval fees outweigh the storage saving; data read a few times a year is cheaper in Glacier Instant Retrieval. Work it out per GB per month as storage price plus the fraction of data read each month times the retrieval fee.
Source
This lesson covers the "Design Cost-Optimized Architectures" domain of the official SAA-C03 exam guide. Vendors revise their guides — check the source for the current version.
- AWS Certified Solutions Architect – Associate (SAA-C03) exam guide — Amazon Web Services
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.