Gap-9: Container Apps Migrate (F → A) — ECS/Fargate + Cloud Run migration guides#1634
Gap-9: Container Apps Migrate (F → A) — ECS/Fargate + Cloud Run migration guides#1634paulyuk wants to merge 3 commits into
Conversation
…p-9) Add cross-cloud migration support for Container Apps: - ecs-to-container-apps.md — AWS ECS/Fargate migration - cloud-run-to-container-apps.md — GCP Cloud Run migration - assessment.md — Container-specific assessment template - code-migration.md — Dockerfile optimization, YAML conversion - global-rules.md — Container migration rules Closes #1617 Parent: #1608 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds migration reference documentation for moving container workloads from AWS ECS/Fargate and GCP Cloud Run to Azure Container Apps, plus general rules and phased guidance (assessment + code migration).
Changes:
- Added global migration rules for Container Apps, including confirmation and identity-first guidance.
- Added AWS ECS/Fargate → Container Apps and GCP Cloud Run → Container Apps migration guides with mapping tables and example manifests.
- Added assessment and code-migration phase references, including report templates and Dockerfile/YAML patterns.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| plugin/skills/azure-cloud-migrate/references/services/container-apps/global-rules.md | Defines cross-phase rules (confirmation policy, identity-first auth, ACA specifics, output directory). |
| plugin/skills/azure-cloud-migrate/references/services/container-apps/ecs-to-container-apps.md | ECS/Fargate to Container Apps service/resource mapping plus YAML and operational guidance. |
| plugin/skills/azure-cloud-migrate/references/services/container-apps/code-migration.md | Code/config migration phase steps, Dockerfile optimization guidance, and YAML patterns. |
| plugin/skills/azure-cloud-migrate/references/services/container-apps/cloud-run-to-container-apps.md | Cloud Run to Container Apps mapping, YAML examples, jobs mapping, and key differences. |
| plugin/skills/azure-cloud-migrate/references/services/container-apps/assessment.md | Assessment phase checklist and a fixed-format assessment report template. |
Details# 🔍 Token Analysis Report
fatal: path 'plugin/skills/azure-cloud-migrate/references/services/container-apps/assessment.md' exists on disk, but not in 'origin/main' 📊 Token Change ReportComparing Summary
Changed Files
📊 Token Limit Check ReportChecked: 736 files
|
| File | Tokens | Limit | Over By |
|---|---|---|---|
.github/skills/analyze-skill-issues/SKILL.md |
2109 | 500 | +1609 |
.github/skills/analyze-test-run/SKILL.md |
2471 | 500 | +1971 |
.github/skills/file-test-bug/SKILL.md |
628 | 500 | +128 |
.github/skills/sensei/README.md |
3531 | 2000 | +1531 |
.github/skills/sensei/SKILL.md |
3026 | 500 | +2526 |
.github/skills/sensei/references/EXAMPLES.md |
3701 | 2000 | +1701 |
.github/skills/sensei/references/LOOP.md |
4169 | 2000 | +2169 |
.github/skills/sensei/references/SCORING.md |
4299 | 2000 | +2299 |
.github/skills/skill-authoring/SKILL.md |
839 | 500 | +339 |
.github/skills/vally-eval/SKILL.md |
1764 | 500 | +1264 |
plugin/skills/airunway-aks-setup/SKILL.md |
1025 | 500 | +525 |
plugin/skills/appinsights-instrumentation/SKILL.md |
937 | 500 | +437 |
plugin/skills/azure-ai/SKILL.md |
820 | 500 | +320 |
plugin/skills/azure-aigateway/SKILL.md |
1261 | 500 | +761 |
plugin/skills/azure-aigateway/references/policies.md |
2342 | 2000 | +342 |
plugin/skills/azure-cloud-migrate/SKILL.md |
1271 | 500 | +771 |
plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md |
2029 | 2000 | +29 |
plugin/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md |
2458 | 2000 | +458 |
plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md |
2587 | 2000 | +587 |
plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md |
3871 | 2000 | +1871 |
plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md |
2600 | 2000 | +600 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md |
2181 | 2000 | +181 |
plugin/skills/azure-compliance/SKILL.md |
1188 | 500 | +688 |
plugin/skills/azure-compute/SKILL.md |
821 | 500 | +321 |
plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md |
2344 | 2000 | +344 |
plugin/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md |
2509 | 2000 | +509 |
plugin/skills/azure-deploy/SKILL.md |
1645 | 500 | +1145 |
plugin/skills/azure-deploy/references/pre-deploy-checklist.md |
4692 | 2000 | +2692 |
plugin/skills/azure-deploy/references/recipes/azd/errors.md |
4004 | 2000 | +2004 |
plugin/skills/azure-deploy/references/troubleshooting.md |
2038 | 2000 | +38 |
plugin/skills/azure-diagnostics/SKILL.md |
1423 | 500 | +923 |
plugin/skills/azure-enterprise-infra-planner/SKILL.md |
911 | 500 | +411 |
plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md |
2022 | 2000 | +22 |
plugin/skills/azure-hosted-copilot-sdk/SKILL.md |
1332 | 500 | +832 |
plugin/skills/azure-kubernetes/SKILL.md |
2634 | 500 | +2134 |
plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md |
3690 | 500 | +3190 |
plugin/skills/azure-kusto/SKILL.md |
2152 | 500 | +1652 |
plugin/skills/azure-messaging/SKILL.md |
821 | 500 | +321 |
plugin/skills/azure-prepare/SKILL.md |
3333 | 500 | +2833 |
plugin/skills/azure-prepare/references/aspire.md |
4617 | 2000 | +2617 |
plugin/skills/azure-prepare/references/plan-template.md |
2560 | 2000 | +560 |
plugin/skills/azure-prepare/references/recipes/azd/aspire.md |
2275 | 2000 | +275 |
plugin/skills/azure-prepare/references/recipes/azd/terraform.md |
3555 | 2000 | +1555 |
plugin/skills/azure-prepare/references/research.md |
2274 | 2000 | +274 |
plugin/skills/azure-prepare/references/resources-limits-quotas.md |
3322 | 2000 | +1322 |
plugin/skills/azure-prepare/references/security.md |
2147 | 2000 | +147 |
plugin/skills/azure-prepare/references/services/functions/bicep.md |
3043 | 2000 | +1043 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md |
2813 | 2000 | +813 |
plugin/skills/azure-prepare/references/services/functions/terraform.md |
3404 | 2000 | +1404 |
plugin/skills/azure-quotas/SKILL.md |
3006 | 500 | +2506 |
plugin/skills/azure-quotas/references/commands.md |
2644 | 2000 | +644 |
plugin/skills/azure-reliability/SKILL.md |
5922 | 500 | +5422 |
plugin/skills/azure-reliability/references/configure-multi-region.md |
4729 | 2000 | +2729 |
plugin/skills/azure-reliability/references/services/app-service/reliability.md |
2591 | 2000 | +591 |
plugin/skills/azure-resource-lookup/SKILL.md |
1367 | 500 | +867 |
plugin/skills/azure-resource-visualizer/SKILL.md |
2122 | 500 | +1622 |
plugin/skills/azure-storage/SKILL.md |
1228 | 500 | +728 |
plugin/skills/azure-upgrade/SKILL.md |
1542 | 500 | +1042 |
plugin/skills/azure-upgrade/references/languages/java/INSTRUCTION.md |
2893 | 2000 | +893 |
plugin/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md |
2428 | 2000 | +428 |
plugin/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md |
2411 | 2000 | +411 |
plugin/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md |
2315 | 2000 | +315 |
plugin/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md |
2190 | 2000 | +190 |
plugin/skills/azure-upgrade/references/services/functions/automation.md |
3463 | 2000 | +1463 |
plugin/skills/azure-upgrade/references/services/functions/consumption-to-flex.md |
2773 | 2000 | +773 |
plugin/skills/azure-validate/SKILL.md |
950 | 500 | +450 |
plugin/skills/entra-agent-id/SKILL.md |
4001 | 500 | +3501 |
plugin/skills/entra-app-registration/SKILL.md |
2070 | 500 | +1570 |
plugin/skills/entra-app-registration/references/api-permissions.md |
2545 | 2000 | +545 |
plugin/skills/entra-app-registration/references/cli-commands.md |
2211 | 2000 | +211 |
plugin/skills/entra-app-registration/references/console-app-example.md |
2752 | 2000 | +752 |
plugin/skills/entra-app-registration/references/oauth-flows.md |
2375 | 2000 | +375 |
plugin/skills/microsoft-foundry/SKILL.md |
5729 | 500 | +5229 |
plugin/skills/microsoft-foundry/finetuning/SKILL.md |
1375 | 500 | +875 |
plugin/skills/microsoft-foundry/foundry-agent/create/create-hosted.md |
7619 | 2000 | +5619 |
plugin/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md |
5050 | 2000 | +3050 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md |
10921 | 2000 | +8921 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/local-run.md |
2122 | 2000 | +122 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md |
2913 | 2000 | +913 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/tools.md |
2159 | 2000 | +159 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md |
4591 | 2000 | +2591 |
plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md |
5009 | 2000 | +3009 |
plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md |
2863 | 2000 | +863 |
plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md |
2212 | 2000 | +212 |
plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md |
4325 | 2000 | +2325 |
plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md |
2636 | 2000 | +636 |
plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md |
2009 | 2000 | +9 |
plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md |
2581 | 2000 | +581 |
plugin/skills/microsoft-foundry/foundry-agent/observe/observe.md |
3856 | 2000 | +1856 |
plugin/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md |
3855 | 2000 | +1855 |
plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md |
2175 | 2000 | +175 |
plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md |
3134 | 2000 | +1134 |
plugin/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md |
2701 | 2000 | +701 |
plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md |
1805 | 500 | +1305 |
plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md |
1739 | 500 | +1239 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md |
2235 | 500 | +1735 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md |
3335 | 2000 | +1335 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md |
1226 | 500 | +726 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md |
5534 | 2000 | +3534 |
plugin/skills/microsoft-foundry/project/create/create-foundry-project.md |
2258 | 2000 | +258 |
plugin/skills/microsoft-foundry/quota/quota.md |
2288 | 2000 | +288 |
plugin/skills/microsoft-foundry/quota/references/capacity-planning.md |
2080 | 2000 | +80 |
plugin/skills/microsoft-foundry/references/agent-metadata-contract.md |
2217 | 2000 | +217 |
plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md |
2162 | 2000 | +162 |
plugin/skills/python-appservice-deploy/SKILL.md |
688 | 500 | +188 |
Consider moving content to
references/subdirectories.
Automated token analysis. See skill authoring guidelines for best practices.
|
Hi — from the ACA team's perspective, we'd recommend preferring PRs #1534 (AWS Fargate → ACA) and #1567 (GCP Cloud Run → ACA) over the migration content in this PR once the outstanding review issues on those PRs are addressed. Those PRs provide standalone, independently testable migration skills with full end-to-end playbooks (assessment → image migration → deployment → validation), bash + PowerShell parity, error handling, and tests — whereas the reference additions here are more supplementary mapping tables without actionable deployment workflows. We're actively working on fixing the review feedback on #1534 and #1567 and will update those PRs accordingly. The non-migration Gap PRs (#1636, #1637, #1642) from this split are being assessed independently. cc @simonjj |
jongio
left a comment
There was a problem hiding this comment.
The Container Apps migration references follow the established functions/ pattern well, but they aren't connected to the skill - causing both CI failures and making the content unreachable.
Blocking: SKILL.md not updated (root cause of both CI failures)
metadata.versionis still1.0.1- needs a bump (e.g.,1.1.0for new scenarios). This causes the "Skill Structure" failure.- The Migration Scenarios table (line 27) only lists Lambda->Functions. Add rows for
ECS/Fargate -> Container AppsandCloud Run -> Container Appswith links to the scenario docs. - The Steps section (lines 38-39) hardcodes links to
functions/assessment.mdandfunctions/code-migration.md- these need to be scenario-aware or duplicated for Container Apps. The Rules section (line 21) also only linksfunctions/global-rules.md. - All 5 new files have zero inbound links from SKILL.md, so the "Markdown References" check flags them as orphaned. The fix: add the scenario rows above, then ensure
assessment.mdandcode-migration.mdlink to their respective scenario files (like the functions pattern does withlambda-to-functions.md).
Technical issues to fix:
assessment.mdstep 7 mentions mapping volumes to "Azure Files or managed disks." Container Apps doesn't support managed disks - it supports Azure Files mounts and ephemeral storage. The report template (section 6) correctly says "Azure Files / Ephemeral" so just fix the step text to match.- Both
ecs-to-container-apps.mdandcloud-run-to-container-apps.mdmap source log-writer roles (roles/logging.logWriter/CloudWatch Logs) toMonitoring Metrics Publisher. That role is for publishing metrics, not logs. Container Apps auto-collects stdout/stderr via Log Analytics - no specific RBAC role is needed for application logging. cloud-run-to-container-apps.mdis at 2,080 tokens (80 over the 2,000 limit). Trimming the duplicate ACR import section (already incode-migration.md) would bring it under.
Process: @simonjj's comment notes PRs #1534/#1567 are preferred by the ACA team for migration content. Worth clarifying whether this PR is complementary (mapping tables + assessment templates) or competing before investing in the fixes above.
|
This PR has been automatically closed because it has unresolved review comments and no new commits in the last 28 days. If you would still like to merge these changes, please:
Thank you for your contribution! |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Reopened and pushed 69c5593 addressing all outstanding review comments on this PR. Every unresolved thread has been resolved. Validators run locally: frontmatter and references pass, targeted skill tests pass, and the changed files are within token budget (the repo-wide |
d81d0b4 to
69c5593
Compare
jongio
left a comment
There was a problem hiding this comment.
Remaining question: @simonjj noted PRs #1534 and #1567 provide full end-to-end Container Apps migration playbooks from the ACA team. This PR adds mapping tables and assessment templates. Are these complementary, or does one supersede the other? Merging both without coordination could create conflicting guidance for the same migration scenarios.
All technical issues from my previous review (storage mapping, RBAC role corrections, SKILL.md scenario references, token budget) are addressed in the latest commit.
# Conflicts: # plugin/skills/azure-cloud-migrate/SKILL.md # tests/azure-cloud-migrate/__snapshots__/triggers.test.ts.snap Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jongio
left a comment
There was a problem hiding this comment.
Two routing-ambiguity issues in the scenario table that will confuse the LLM when picking which reference file to load. See inline comments.
| | AWS Elastic Beanstalk | Azure App Service | [beanstalk-to-app-service.md](references/services/app-service/beanstalk-to-app-service.md) | | ||
| | Heroku | Azure App Service | [heroku-to-app-service.md](references/services/app-service/heroku-to-app-service.md) | | ||
| | Google App Engine | Azure App Service | [app-engine-to-app-service.md](references/services/app-service/app-engine-to-app-service.md) | | ||
| | AWS ECS/Fargate | Azure Container Apps | [ecs-to-container-apps.md](references/services/container-apps/ecs-to-container-apps.md) | |
There was a problem hiding this comment.
This row overlaps with the existing AWS Fargate (ECS) row on line 32. When a user says "migrate my Fargate service," both rows match, pointing to different files (ecs-to-container-apps.md vs fargate-to-container-apps.md with its companion assessment/deployment guides).
Consider either:
- Consolidating into one row that links to
ecs-to-container-apps.mdas the primary reference (since it covers both ECS and Fargate), and removing or demoting the old Fargate-specific row to a sub-link. - Adding a disambiguation note so the LLM knows
ecs-to-container-apps.mdis the comprehensive guide whilefargate-to-container-apps.mdis Fargate-only.
| | AWS Fargate (ECS) | Azure Container Apps | [fargate-to-container-apps.md](references/services/container-apps/fargate-to-container-apps.md) ([assessment](references/services/container-apps/fargate-assessment-guide.md), [deployment](references/services/container-apps/fargate-deployment-guide.md)) | | ||
| | Kubernetes (GKE/EKS/Self-hosted) | Azure Container Apps | [k8s-to-container-apps.md](references/services/container-apps/k8s-to-container-apps.md) | | ||
| | GCP Cloud Run | Azure Container Apps | [cloudrun-to-container-apps.md](references/services/container-apps/cloudrun-to-container-apps.md) | | ||
| | GCP Cloud Run | Azure Container Apps | [cloud-run-to-container-apps.md](references/services/container-apps/cloud-run-to-container-apps.md) and [cloudrun-to-container-apps.md](references/services/container-apps/cloudrun-to-container-apps.md) | |
There was a problem hiding this comment.
Listing two files with and in a single table cell doesn't give the LLM a clear signal about which to load. It'll likely try to load both, which is redundant if the new cloud-run-to-container-apps.md supersedes the old cloudrun-to-container-apps.md.
If the new file is the comprehensive replacement, point this row to it alone. The existing cloudrun-to-container-apps.md (plus its companion cloudrun-assessment-guide.md and cloudrun-deployment-guide.md) can be referenced as supplementary material or deprecated.
|
Closing this PR. Since it was authored, the Container Apps team landed comprehensive migration guides on
Our |
Closes #1617 | Parent: #1608 |⚠️ Depends on #1633 (Gap-8) for SKILL.md trigger changes
5 migration reference files for Container Apps. Adds ECS/Fargate→Container Apps and Cloud Run→Container Apps guides with service mapping tables, assessment templates, and code migration guidance.