Cost model and where the savings come from

How each component bills, a worked monthly estimate at a stated scale with every assumption visible, the dimensions that dominate, and an honest account of the saving against a licence.

markdownexamplev189JV-WRE9stage: designtrust: mixedservice: entity-resolutionservice: healthlakeservice: glueservice: auroraservice: s3service: macieservice: kmsservice: lambdainterface: architectureAWS Entity Resolution per record pricingHealthLake data store hour and storageGlue DPU-hour billingAurora Standard versus IO-OptimizedMacie per GB inspected dominatesworked monthly estimate with assumptionscost levers and what to tune firstsavings versus a licensed MDM

Created 21 Oct 2026 · Modified 23 Oct 2026 · 1 version

Every price below was read from the AWS pricing page named in provenance on 2026-10-21, for US East (N. Virginia) where the page distinguished Regions. Prices change; treat the arithmetic as the durable part and re-read the pages before quoting a figure.

Two figures carry a weaker provenance than the rest and are flagged where they appear: the S3 Standard and Glacier Deep Archive storage rates. They were returned verbatim by the fetch recorded for this document, but an independent reviewer fetching the same page could not reproduce the storage tables, which render dynamically; the request prices reproduced for both of us. Re-check those two in the console before quoting them.

How each piece bills

ComponentDimensionList price read 2026-10-21
AWS Entity ResolutionPer record processed$0.25 per 1,000 records
Entity Resolution, providerPer record processed$0.10 per 1,000, licence required
AWS HealthLakePer data store hour$0.27 per data store hour
HealthLake storagePer GB-month beyond 10 GB$0.25 Standard, $0.37 Advanced
HealthLake FHIR queriesBeyond 3,500 per hour$0.015 / $0.048 per 10,000
HealthLake FHIR SubscriptionsPer event, Advanced tier$2.00 per M EventBridge, $0.90 per M REST-Hook
HealthLake exportPer GB exported$0.19 per GB
HealthLake medical NLPPer 100 characters$0.0010 per 100 characters
AWS Glue ETL and crawlersPer DPU-hour$0.44 per DPU-hour
Glue Data QualityPer DPU-hour, 2 DPU minimum$0.44 per DPU-hour
Glue Data CatalogObjects and requestsFirst million of each free
Amazon S3 StandardPer GB-month, first 50 TB$0.023 per GB (re-check)
S3 requestsPer 1,000$0.005 PUT, $0.0004 GET
Aurora Serverless v2Per ACU-hour$0.12 Standard, $0.156 I/O-Optimized
Aurora storagePer GB-month$0.10 Standard, $0.225 I/O-Optimized
Aurora I/OPer million I/Os$0.20 Standard, $0 I/O-Optimized
AWS LambdaRequests and GB-seconds$0.20 per million, $0.0000166667 per GB-s
Step Functions StandardPer state transition$0.000025, first 4,000 free monthly
AWS KMSPer key, per request$1 per key per month; 20,000 requests free
Amazon MacieBuckets, objects, GB inspected$0.10 per bucket, $0.01 per 100K objects, $1 per GB
Amazon AthenaPer TB scanned$5 per TB

Three notes on the prices above, because precision matters more than completeness.

Entity Resolution charges for every record, not every match. The pricing page states all records are charged even those without matches, and that "The AWS Free Tier is not available for AWS Entity Resolution". A record is "a row of data that can have multiple columns", so widening a table costs nothing extra. With rule-based automatic incremental processing "you will only be charged for incremental matches", which is the single most important cost lever in this design.

The HealthLake data store hour is a fixed floor. At $0.27 per hour, a store runs about $197 per month before a byte of storage or a single query. That is a standing charge per data store, so resist creating one per environment unless each is genuinely needed.

Glue's minimum billing duration is documented for some workloads and not others. The page states a "1 minute minimum billing duration" for Data Quality tasks and for table optimisation, and describes ETL jobs as billed by the second. Whether Spark ETL jobs carry their own minimum was not confirmed on the page read; assume a short-job floor when budgeting many small jobs.

A worked monthly estimate

Scale as stated in document 01: 12,440,000 source records across four entity types resolving from six source systems, 2,000,000 changed records per month, 200,000 synchronous lookups, 2 TB of clinical data in FHIR, 3 TB in the raw zone. The master runs as an Aurora writer with a reader in a second Availability Zone, because it sits on a synchronous clinical path — a single instance is not an acceptable posture, and the reader is the cheapest line in the table that removes a single point of failure.

LineArithmeticMonthly
Entity Resolution, rule-based incremental2,000 × $0.25$500
Entity Resolution, quarterly ML pass12,440 × $0.25 ÷ 3$1,037
GenerateMatchId, synchronous lookups200 × $0.25$50
Glue ETL10 DPU × 0.5 h × 30 × $0.44$66
Glue Data Quality6 sources × 2 DPU × 0.1 h × 30 × $0.44$16
Glue crawlers2 DPU × 0.25 h × 30 × $0.44$7
S3 storage3,772 GB × $0.023$87
S3 requests5M PUT, 50M GET$45
HealthLake data store730 h × $0.27$197
HealthLake storage, Standard2,038 GB × $0.25$510
HealthLake queries2.45M beyond the included 2.56M$4
HealthLake monthly full export2,048 GB × $0.19$389
Aurora Serverless v2 writer, Standard4 ACU × 730 h × $0.12$350
Aurora reader, second AZ2 ACU × 730 h × $0.12$175
Aurora storage and I/O200 GB × $0.10 + 500M I/O × $0.20/M$120
Lambda20M invocations, 512 MB, 200 ms, free tier applied$30
Step Functions Standard50,000 transitions$1
KMS6 keys + 10M requests$36
Macie20 buckets, 50M objects, 100 GB inspected$107
Athena2 TB scanned × $5$10
Totalabout $3,735

