← All posts

How the AWS geography tax splits by service

Published August 31, 2026

Price a web app in us-east-1, then redeploy the exact same architecture to São Paulo, and the monthly bill climbs 54%. Redeploy to Mumbai, and depending on what the app is made of, the bill could rise 4% or 40%. The difference comes from a fact most regional pricing discussions skip: AWS does not apply one global markup per region. Every service has its own price geography, and the markups disagree with each other.

We took a reference stack and priced it in 13 regions:

Everything is Intel x86, everything is on-demand, and every number below comes from AWS’s August 2026 price list, indexed against us-east-1.

below 50% markup 50% markup or higher
N. Virginiaus-east-1
EC2
baseline0%
RDS
baseline0%
ElastiCache
baseline0%
EBS gp3
baseline0%
S3 Standard
baseline0%
DynamoDB
baseline0%
Mumbaiap-south-1
EC2
+5%
RDS
+41%
ElastiCache
+4%
EBS gp3
+14%
S3 Standard
+9%
DynamoDB
+14%
Stockholmeu-north-1
EC2
+6%
RDS
+5%
ElastiCache
+4%
EBS gp3
+4%
S3 Standard
baseline0%
DynamoDB
+7%
Montrealca-central-1
EC2
+11%
RDS
+11%
ElastiCache
+10%
EBS gp3
+10%
S3 Standard
+9%
DynamoDB
+10%
Irelandeu-west-1
EC2
+11%
RDS
+11%
ElastiCache
+10%
EBS gp3
+10%
S3 Standard
baseline0%
DynamoDB
+13%
Londoneu-west-2
EC2
+16%
RDS
+16%
ElastiCache
+15%
EBS gp3
+16%
S3 Standard
+4%
DynamoDB
+19%
Frankfurteu-central-1
EC2
+20%
RDS
+19%
ElastiCache
+19%
EBS gp3
+19%
S3 Standard
+7%
DynamoDB
+22%
Singaporeap-southeast-1
EC2
+25%
RDS
+37%
ElastiCache
+24%
EBS gp3
+20%
S3 Standard
+9%
DynamoDB
+14%
Sydneyap-southeast-2
EC2
+25%
RDS
+37%
ElastiCache
+24%
EBS gp3
+20%
S3 Standard
+9%
DynamoDB
+14%
Tokyoap-northeast-1
EC2
+29%
RDS
+37%
ElastiCache
+29%
EBS gp3
+20%
S3 Standard
+9%
DynamoDB
+14%
Bahrainme-south-1
EC2
+38%
RDS
+22%
ElastiCache
+21%
EBS gp3
+21%
S3 Standard
+9%
DynamoDB
+24%
Cape Townaf-south-1
EC2
+32%
RDS
+32%
ElastiCache
+31%
EBS gp3
+31%
S3 Standard
+19%
DynamoDB
+35%
São Paulosa-east-1
EC2
+59%
RDS
+35%
ElastiCache
+43%
EBS gp3
+90%
S3 Standard
+76%
DynamoDB
+50%

Markup over us-east-1 for each service, regions ordered by EC2 markup. Full prices in the table below.

The raw prices

Region EC2 m6i.xlarge RDS db.m6i.xlarge ElastiCache cache.m5.large EBS gp3 S3 Standard DynamoDB WCU
N. Virginia (us-east-1) $0.1920/hr $0.3420/hr $0.1560/hr $0.0800/GB-mo $0.0230/GB-mo $0.00065/WCU-hr
Mumbai (ap-south-1) $0.2020 (+5%) $0.4820 (+41%) $0.1630 (+4%) $0.0912 (+14%) $0.0250 (+9%) $0.00074 (+14%)
Stockholm (eu-north-1) $0.2040 (+6%) $0.3600 (+5%) $0.1630 (+4%) $0.0836 (+4%) $0.0230 (0%) $0.00070 (+7%)
Montreal (ca-central-1) $0.2140 (+11%) $0.3780 (+11%) $0.1720 (+10%) $0.0880 (+10%) $0.0250 (+9%) $0.00072 (+10%)
Ireland (eu-west-1) $0.2140 (+11%) $0.3780 (+11%) $0.1720 (+10%) $0.0880 (+10%) $0.0230 (0%) $0.00074 (+13%)
London (eu-west-2) $0.2220 (+16%) $0.3960 (+16%) $0.1800 (+15%) $0.0928 (+16%) $0.0240 (+4%) $0.00077 (+19%)
Frankfurt (eu-central-1) $0.2300 (+20%) $0.4060 (+19%) $0.1860 (+19%) $0.0952 (+19%) $0.0245 (+7%) $0.00079 (+22%)
Singapore (ap-southeast-1) $0.2400 (+25%) $0.4700 (+37%) $0.1940 (+24%) $0.0960 (+20%) $0.0250 (+9%) $0.00074 (+14%)
Sydney (ap-southeast-2) $0.2400 (+25%) $0.4700 (+37%) $0.1940 (+24%) $0.0960 (+20%) $0.0250 (+9%) $0.00074 (+14%)
Tokyo (ap-northeast-1) $0.2480 (+29%) $0.4700 (+37%) $0.2010 (+29%) $0.0960 (+20%) $0.0250 (+9%) $0.00074 (+14%)
Bahrain (me-south-1) $0.2640 (+38%) $0.4160 (+22%) $0.1890 (+21%) $0.0968 (+21%) $0.0250 (+9%) $0.00081 (+24%)
Cape Town (af-south-1) $0.2540 (+32%) $0.4500 (+32%) $0.2050 (+31%) $0.1047 (+31%) $0.0274 (+19%) $0.00087 (+35%)
São Paulo (sa-east-1) $0.3060 (+59%) $0.4620 (+35%) $0.2230 (+43%) $0.1520 (+90%) $0.0405 (+76%) $0.00098 (+50%)

