Cloud prices differ between regions because AWS, Microsoft and Google price every service separately in each region, and the size of the gap depends on the service: the same region can be dearer for compute and cheaper for storage than its neighbour. A cloud region also decides which services and instance types exist, where commitments apply and what transfer is charged once data leaves it. A comparison of regions therefore holds only service by service, with each region's list price and the cost of moving or spreading a workload.

How it works

All three providers divide their infrastructure into regions and each region into zones. At Microsoft a zone is a separate set of datacentres within the region with its own power, cooling and network; Google advises spreading resources across zones so that one failing zone stops no service, and across regions for still more resilience. Prices are published per region, for on-demand compute as for storage and data transfer. In Europe, the providers' documentation read on 2026-10-16 shows these differences:

AWS

AWS runs eight regions in Europe, each with three Availability Zones: Frankfurt (eu-central-1), Ireland, London, Milan, Paris, Spain, Stockholm (eu-north-1) and Zurich. A region launched after 20 March 2019 has to be enabled in the account before use; in Europe that applies to Milan, Spain and Zurich. Not every region carries every instance type, and within a region a type can be missing from single zones: the list of instance types by region shows the M8i family for Frankfurt, Ireland and Spain, but not for Stockholm or Zurich. Reserved Instances apply to one region or to a single zone, EC2 Instance Savings Plans to one instance family in one region, while Compute Savings Plans apply across regions.

Azure

In 14 European countries Microsoft has a region with three availability zones, among them Germany West Central in Frankfurt, North Europe in Ireland, West Europe in the Netherlands, France Central, Sweden Central, Italy North, Poland Central and Spain Central. Microsoft opens Germany North, France South, Norway West and Switzerland West only on request, for needs such as disaster recovery inside the same geography. A region with zones does not mean every service there can use them, Microsoft adds. A reservation covers one resource type in one size and region; an Azure savings plan is an hourly spend commitment that Azure applies to eligible usage in any region.

Google Cloud

Google lists 13 regions in Europe with three zones each, from Warsaw (europe-central2) through Frankfurt (europe-west3) and Berlin (europe-west10) to Madrid (europe-southwest1), London and Zurich included. It states the available machine series per zone: in Stockholm (europe-north2), zone c lists only E2, N4 and C4. Resource-based committed use discounts stay tied to the region they were bought for; spend-based compute flexible CUDs follow eligible compute spend into any project or region of the billing account.

What it means for your cost

A region comparison checks more than the hourly rate of one machine:

What changes by regionWhere it is publishedWhat it means for the comparison
List price per servicethe provider's pricing page and price APIcompare every service in the architecture, do not extrapolate from one
Availability of services and typesinstance types by region (AWS), region list and products by region (Azure), machine series per zone (Google)a cheaper region without the required type is not an alternative
Commitmentsthe terms of each programmeregion-bound discounts keep running in the old region
Data transfer between regionsthe provider's data transfer pricingevery replica and every move is charged per gigabyte
Access to the regionopt-in (AWS), access request (Azure)allow lead time before the region can be used

Transfer between European regions carries a price at all three providers: on 2026-10-16 AWS charged USD 0.02 per GB between Frankfurt, Ireland and Stockholm, Microsoft USD 0.02 per GB between regions within Europe, and Google USD 0.02 per GiB between European regions. How these boundaries are metered and shown in billing data is covered in data transfer and egress, the levers in reducing data transfer costs. Spreading data across regions pays that price on every copy; a move pays it once for the existing data, then for whatever flows while both regions run.

Often the region is not a free choice: data residency, latency to users or a separate environment narrow the options first. Data residency in the cloud covers the controls, and the sovereign offerings of the hyperscalers the separate environments with their own price lists. Instance prices per region in several currencies are listed in instance prices in European cloud regions. The cost questions to settle before moving to the AWS European Sovereign Cloud are set out in AWS European Sovereign Cloud: the cost questions before a migration.

Where it goes wrong

  • One instance type extrapolated. Symptom: savings after the move fall short of the estimate. Cause: the gap in one VM price was applied to the whole bill, although storage, databases and egress are priced differently there, sometimes the other way round.
  • Transfer cost of the move left out. Symptom: in the month of the move, inter-region transfer lines appear that no budget contains. Cause: existing data, replication and the parallel run all cross the region boundary, and every gigabyte is charged.
  • A commitment left in the old region. Symptom: utilisation of a reservation drops after the move, and the new region runs at on-demand rates. Cause: Reserved Instances, EC2 Instance Savings Plans, Azure reservations and Google's resource-based CUDs are bound to a region. What can be exchanged or cancelled is covered in exchange, cancellation and expiry of commitments.
  • A service missing in the cheaper region. Symptom: deployment fails or falls back to another type at another price. Cause: the region or zone lacks the instance type, machine series or service.
  • The region is not open. Symptom: resources cannot be created in the chosen region. Cause: at AWS the region has to be enabled first; at Azure it is open on request only.

Example

List prices in US dollars, read on 2026-10-16, each for the provider's Frankfurt region and one other European region. The gap is the Frankfurt price relative to the second region.

ProviderService and unitFrankfurtSecond regionGap
AWSEC2 m7i.large, Linux, per hourUSD 0.12075Stockholm: USD 0.1071+12.7%
AWSS3 Standard, first 50 TB, per GB-monthUSD 0.0245Stockholm: USD 0.023+6.5%
AWSData transfer out to the internet, tier up to 10 TB, per GBUSD 0.09Stockholm: USD 0.090%
AzureD2s v5, Linux, per hourGermany West Central: USD 0.115North Europe: USD 0.107+7.5%
AzureBlob Storage Hot LRS, first 50 TB, per GB-monthGermany West Central: USD 0.0196North Europe: USD 0.022-10.9%
Google Cloudn2-standard-2, per hourUSD 0.125124Finland: USD 0.106924+17.0%
Google CloudCloud Storage Standard, per GiB-monthUSD 0.023Finland: USD 0.02+15.0%
Google CloudCloud Storage Archive, per GiB-monthUSD 0.0025Finland: USD 0.0012+108.3%

The compared VM costs more in Frankfurt at all three providers. Azure Blob Storage, though, is cheaper in Germany West Central than in North Europe, Google's gap for archive storage far exceeds its gap for standard storage, and AWS charges the same internet transfer rate in both regions.

Sources

Read on 2026-10-16. AWS AWS Regions, Availability Zones, EC2 instance types by Region, regional and zonal Reserved Instances, Savings Plans types, EC2 On-Demand pricing, S3 pricing and AWS Price List; Microsoft Azure regions list, availability zones, Azure Reserved VM Instances, Azure savings plans, Azure Retail Prices API, Linux Virtual Machines pricing, Blob Storage pricing and bandwidth pricing; Google Cloud regions and zones, committed use discounts, general-purpose machine type pricing, Cloud Storage pricing and network pricing.