AWS App2Container

分析本地 Java/.NET 应用程序,自动生成容器镜像及 ECS/EKS 部署工件的命令行工具

概述

AWS App2Container (A2C) 是一款命令行工具,可分析在本地或 EC2 上运行的 Java 和 .NET 应用程序,自动完成 Docker 容器镜像生成、ECS 任务定义或 EKS 清单创建,以及 CI/CD 流水线构建。它能自动检测应用程序的依赖关系、网络连接和文件系统使用情况,以最少的手动操作完成容器化。

应用程序分析与容器化流程

App2Container 的工作流程由 inventory (发现)、analyze (分析)、containerize (容器化)、generate (生成部署工件) 四个步骤组成。inventory 命令自动发现服务器上运行的 Java (Tomcat、JBoss、Spring Boot) 和 .NET (IIS) 应用程序并显示列表。analyze 命令详细分析所选应用程序的依赖关系 (库、配置文件、环境变量、网络端口),并以 JSON 报告形式输出容器化所需的信息。containerize 命令根据分析结果自动生成 Dockerfile 并构建 Docker 镜像。生成的 Dockerfile 采用符合最佳实践的多阶段构建配置,生成不包含多余文件的最小化镜像。

ECS/EKS 部署工件的自动生成

generate 命令自动生成将容器化应用程序部署到 ECSEKS 所需的全部工件。面向 ECS 时,会生成任务定义、服务定义、ALB 配置、安全组和 CloudFormation 模板。面向 EKS 时,会生成 Deployment、Service、Ingress 的 Kubernetes 清单和 Helm Chart。ECR 仓库的创建和镜像推送也会自动完成。此外,还可以自动构建包含 CodeCommit 仓库、CodeBuild 项目和 CodePipeline 流水线的 CI/CD 环境,容器化后即可立即开始持续交付。所有生成的工件均可自定义,可根据需求调整资源大小、副本数、健康检查设置等。

迁移策略与渐进式重构方法

App2Container 是一款自动化"直接迁移"容器化的工具,但以此为起点逐步推进重构的策略非常有效。第一阶段使用 A2C 将单体应用程序原样容器化,在 ECS/EKS 上运行。此时即可享受容器编排、自动扩展和滚动部署的优势。第二阶段将单体中独立性较高的模块分离为独立的容器服务,推进微服务化。App2Container 分析报告中包含的网络连接信息,是了解模块间依赖关系并确定服务拆分边界的重要输入数据。由于也支持 Windows 容器,因此将 .NET Framework 应用程序作为 Windows 容器迁移到 ECS,未来再逐步移植到 .NET Core 的路线图也是切实可行的。

共有するXB!