Generated banner for Azure Cloud Migrate
Generated logo for Azure Cloud Migrate

Azure Cloud Migrate

MicrosoftOfficialCreated by Microsoft

  • Skill
  • Workflow
  • Cloud and DevOps
  • MIT
  • Low risk

From the author

Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration.
— the description by Microsoft

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Azure Cloud Migrate provides a structured, multi-phase workflow for transitioning applications from various cloud platforms to Azure. It focuses on assessing the current architecture, mapping services to Azure equivalents, and performing the necessary code and configuration conversions. The skill ensures a methodical approach by requiring an assessment report before any migration actions occur, and it provides specific guidance for common migration paths such as AWS Lambda to Azure Functions, Heroku to App Service, and Kubernetes to Container Apps.

What it does

  • Generates comprehensive migration assessment reports for cross-cloud workloads.
  • Maps source platform services, compute configurations, and dependencies to Azure equivalents.
  • Provides guidance for converting application code and configuration files.
  • Audits source code for platform-specific service discovery patterns.
  • Creates architecture diagrams for both current and target states.
  • Tracks migration progress and provides resource-level status updates.

When to use it

  • When planning to migrate workloads from AWS Lambda, Elastic Beanstalk, or Fargate to Azure.
  • When moving applications from Heroku or Google App Engine to Azure App Service.
  • When transitioning Kubernetes or Cloud Run deployments to Azure Container Apps.
  • When you need a structured assessment of migration readiness and effort.

Advantages

  • Ensures a consistent, step-by-step migration process.
  • Reduces risk by requiring a detailed assessment report before code changes.
  • Provides clear mapping between source platform features and Azure services.
  • Includes specific checks for common migration pitfalls like hardcoded service discovery.

Usage examples

“Assess my current AWS Lambda project for migration to Azure Functions.”
The agent will analyze the Lambda project, map the services to Azure Functions, and generate a migration assessment report in the output directory.
“Migrate my Heroku application to Azure App Service.”
The agent will perform an assessment, guide the conversion of configuration files, and assist in setting up the application for Azure App Service.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/microsoft/azure-cloud-migrate/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip azure-cloud-migrate.zip -d .agents/skills

Documentation by Microsoft

Azure Cloud Migrate

This skill handles assessment and code migration of existing cloud workloads to Azure.

