| App Service | Elastic Beanstalk or ECS Fargate | Beanstalk is the closest managed analogue; ECS Fargate is where we land most of them. Deployment slots have no direct equivalent, so blue-green is rebuilt with target groups or CodeDeploy. Built-in authentication in App Service must be reimplemented, usually with Cognito or an ALB OIDC action. |
|---|
| Azure Kubernetes Service (AKS) | Amazon EKS | Manifests port largely unchanged. The work is in the platform layer: CNI and IP address planning, IAM Roles for Service Accounts replacing workload identity, Azure Disk and Files storage classes becoming EBS and EFS CSI drivers, and ingress moving from Application Gateway Ingress Controller to AWS Load Balancer Controller. |
|---|
| Azure Functions | AWS Lambda | Programming models differ. Bindings and triggers have no equivalent and become explicit SDK calls. Durable Functions orchestration maps to Step Functions, which is a redesign rather than a port. Cold start and timeout characteristics differ enough to require load re-testing. |
|---|
| Azure SQL Database / Managed Instance | Amazon RDS for SQL Server, or Aurora PostgreSQL with conversion | RDS for SQL Server is the low-risk path but check feature parity, particularly around cross-database queries, SQL Agent jobs and CLR. Aurora PostgreSQL cuts licence cost substantially but requires schema and code conversion via the AWS Schema Conversion Tool plus real regression testing on stored procedure logic. |
|---|
| Cosmos DB | Amazon DynamoDB (or DocumentDB for the Mongo API) | Not a drop-in swap. Partition key design, consistency models and the absence of a direct SQL-like query surface mean the data access layer is rewritten. Cosmos multi-region write maps to DynamoDB global tables with different conflict semantics. Change feed maps to DynamoDB Streams. |
|---|
| Blob Storage | Amazon S3 | The cleanest mapping in the whole table. SAS tokens become presigned URLs, access tiers map to S3 storage classes, lifecycle rules translate directly. Watch for code depending on Azure-specific metadata headers or blob lease semantics. |
|---|
| Azure Files | Amazon EFS, or FSx for Windows File Server | Choose by protocol. SMB workloads with Active Directory integration go to FSx for Windows File Server. NFS and Linux workloads go to EFS. Getting this wrong is a re-migration, not a reconfiguration, so it is decided in assessment. |
|---|
| Microsoft Entra ID | IAM Identity Center (with Entra ID often retained as identity provider) | Most clients keep Entra ID as the identity provider and federate into IAM Identity Center rather than replacing it. Application-level Entra ID authentication becomes Cognito or a direct OIDC integration. Managed identities map to IAM roles, which is a code change wherever the Azure identity SDK is used. |
|---|
| Service Bus | Amazon SQS, SNS or EventBridge | Service Bus does several jobs that AWS splits across three services. Queues map to SQS, topics and subscriptions to SNS or EventBridge, and content-based routing to EventBridge rules. Sessions, scheduled delivery and dead-lettering behave differently, and FIFO ordering guarantees need explicit design with SQS FIFO. |
|---|
| Event Hubs | Amazon Kinesis Data Streams, or Amazon MSK | If your producers and consumers already use the Kafka-compatible endpoint, MSK is the lower-change path. Otherwise Kinesis is cheaper to operate. Partition and shard models differ, as does retention pricing, so throughput planning is redone rather than translated. |
|---|
| Data Factory | AWS Glue, Step Functions, or MWAA | No single equivalent. Glue covers extract, transform and load with a data catalogue; Step Functions covers orchestration; Managed Workflows for Apache Airflow suits complex dependency graphs. Data Factory pipelines are redesigned, not converted, and this is frequently the largest single line item in an Azure-to-AWS estimate. |
|---|
| Synapse Analytics | Amazon Redshift (with Athena and Glue for the lake side) | Dedicated SQL pools map to Redshift; serverless SQL pools map to Athena over S3; Spark pools map to EMR or Glue. T-SQL to Redshift SQL conversion is real work, particularly around window functions, temporary table patterns and stored procedures. |
|---|
| Azure Monitor and Log Analytics | Amazon CloudWatch (often with Grafana or Datadog) | CloudWatch Logs Insights is less expressive than KQL, and teams fluent in Kusto feel the loss. Every dashboard and alert rule is rebuilt. We usually take the opportunity to instrument with OpenTelemetry so the next platform decision is not another rebuild. |
|---|
| Azure Front Door | Amazon CloudFront (with AWS WAF and Global Accelerator) | CDN and routing map cleanly. WAF rule sets must be re-authored — managed rule groups differ in naming and behaviour — and the rules need to run in count mode against real traffic before enforcement, or you will block legitimate users at cutover. |
|---|
| ExpressRoute | AWS Direct Connect | Same concept, different provisioning lead time. Allow four to twelve weeks for a new cross-connect depending on location and partner. This is the single most common cause of a migration timeline slipping, and it must be started during assessment rather than before the first wave. |
|---|
| Key Vault | AWS KMS plus Secrets Manager (or Parameter Store) | Key Vault covers keys, secrets and certificates in one service; AWS splits them. Keys go to KMS, secrets to Secrets Manager or Parameter Store, certificates to ACM. Every application that reads configuration from Key Vault needs a code change, and automatic secret rotation is configured differently. |
|---|
| Azure OpenAI Service | Amazon Bedrock | Different model catalogues. If you depend on a specific GPT version, verify availability on Bedrock or plan to change model and re-run your evaluation suite. Quota models differ: Azure allocates tokens per minute per deployment, Bedrock applies per-model requests and tokens per minute with a daily ceiling. Prompts almost always need re-tuning across model families. |
|---|
| Azure Machine Learning | Amazon SageMaker | Concepts align — workspaces, experiments, registries, endpoints — but the SDK surface differs enough that pipelines are rewritten. Trained model artefacts port; the training and deployment orchestration around them does not. |
|---|
| Azure Container Registry | Amazon ECR | Straightforward. Images are re-pushed or replicated, geo-replication maps to ECR cross-region replication, and vulnerability scanning maps to ECR enhanced scanning. Remember to update every image reference in manifests, pipelines and Helm values. |
|---|
| Azure DevOps | AWS CodePipeline, or GitHub Actions | We migrate most clients to GitHub Actions rather than CodePipeline: better ecosystem, easier local reasoning, and it keeps CI portable if the cloud choice changes again. Azure Repos to CodeCommit is not recommended given CodeCommit's limited feature set. Pipeline YAML is rewritten, not converted. |