One-time initial load: 12,440 × $0.25 = $3,110 for the first full match across all entities.

What this estimate excludes

It is a floor, not a forecast. Not priced here because those pages were not read: CloudTrail, AWS Config, Security Hub CSPM, EventBridge, SNS, SQS, Kinesis Data Streams or MSK, OpenSearch Service, AWS Backup, data transfer, and the compute and hosting for the steward console. OpenSearch is the largest of those omissions and not only on cost: it is a second full copy of patient demographics, in scope for the BAA, carrying its own encryption, access-control, snapshot and deletion-propagation obligations. Nor does it include the engineering cost of building the custom components in document 08, which for a first release is the largest number on the page and is not an AWS charge at all.

The assumptions that move the total most

AssumptionEffect if wrong
Quarterly rather than monthly ML passA monthly full ML pass adds about $2,070
ML runs are full reprocessesA documented incremental ML path would cut this line sharply
Macie inspects 100 GB per monthAt $1 per GB, inspecting 1 TB adds about $900
No HealthLake medical NLPAt $0.0010 per 100 characters, 100M characters is $1,000
Monthly rather than weekly exportWeekly export at 2 TB adds roughly $1,170
HealthLake Standard rather than AdvancedAdvanced storage at $0.37 adds about $245
No managed FHIR SubscriptionsAdvanced tier, +$245 storage, plus per-event charges; 100,000 free
Aurora at 4 average ACUsEach additional average ACU adds about $88

The ML reprocessing line carries a stated caveat rather than a documented limit. The pages read confirm that automatic incremental processing is rule-based only; the Entity Resolution glossary separately defines a confidence level "for ML incremental matching", so an incremental ML path appears to exist but its invocation was not characterised. Full reprocessing is modelled here as the conservative case.

Aurora Standard against I/O-Optimized

Worth having at hand, because the right configuration depends on a number most designs have not yet measured.

ConfigurationACU-hoursStorageI/OMonthly at the stated scale
Aurora Standard$0.12$0.10 per GB$0.20 per million$470
Aurora I/O-Optimized$0.156$0.225 per GB$0$501

At 500 million I/Os per month, Standard wins. Match-and-merge is I/O-heavy and that number climbs with reprocessing frequency, so the crossover is near: above roughly 650 million I/Os per month at this ACU and storage profile, I/O-Optimized becomes the cheaper option, and it also removes I/O volatility from the bill. Note the reader moves with the choice — a 2-ACU reader is $175 per month on Standard and $228 on I/O-Optimized. The right answer is to measure I/O for a month and then choose, and to say so rather than guessing.

The cost levers, in order

  1. Keep rule-based incremental processing as the default path. Charging only for incremental

matches rather than the full corpus is roughly a sixfold difference on the matching line at this scale.

  1. Make the ML pass deliberate. Quarterly, or triggered when a quality signal suggests

demographic duplicates are accumulating. Never on a nightly schedule by default.

  1. Scope Macie. The $1 per GB inspected dimension dominates if pointed at everything. Target the

landing prefixes and any extract bucket, sample rather than scan exhaustively.

  1. Think before creating a HealthLake data store. Each one is a standing $197 per month.
  2. Tier the raw zone. S3 Glacier Deep Archive at $0.00099 per GB-month is about 4 percent of

Standard's $0.023. Raw objects older than a quarter are rebuild material, not working data.

  1. Partition for Athena. At $5 per TB scanned, partitioning and columnar formats are the whole

game. Note that the per-query minimum and rounding behaviour were not confirmed on the page read.

  1. Use NLP surgically. $0.0010 per 100 characters is $10 per million characters. Run it on the

fields that improve match coverage, not on every note.

Where the savings against a licence actually come from

An honest comparison needs a caveat first: no licence price is quoted in this document set, because no vendor list price was read. Commercial MDM pricing is typically negotiated and confidential. Any figure put against this estimate must come from your own quote; a remembered number presented as fact is not evidence.

What can be said about the structure of the difference, which is the more interesting answer:

No licence floor. The AWS components bill on records processed, DPU-hours, ACU-hours and GB. A proof of concept resolving 50,000 records costs about $12.50 in matching. A commercial licence is normally a minimum commitment made before any value is demonstrated. Glue Data Quality's own documentation makes the point: "There are no annual licenses you need to use AWS Glue Data Quality."

Cost follows the work, not the entitlement. Matching cost here is driven by changed records when rule-based incremental processing is used — $500 per month against $3,110 for a full pass. A licence sized to total master records charges for the whole corpus whether it changed or not.

No separate infrastructure bill. Licensed MDM usually needs its own compute, database and support estate beside the licence. Here the serverless components are the infrastructure.

One compliance envelope. One BAA, one audit boundary, one set of eligible services, rather than a vendor's compliance posture assessed and maintained alongside AWS's. That saving is real but shows up in audit effort rather than on an invoice.

And the honest offset. The saving is a licence and an infrastructure estate; the cost is the custom build in document 08 plus its indefinite maintenance. At the stated scale, roughly $3,735 per month of AWS charges is a small number next to the engineering investment the steward console, survivorship engine and crosswalk represent. The defensible claim is not "this is cheaper". It is: the run cost is usage-based and predictable, and the trade is that you fund and own the governance layer. Whether that run cost sits below a given licence plus estate is a comparison to make against your own quote, not a claim this document can make. If the organisation cannot fund a platform team indefinitely, the licence is the cheaper option, and document 00 says so.

Read this document as markdown — the same bytes an agent receives.