You can check any of these against the regional pricing directory, the instance explorer, or the database pricing pages.

Mumbai is cheap for compute and expensive for databases

Mumbai’s EC2 markup is +5%, the lowest in the table after Virginia. Mumbai’s RDS markup is +41%, the highest in the table. Same campus, same region code, same month.

A db.m6i.xlarge MySQL instance costs $0.482/hr in Mumbai against $0.342/hr in Virginia. There is no m6i.xlarge EC2 premium that explains this: the equivalent raw instance costs $0.202/hr there, barely above baseline. Whatever drives Mumbai’s RDS price, it is specific to the managed database product line, and it means a Mumbai deployment gets taxed heavily in proportion to how much of it runs on RDS rather than EC2.

Bahrain shows the same disagreement in reverse. Its EC2 markup (+38%) is the second highest in the table, but its RDS markup is only +22%. Rank the 13 regions by EC2 price and you get one ordering; rank them by RDS price and Mumbai jumps from second cheapest to most expensive. Region cost rankings are service-specific.

S3 barely varies. EBS swings hard.

Every region in the table except Cape Town and São Paulo sells S3 Standard within 9% of Virginia. Stockholm and Ireland charge exactly the Virginia price. Object storage is globally flat, with two expensive exceptions: São Paulo at +76% and, outside this table, AWS GovCloud at +70%.

Block storage is a different product. gp3 in São Paulo costs $0.152/GB-month against $0.080 in Virginia, a +90% markup that exceeds every compute markup in the table, including São Paulo’s own +59% on EC2. Two storage services from the same company, both storing bytes on disks in the same data centers, marked up 76% and 90% in the same city.

The practical consequence: archival-heavy and backup-heavy workloads are nearly region-agnostic on price, while VM-attached storage in South America is the single worst per-gigabyte deal in AWS’s catalog.

The stack total

Priced end to end, the reference stack lands here:

Region Monthly bill vs. Virginia
N. Virginia $727 baseline
Stockholm $760 +4%
London $829 +14%
Mumbai $867 +19%
Bahrain $892 +23%
Tokyo $924 +27%
Cape Town $944 +30%
São Paulo $1,121 +54%

Mumbai’s stack lands at +19% despite carrying the table’s worst RDS markup, because raw compute, caching, and storage there sit close to baseline. Stockholm is +4% overall. If your stack leans compute-heavy, Stockholm, Montreal, and Ireland are all within 11% of Virginia, and Tokyo’s well-known premium (+29% on EC2) is worse than anything in Western Europe.

What this means for placement decisions

The old heuristic was “compute costs X% more in region Y.” The numbers above say the better question is “how much of my stack runs on which service.” A cache-and-compute-heavy architecture gets Mumbai at roughly baseline cost. A database-heavy architecture pays Mumbai’s 41% on every RDS node it runs. The same architecture redeployed to Bahrain flips the penalty.

Before locking a region, price the actual service mix:

  1. Compare instance pricing across candidate regions for the instance types you actually run, not the ones blog posts cite.
  2. Price the managed pieces separately — RDS, ElastiCache, and DynamoDB markups do not track their region’s EC2 markup, and can move in the opposite direction.
  3. Watch block storage in high-markup regions; São Paulo’s gp3 price adds +90% to every gigabyte you attach, which can outweigh the compute savings of running there.

This post is a sibling to The AWS geography tax, which looks at the same spread through Graviton instances and adds the latency-vs-cost side of the tradeoff. Both draw on the same dataset: every price cited here is queryable in the regional pricing directory.