Rules

  1. Follow phases sequentially — do not skip

  2. Generate assessment before any code migration

  3. Load the scenario reference and follow its rules

  4. Use mcp_azure_mcp_get_azure_bestpractices and mcp_azure_mcp_documentation MCP tools

  5. Use the latest supported runtime for the target service

  6. Destructive actions require ask_user — functions global-rules | app-service global-rules

  7. Report progress to user — During long-running operations (deployments, image pushes), provide resource-level status updates so the user is never left waiting without feedback — see workflow-details.md

  8. Audit service discovery in app code — Kubernetes DNS names (e.g., http://order-service:3001) do not resolve in Container Apps. During assessment, scan source code for hardcoded hostnames/ports in HTTP clients and flag them for env-var-driven URL injection

Migration Scenarios

SourceTargetReference
AWS LambdaAzure Functionslambda-to-functions.md (assessment, code-migration)
AWS Elastic BeanstalkAzure App Servicebeanstalk-to-app-service.md
HerokuAzure App Serviceheroku-to-app-service.md
Google App EngineAzure App Serviceapp-engine-to-app-service.md
AWS Fargate (ECS)Azure Container Appsfargate-to-container-apps.md (assessment, deployment)
Kubernetes (GKE/EKS/Self-hosted)Azure Container Appsk8s-to-container-apps.md
GCP Cloud RunAzure Container Appscloudrun-to-container-apps.md
Spring Boot (Azure Spring Apps/VMs)Azure Container Appsspring-apps-to-aca.md

No matching scenario? Use mcp_azure_mcp_documentation and mcp_azure_mcp_get_azure_bestpractices tools.

Output Directory

All output goes to <workspace-root-basename>-azure/ at workspace root, where <workspace-root-basename> is the name of the top-level workspace directory itself (NOT a subdirectory within it). Never modify the source directory.

Steps

  1. Create <workspace-root-basename>-azure/ at workspace root

  2. Assess — Analyze source, map services, generate report using the scenario-specific assessment guide → functions assessment | app-service assessment

  3. Migrate — Convert code/config using the scenario-specific migration guide → functions code-migration | app-service code-migration

  4. Ask User — "Migration complete. Test locally or deploy to Azure?"

  5. Hand off to azure-prepare for infrastructure, testing, and deployment

Track progress in migration-status.md — see workflow-details.md.

Files

references/services/app-service/heroku-to-app-service.md

Heroku to Azure App Service Migration

Detailed guidance for migrating Heroku applications to Azure App Service.

Service Mapping

Heroku ServiceAzure Equivalent
Heroku AppAzure App Service
Dynos (Web)App Service instances
Dynos (Worker)WebJobs (continuous) or Azure Functions
ProcfileStartup command / Docker entrypoint
BuildpacksDocker or App Service runtime stacks
Config VarsApp Settings / App Configuration / Key Vault
Heroku PostgresAzure Database for PostgreSQL Flexible Server
Heroku RedisAzure Cache for Redis
Heroku KafkaAzure Event Hubs (Kafka-compatible)
Add-ons (general)Azure managed services
Heroku PipelinesGitHub Actions / Azure DevOps
Review AppsDeployment Slots
Heroku CIGitHub Actions
Heroku SchedulerWebJobs (triggered) or Azure Functions Timer
Heroku ACM (SSL)App Service Managed Certificate
Custom DomainsApp Service Custom Domains
Heroku Logs / LogplexApplication Insights / Azure Monitor
Heroku MetricsAzure Monitor Metrics
Heroku ConnectAzure Data Factory or Logic Apps
Private SpacesApp Service Environment (ASE)

Dyno → App Service Plan Mapping

Heroku Dyno TypeApp Service PlanNotes
Free / EcoFree (F1)Dev/test only — F1 has shared compute with quota limits (CPU minutes), not equivalent to Heroku's 60 min/day cap. See App Service Free SKU limits
BasicBasic (B1)No auto-scale, no slots
Standard-1X (512 MB)Standard (S1)Auto-scale, slots, custom domains
Standard-2X (1 GB)Standard (S2)More memory
Performance-M (2.5 GB)Premium v3 (P1v3)VNet, more instances
Performance-L (14 GB)Premium v3 (P3v3)High-memory workloads
Private-M / Private-LApp Service Environment (ASE)Network-isolated

Procfile → Startup Configuration

Web Process
Procfile EntryAzure Equivalent
web: node server.jsStartup command: node server.js
web: gunicorn app:appStartup command: gunicorn --bind=0.0.0.0 --timeout 600 app:app
web: java -jar target/app.jarStartup command: java -jar app.jar
web: bundle exec puma -C config/puma.rbCustom container with Dockerfile
Worker Process

Heroku worker dynos have no direct App Service equivalent. Migration paths:

Heroku Worker PatternAzure Equivalent
worker: node worker.jsWebJob (continuous)
worker: celery -A tasks workerContainer App or AKS
clock: node scheduler.jsAzure Functions Timer trigger
release: rake db:migrateDeployment slot swap scripts

Add-ons → Azure Managed Services

Heroku Add-onAzure EquivalentMigration Notes
Heroku PostgresPostgreSQL Flexible ServerUse Azure DMS for data migration
Heroku RedisAzure Cache for RedisExport/import RDB or use replication
Heroku KafkaAzure Event Hubs (Kafka API)Compatible Kafka protocol
PapertrailApplication InsightsStructured logging migration
New RelicApplication InsightsAPM feature parity
SendGridAzure Communication Services or SendGrid on AzureSendGrid available via Azure Marketplace
CloudinaryAzure Blob Storage + CDNMedia storage + delivery
MemcachierAzure Cache for RedisRedis supports memcache patterns
Bonsai (Elasticsearch)Azure AI Search or Elastic on AzureSearch service migration
Heroku SchedulerAzure Functions Timer triggerCron-based scheduling
Bucketeer (S3)Azure Blob StorageObject storage migration

Config Vars → App Configuration / Key Vault

Config Var TypeAzure TargetImplementation
DATABASE_URLApp Setting (managed identity)Use Entra auth, not connection string
REDIS_URLApp SettingAzure Cache connection string or managed identity
SECRET_KEYKey Vault reference@Microsoft.KeyVault(SecretUri=...)
API_KEY (third-party)Key Vault referenceStore in Key Vault
NODE_ENV / RAILS_ENVApp SettingAdd as a regular App Setting (e.g., NODE_ENV=production) — controls runtime behavior. Do NOT confuse with WEBSITES_NODE_DEFAULT_VERSION, which controls the Node.js engine version on Windows App Service.
PORTAuto-injectedApp Service sets PORT automatically
Feature flagsApp ConfigurationFeature management support built-in

⚠️ Warning: Heroku's DATABASE_URL includes credentials. On Azure, use managed identity authentication instead. Never migrate connection strings with embedded passwords.

Buildpacks → Docker

For apps using standard runtimes, use App Service runtime stacks directly. For custom buildpacks, migrate to Docker:

Buildpack ScenarioAzure Approach
Official Node.js buildpackApp Service Node.js runtime stack
Official Python buildpackApp Service Python runtime stack
Official Java buildpackApp Service Java runtime stack
Multi-buildpack (e.g., Node + Python)Custom Dockerfile
Custom buildpack (apt packages)Custom Dockerfile
Heroku CNB (Cloud Native Buildpack)Azure Container Apps with CNB

Heroku Pipelines → GitHub Actions

Pipeline FeatureAzure Equivalent
Pipeline stages (dev → staging → prod)GitHub Actions environments
Auto-deploy on pushGitHub Actions on: push trigger
Review AppsDeployment slots with PR-based deploy
Pipeline promotionSlot swap (staging → production)
Heroku CI test runnerGitHub Actions test job
Release phasePre-swap slot scripts
Example: GitHub Actions Deployment
name: Deploy to App Service
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write   # Required for azure/login@v2 OIDC token request
      contents: read    # Required to checkout the repo
    steps:
      - uses: actions/checkout@v4
      - uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/webapps-deploy@v3
        with:
          app-name: '<app-name>'
          slot-name: 'staging'

⚠️ Without the permissions: block, azure/login@v2's OIDC token request fails with HTTP 403.

Review Apps → Deployment Slots

Heroku Review AppsApp Service Deployment Slots
Auto-create per PRCreate via GitHub Actions per PR
Unique URL per PR<app>-<slot>.azurewebsites.net
Auto-destroy on PR closeDelete slot in PR close workflow
Shared pipeline configSlot-specific App Settings
app.json postdeploy scriptsSlot swap pre/post actions

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Microsoft
Publisher
Microsoft (Official)
Source
microsoft/skills · .github/plugins/azure-skills/skills/azure-cloud-migrate · commit 0696600
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from .github/plugins/azure-skills/LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Also distributed in
microsoft/azure-skills

AutoGineer is not affiliated with or endorsed by Microsoft.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-cloud-migrate.zip