AWS to Azure Migration — EC2, S3 and RDS Workloads
IT Partner migrates AWS estates to Azure as a wave-planned project: Azure Migrate discovery from an appliance inside your AWS account with agentless dependency analysis, an assessment that right-sizes every EC2 instance on observed utilization with Azure Hybrid Benefit applied where your licensing qualifies, agent-based replication of EC2 instances with a test migration for every wave before cutover, S3 buckets copied server-side to Blob Storage or Data Lake Storage with AzCopy or Data Factory, RDS databases moved to Azure SQL Database, SQL Managed Instance, Azure Database for PostgreSQL or MySQL with Microsoft's migration tooling, IAM mapped to Entra ID and Azure RBAC, VPCs and security groups rebuilt as virtual networks and NSGs, Route 53 cutover, validation against the inventory, and an AWS decommission checklist. A typical estate runs about 6 weeks; large or multi-region estates take longer and the wave plan states the real dates. Pricing is quoted per estate, because instance count alone does not predict effort once S3 volume, RDS engines and IAM redesign are in scope. Three boundaries up front: AWS data-transfer-out charges are AWS's and Azure consumption is Microsoft's, both separate from our fee; application refactoring — Lambda, containers, code written against AWS APIs — is scoped separately; and workloads that should be rebuilt or should stay in AWS get that disposition in writing rather than a forced move.
What this engagement is
Most AWS estates we are asked to move were never a strategic choice. They arrived with an acquisition, a developer's preference five years ago, or a vendor whose product happened to ship on EC2 — and now the organization runs Microsoft 365 and Entra ID for every user, has an Azure commitment or credits it is not consuming, and pays a second cloud bill for a second identity plane, a second support relationship and a second set of skills. That is the case for consolidation, and it is a legitimate one. What it is not is a promise about savings. AWS is a capable platform, and we will not editorialize about it. The assessment in this service compares Azure pricing on the delivery date — right-sized from observed utilization, with Azure Hybrid Benefit and reservation options priced in — against your actual AWS invoices, and the decision is made on that comparison, not on a percentage from a slide deck. The engagement runs on Azure Migrate, Microsoft's supported path for moving servers from other clouds. A discovery appliance is deployed on an EC2 instance inside your account (a Windows Server 2019 or 2022 VM with 8 vCPUs, 16 GB of RAM and around 80 GB of disk, per Microsoft's current requirements) and treats your EC2 instances as physical servers: it inventories them over WinRM and SSH, discovers installed software and SQL Server instances, collects utilization history, and runs agentless dependency analysis so we know which instances actually talk to each other before anyone decides what moves together. From that we build the assessment you decide on: an Azure VM size per instance based on what it uses rather than what it was provisioned with, [Azure Hybrid Benefit](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/hybrid-use-benefit-licensing) applied where your Windows Server and SQL Server licensing qualifies, and a written disposition for every instance — migrate, rebuild, re-platform, or stay. Migration of EC2 instances is agent-based: a separate replication appliance on another EC2 VM coordinates replication, and Microsoft's Mobility agent on each instance streams changes to Azure while production keeps running. One date matters here: Microsoft's classic replication appliance reaches the end of its life on 30 September 2026 (its last recovery point was 31 May 2026), so every replication we set up runs on the simplified appliance Microsoft now requires for new agent-based migrations. Every wave gets a test migration into an isolated Azure network that touches nothing live; cutover is a final synchronization, a start in Azure and a DNS change in a planned window; and the AWS instance stays intact as your rollback until you sign the decommission list. EC2 is rarely the whole estate, so the data and database paths are part of the same plan rather than an afterthought. S3 buckets copy directly to Blob Storage or Data Lake Storage with AzCopy, which uses Microsoft's server-side copy so the data never hops through a client machine and works with hierarchical-namespace accounts; scheduled, incremental or very large transfers use Azure Data Factory instead. Bucket lifecycle rules become Blob lifecycle management, Glacier classes map to the Archive tier, and presigned URLs and bucket policies become SAS tokens and RBAC — the parts that need application code to change are flagged as exactly that. RDS databases take the engine-appropriate route: RDS for SQL Server to Azure SQL Database through the Azure SQL migration extension for Azure Data Studio, to SQL Managed Instance through native backups staged in S3 and copied to Azure with AzCopy (RDS writes backups without CHECKSUM, which is why Microsoft's backup-based migration service path is not available for this source), or to SQL Server on an Azure VM where a feature demands it; RDS for PostgreSQL to Azure Database for PostgreSQL through Microsoft's migration service, which supports RDS as an online source; RDS for MySQL to Azure Database for MySQL through Database Migration Service online or Data-in replication. Aurora, Oracle and DynamoDB are scoped individually because their targets are re-platforming decisions, not copies. Around the workloads sits everything that makes them run. IAM users, groups and roles map to Entra ID identities and Azure RBAC assignments; EC2 instance profiles become managed identities, which means code that calls AWS with instance credentials needs a change we flag rather than hide. VPCs and subnets become virtual networks and subnets, security groups and NACLs become network security groups, route tables become user-defined routes, load balancers become Azure Load Balancer or Application Gateway, Route 53 zones move to Azure DNS, and Direct Connect or VPN paths to your offices are rebuilt as ExpressRoute or VPN Gateway through our network implementation. All of it lands in an Azure landing zone — subscriptions, management groups, policy, hub network — which is a prerequisite we check, not something this service builds. And because a lift-and-shift is not always the whole answer, the assessment says plainly when it is not: Amazon Linux instances cannot run on Azure as-is and are rebuilt on a supported distribution; older paravirtualized instances need their PV drivers removed before replication; Lambda functions, EKS clusters and managed services with no like-for-like equivalent are re-platformed through Legacy Application Modernization to Azure; and what genuinely belongs in AWS stays there and gets Azure-side governance through Azure Arc instead of a migration it does not need.
Which one applies to you
Every resource in an AWS estate gets one of four dispositions in the assessment. This service delivers the first two columns end to end, refers the third honestly, and manages the fourth without moving it.
| Lift-and-shift to Azure VMs (this service) | Data and database moves (this service) | Rebuild or re-platform (referred) | Stay in AWS (governed with Azure Arc) | |
|---|---|---|---|---|
| What it covers | EC2 instances replicated as-is to Azure virtual machines — operating system, applications and data intact. | S3 buckets to Blob Storage or Data Lake Storage; RDS for SQL Server, PostgreSQL and MySQL to Azure's managed database services or SQL Server on an Azure VM. | Workloads with no like-for-like target: Lambda, EKS or ECS, Amazon Linux instances, DynamoDB, Aurora-specific features, code written against AWS SDKs. | Workloads with a hard reason to remain — a vendor contract, a regional requirement, an AWS-only dependency — that still need inventory, policy and patch visibility from Azure. |
| Tooling | Azure Migrate discovery appliance, simplified replication appliance and Mobility agent; test migration per wave. | AzCopy or Data Factory for object data; Azure SQL migration extension, native backup and restore, the PostgreSQL migration service and Database Migration Service for databases. | Application modernization engagement — design, code and pipeline work, not replication. | Azure Arc-enabled servers: the Connected Machine agent, Azure Policy, Update Manager and Defender for Cloud on servers that stay put. |
| Downtime shape | Replication runs while production serves; downtime is the cutover window — final sync, start in Azure, DNS. | Objects: none for the initial copy, a short final delta at cutover. Databases: online engines cut over in minutes; backup-and-restore engines take the final backup-copy-restore cycle, rehearsed and timed beforehand. | Depends on the rebuild; planned in that engagement. | None — nothing moves. |
| Our role | We deliver this end to end — this page. | We deliver this end to end — this page, with our SQL specialists for engine-level work. | We name what needs rebuilding and why, and scope it separately so you can decide. | We onboard the servers to Azure Arc as a separate engagement and say so in the disposition. |
The disposition is made per resource from your inventory, utilization and dependency data — not from a preference for the column we happen to sell.
Success criteria
What you receive
How the work unfolds
Confirm scope, stakeholders, the AWS accounts and regions in play, the target Azure subscription and landing zone, the deadline driving the move, and access. Deploy the Azure Migrate discovery appliance on an EC2 instance and start discovery on day one — utilization history and dependency data need collection time.
Build the assessment from discovery data: right-sized Azure targets, dependency map, Azure Hybrid Benefit and licensing analysis, projected Azure costs beside the AWS bill. Every EC2 instance, bucket and database gets a disposition — migrate, move, rebuild or re-platform, stay — and you approve the map before anything replicates. Clients who already hold our standalone assessment start here with it.
Verify the landing zone is ready or name what is missing, map IAM to Entra ID and RBAC, design virtual networks, NSGs, routing, load balancing and DNS from the VPC inventory, group resources into waves along dependency lines, and agree cutover windows and rollback criteria.
Deploy the simplified replication appliance, install the Mobility agent, enable replication and monitor to health. Seed S3 data with AzCopy or Data Factory. Rehearse every RDS migration against a target of the right engine and time the cutover cycle, so the wave plan carries measured numbers.
Run a test migration for every EC2 wave into an isolated network — boot, access, application smoke tests — and fold findings into the runbook. Execute cutovers in the agreed windows: final delta sync, start in Azure, database cutover, DNS and access changes, validation and sign-off. Later waves replicate while earlier ones cut over to keep the calendar honest.
Reconcile the migrated estate against the inventory, resolve exceptions within scope, hand over the AWS decommission checklist with the order and retention periods agreed with your finance and compliance owners, and deliver the closeout report.
Prerequisites
Who does what
IT Partner
- Deploy and operate the Azure Migrate tooling: discovery appliance, assessment, simplified replication appliance, Mobility agent, test migrations and cutovers.
- Produce the assessment, disposition map, Azure Hybrid Benefit and licensing analysis, identity and network mapping, and wave plan, and keep them current as decisions are made.
- Prepare the target Azure environment within migration scope inside your landing zone and document what is built.
- Execute S3 transfers and RDS migrations with Microsoft's tooling, rehearsed and reconciled per bucket and per database.
- Run test migrations for every wave and production cutovers in the agreed windows, and fix migration-related issues within scope.
- Validate migrated workloads, deliver the AWS decommission checklist and the closeout report.
- Say plainly when a workload should be rebuilt, re-platformed or left in AWS, and what should happen to it instead.
Your team
- Provide AWS account access, appliance capacity, security-group changes and network information, and Azure subscription access.
- Provide AWS invoices, commitment details and licensing documentation for the cost comparison and Azure Hybrid Benefit analysis, and own licensing compliance decisions.
- Sign off the per-resource disposition, the identity and network design, the wave plan and each wave's cutover.
- Provide application and database owners for rehearsals and smoke tests, and staff the client side of cutover windows.
- Perform or approve DNS changes at your registrar or Route 53 and coordinate third-party vendors whose systems point at migrating workloads.
- Own the AWS contract relationship, any data-transfer-out waiver request to AWS, and the execution of the decommission checklist.
- Own application code changes flagged in the assessment, or commission them through our modernization service.
What's not included
Limitations & technical notes
Frequently asked questions
Why would we move from AWS to Azure at all?
Usually because the AWS estate was never a decision — it came with an acquisition, a past team's preference or a vendor's default — and the organization now runs Microsoft 365 and Entra ID for everyone, holds an Azure commitment or credits, and pays for two identity planes, two support relationships and two skill sets. Consolidation is a legitimate reason. A guaranteed saving is not, and we will not offer one. The assessment prices Azure on the delivery date against your real AWS invoices, states every assumption, and includes dispositions that say 'stay in AWS' when that is the honest answer.
How does Azure Migrate work for AWS, technically?
Azure Migrate treats EC2 instances as physical servers. A discovery appliance on an EC2 instance in your account inventories them over WinRM and SSH, discovers software and SQL instances, collects utilization and runs agentless dependency analysis, and the assessment is built from that data. Migration is agent-based: a separate replication appliance on another EC2 instance coordinates the work, and Microsoft's Mobility agent on each instance streams changes to a cache storage account in Azure while production keeps running. Cutover is a final sync and a start in Azure. Every replication we set up uses Microsoft's simplified appliance; the classic appliance reaches end of life on 30 September 2026.
Will our workloads be down during the migration?
Replication runs while everything stays in service, so EC2 downtime is each wave's cutover window: final synchronization, start in Azure, DNS and access changes, validation. Object data copies with no downtime and a short final delta. Databases depend on the engine: PostgreSQL and MySQL cut over online in minutes, while RDS for SQL Server to SQL Managed Instance takes the final backup, copy and restore cycle, which we rehearse and time before the window is agreed. Every EC2 wave is also test-migrated first into an isolated network, which is what keeps cutover nights uneventful.
What is a test migration and why do you insist on it?
Azure Migrate can start a copy of a replicated instance in an isolated Azure network without touching production or interrupting replication. We do it for every wave: boot check, administrative access, application smoke tests by the owners you name. Problems surface days before cutover instead of during it, and the runbook is corrected while there is still time to correct it. Skipping it saves an afternoon and costs a weekend.
How do S3 buckets get to Azure?
With AzCopy for most buckets: it copies directly from S3 to Blob Storage or Data Lake Storage using Microsoft's server-side copy, so objects never pass through a client machine, and it works with hierarchical-namespace storage accounts. Scheduled, incremental or very large transfers use Azure Data Factory. We map each bucket to a container, translate lifecycle rules and storage classes to Blob lifecycle management and access tiers, reconcile object counts and sizes per bucket, and flag the one thing tooling cannot fix — application code that calls the S3 API and needs to change to the Azure SDK — as separate scope.
How do RDS databases get to Azure?
By engine, with Microsoft's tooling. RDS for SQL Server goes to Azure SQL Database through the Azure SQL migration extension for Azure Data Studio, or to SQL Managed Instance through native backups staged in S3 and copied with AzCopy — RDS writes backups without CHECKSUM, so Microsoft's backup-based migration service path is not available for that source — or to SQL Server on an Azure VM where a feature demands it. RDS for PostgreSQL goes to Azure Database for PostgreSQL through Microsoft's migration service, which supports RDS as an online source. RDS for MySQL goes to Azure Database for MySQL through Database Migration Service online or Data-in replication. Aurora, Oracle and DynamoDB are re-platforming decisions and are scoped individually. Where an estate has a serious SQL footprint, our SQL specialists run that part alongside this engagement so nothing falls between the two.
What happens to IAM, VPCs and Route 53?
They are redesigned, not copied — Azure's model is different and a literal translation would be worse than either. IAM users, groups and roles map to Entra ID identities and Azure RBAC role assignments; instance profiles become managed identities; access keys are retired in favor of Key Vault and managed identity where the application allows. VPCs and subnets become virtual networks and subnets, security groups and NACLs become NSGs, route tables become user-defined routes, load balancers become Azure Load Balancer or Application Gateway, and Route 53 zones move to Azure DNS with a cutover plan per record. The identity and network mapping is a signed-off deliverable before wave one, and the whole design lands inside your landing zone.
Do we need an Azure landing zone first?
If you have one, we check it is ready. If you do not, yes — subscriptions, management groups, policy, identity governance and the hub network need to exist before workloads land in them, and the assessment says so plainly rather than dropping servers into an unstructured subscription that someone will have to untangle later. The landing zone is a separate engagement with its own scope; sequencing it before wave one is often the right call and costs less than doing it afterwards.
What about Windows and SQL Server licensing?
Two things matter. Azure Hybrid Benefit lets Windows Server and SQL Server licenses with active Software Assurance or subscription equivalents offset the licensing portion of Azure pricing, and we apply it per workload where you qualify. But if your EC2 or RDS instances were license-included on AWS, you may not own licenses to bring at all; Azure's license-included pricing then applies unless you acquire eligible licenses, and the cost model shows both cases. Separately, Windows Server versions past end of support receive Extended Security Updates at no extra charge once they run in Azure, which removes a recurring cost and risk for aging servers.
Who pays for AWS egress and Azure consumption?
AWS bills you for data transferred out during replication and data copy, and Microsoft bills you for Azure: compute, storage, the replication cache storage account, database services and, after Microsoft's free period for server replication, a per-server monthly charge. Neither is part of our fee. AWS has published a process for waiving data-transfer-out charges for customers moving off AWS, requested through AWS Support and granted at AWS's discretion — we show you how to ask, and the cost model never assumes it is granted. If you would rather have Azure on one invoice with your Microsoft 365, we transact Azure through CSP as a direct-bill partner; Microsoft's meters remain the bill of record either way.
Can Microsoft funding help pay for the migration?
Sometimes. Microsoft operates partner-delivered investment programs for qualifying Azure migrations — Frontier Accelerate for Azure in Microsoft's current fiscal year, the successor to Azure Accelerate and Azure Migrate and Modernize. Eligibility, scope and amounts are Microsoft's decision, change by fiscal year and are never guaranteed. During scoping we tell you honestly whether your estate plausibly fits the current program and help pursue it if it does, but the cost model never depends on funding materializing — migrations built on incentives that lapse are how projects stall halfway.
What should not be migrated with this service?
Anything without a like-for-like target. Amazon Linux instances cannot run on Azure as-is and are rebuilt on a supported distribution. Lambda functions, ECS and EKS workloads, DynamoDB tables and Aurora-specific features are re-platforming work, delivered through our application modernization service. Workloads with a hard reason to stay — a vendor contract, a regional requirement, an AWS-only dependency — stay, and get Azure-side inventory, policy, patching and security visibility through Azure Arc without moving. Each of those is a written disposition in the assessment. What we avoid is the quiet failure mode where the awkward third of the estate is simply never mentioned again.
What does this cost, and why is there no price on the page?
Because a per-instance price would misprice the work. Ten EC2 instances with one bucket and one RDS database, and three hundred instances across two regions with terabytes in S3 and six database engines, are different projects, and the data and database components do not scale with instance count. Scoping is quick: an EC2 and RDS inventory export, your last two AWS invoices and your driving date get you a wave plan and a written fixed quote, and per our standard terms you pay after you approve delivery. AWS egress and Azure consumption are separate and projected transparently in the assessment.
What happens after the migration is done?
You own a native Azure estate, and the closeout hands it over cleanly: validation evidence, right-sizing rationale, the identity and network design, and an AWS decommission checklist with the order and retention periods agreed with your finance and compliance owners. Most clients then want two things — someone watching the environment, which is our Azure Resource Monitoring and Maintenance service, and a cost discipline so the Azure bill stays honest, which is the FinOps assessment. Both are deliberately separate engagements: the migration stands on its own, and you choose who operates what follows.