亚马逊AWS官方博客
从 0 到可开发环境:一键部署 EC2、负载均衡与开发环境
![]() |
引言
对于刚接触 AWS 的开发者或希望快速启动云上项目的用户来说,从创建 VPC、配置子网、安全组,到部署 EC2、配置负载均衡和安装开发环境,整个过程往往需要几个小时,且对 AWS 服务有一定的理解门槛。
在本篇博客中,我将介绍如何通过一个可复用的 AWS CloudFormation 模板,一键部署 HAQM Elastic Compute Cloud (HAQM EC2) 实例、Application Load Balancer(ALB)、Auto Scaling Group(ASG),并自动安装包括Node.js、Python、Docker、MySQL、Redis、Flask 在内的开发环境。该方案面向 Level 100–200 的入门和进阶用户,旨在大幅降低上云部署门槛,将原本数小时的部署压缩至 10 分钟以内。
场景背景
本方案适用于以下典型场景:
- 个人开发者或学生:希望快速搭建云上 Web 应用环境,无需手动配置本地开发环境。
- 企业或创业团队:构建统一的团队开发环境,实现成员之间的代码调试和部署一致性。
- 技术演示或培训平台:为技术讲座、入门培训、Workshop 提供快速部署的示范环境。
- 临时测试环境:进行短期功能验证或 DevOps 测试实验。
很多用户在这些场景中会面临:
- 不熟悉基础设施配置流程(VPC、子网、安全组)
- 不清楚如何配置负载均衡实现高可用访问
- 希望将常见开发环境预装到云端,提高部署效率
- 需要支持中国区网络环境下的软件源设置
为什么使用 ALB 和 ASG?
- Application Load Balancer (ALB) 允许我们将公网请求自动分发给多台 EC2 实例,提高系统的可用性和扩展能力。
- Auto Scaling Group (ASG) 则可根据负载变化动态调整 EC2 实例数量,提升资源利用率并节省成本。
- 两者结合构建出具备 “弹性” 和 “高可用性” 的系统架构,是现代云原生架构的核心要素之一。
解决方案架构概览
该解决方案使用 AWS CDK 编写,并最终导出为 CloudFormation 模板,包含以下资源和配置:
- 一个基础 VPC(包含公共和私有子网,支持 NAT 网关)
- 一组 Auto Scaling Group,部署于私有子网
- 一个公网 Application Load Balancer(ALB),负责请求转发
- 安全组配置实现最小权限访问控制
- EC2 实例通过 UserData 安装开发环境
- EC2 绑定 IAM 角色,具备 Systems Manager(SSM)连接能力
用户可通过传参选择要安装的环境模块,例如 Node.js、Python、Docker、MySQL、Redis、Flask 等。
模板下载链接:点击获取模板,或您可以访问:http://aws-cn-blog.s3.cn-north-1.amazonaws.com.cn/ec2deploy/ec2DeployTemplate.yaml (模版来自 S3 链接)
安全组配置说明
- ALB 安全组:允许来自 0.0.0.0/0 的 HTTP 请求(默认 80 端口)
- ASG 安全组:只允许来自 ALB 安全组的请求,确保仅有 ALB 能访问 EC2,避免暴露到公网
IAM 最小权限配置建议
我们建议您在控制台中手动为用于部署的 IAM 角色分配以下策略:
- HAQMEC2FullAccess
- AutoScalingFullAccess
- ElasticLoadBalancingFullAccess
- AWSCloudFormationFullAccess
- HAQMVPCFullAccess
- HAQMSSMFullAccess(或仅 HAQMSSMManagedInstanceCore + ssm:GetParameter 权限)
但为符合最小权限原则,推荐替换如下策略:
- HAQMEC2FullAccess → HAQMEC2ReadOnlyAccess + 允许 ec2:RunInstances、ec2:Describe* 等所需操作
- HAQMSSMFullAccess → HAQMSSMManagedInstanceCore + 自定义策略授予 ssm:GetParameter
- 移除 IAMFullAccess,避免不必要的敏感权限泄露
这类配置在初期可以保留全权限策略以便调试,部署验证无误后再逐步收紧权限。
实现细节与关键配置
参数化模板设计
为了提升模板复用性,我们将以下内容设为可自定义参数:
- 可用区数量、实例类型
- ASG 最小/最大容量
- ALB 监听端口与健康检查路径
- 安装环境(Node.js、Python、Docker、MySQL、Redis、Nginx、Flask)
EC2 启动脚本(UserData)
EC2 实例启动时,将根据传入参数判断安装哪些环境。以下为示例配置:
中国区用户使用的是 amazon-linux-extras 或稳定 Yum 源,确保可联网安装。
使用步骤
前提条件
- 拥有有效的 AWS 账户
- 在 AWS IAM 控制台创建角色,并授予适当的权限(见上文)
- 可访问 S3 中上传的 CloudFormation 模板
部署流程
- 登录 AWS 控制台,进入Identity and Access Management (IAM),创建角色并授予适当权限
- 进入 CloudFormation 页面
- 选择“使用现有模板”,上传或引用该模板的 S3 地址
- 按需填写参数(可选开发环境、端口等),并添加第一步创建的 IAM 角色
- 等待堆栈创建完成,连接实例查看环境是否成功安装
示例截图:
- IAM 角色创建
![]() |
创建 IAM 角色并选择 CloudFormation
![]() |
添加适当 policy(部署验证无误后再逐步收紧权限)
- CloudFormation 部署
![]() |
可通过 S3 链接或者本地上传
![]() |
参数填写(仅供参考)
![]() |
添加创建的IAM角色
- 资源创建结果
![]() |
下一步可以做什么?
部署完成后,您可以:
- 在 EC2 实例中部署 Web 应用(如 Flask、Node.js Express、PHP 页面等)
- 使用 AWS Systems Manager 直接登录实例,远程调试代码
- 绑定自定义域名,将 ALB 替换为 HTTPS 访问(需配置 ACM)
- 扩展模板:引入 RDS、EFS、CloudWatch 等增强生产能力
例如,若选择安装了 Node.js,您可以上传一个简单的 Express 应用并运行:
即可通过 ALB 域名访问您的应用。
成本优化建议
- 使用免费套餐中的 EC2 实例类型(如 t2.micro)进行测试
- 使用自动伸缩组最小实例数设为 1
- 清理不再使用的资源,避免长期费用
清理资源
若您不再需要部署的资源,可直接在 CloudFormation 控制台中删除堆栈,AWS 将自动清理所有关联资源。
结语
在本文中,我分享了一个用于快速部署 EC2 + ALB + Auto Scaling Group 的 CloudFormation 模板,并支持安装常用开发环境。
该方案适合初学者、教育环境、Demo 快速演示场景,也可以作为企业自建平台的通用模板起点。
您可以扩展此模板,集成数据库、EFS 文件系统、HTTPS(配置 ACM 证书)等更多组件,打造更完整的开发或生产环境。
如果您对这个项目感兴趣,欢迎联系讨论,也欢迎参考官方文档进一步探索:
联系方式:
![]() |
官方文档: