AWS Auto Scaling创建的新EC2实例未部署已有IIS应用怎么办?
解决AWS Auto Scaling扩容EC2实例未自带IIS部署应用的方法
方案1:基于现有实例制作自定义AMI(最推荐)
该方案能1:1复刻现有实例的所有环境配置,操作最简单,适配绝大多数场景:
- 登录已完成IIS应用部署的源EC2实例,执行
iisreset /stop停止IIS服务,避免镜像制作过程中出现文件读写异常 - 进入AWS EC2控制台,选中该源实例,依次选择操作 > 映像和模板 > 创建映像
- 按页面提示填写映像名称、描述信息,勾选「创建映像后重启实例」选项,等待镜像制作完成
- 打开对应Auto Scaling组的配置页面,更新关联的启动模板/启动配置,将默认AMI替换为刚制作完成的自定义AMI
- 配置完成后,所有Auto Scaling扩容生成的新实例会直接继承源实例的IIS配置、已部署应用、系统环境,无需额外操作
方案2:通过启动模板User Data实现启动时自动部署
适合应用迭代频繁,不想频繁更新AMI的场景:
- 提前将所有IIS应用的部署包、IIS站点配置备份文件上传到S3存储桶,给EC2实例关联的IAM角色添加S3存储桶的读取权限
- 编辑Auto Scaling组关联的启动模板,在高级详细信息 > 用户数据栏填入PowerShell初始化脚本,参考结构如下:
<powershell> # 安装IIS及所需依赖组件 Install-WindowsFeature Web-Server, Web-Asp-Net45, Web-Mgmt-Console -IncludeManagementTools # 从S3拉取部署资源 Read-S3Object -BucketName 你的S3存储桶名称 -KeyPrefix 部署资源存储路径 -Folder C:\deploy_temp # 解压应用包到IIS站点目录 Expand-Archive -Path C:\deploy_temp\your_app.zip -DestinationPath C:\inetpub\wwwroot\your_site_path -Force # 导入IIS站点配置 Import-IISConfig -Path C:\deploy_temp\iis_config_backup.xml # 重启IIS服务生效配置 iisreset /start </powershell>
- 保存启动模板修改后,新扩容的实例会在首次启动时自动执行上述脚本完成应用部署。注意该场景需要将Auto Scaling组的健康检查宽限期调整到5分钟以上,避免实例未完成初始化就被标记为不健康下线。
方案3:结合配置管理工具实现统一部署
适合应用更新频率极高,需要统一管控多实例部署配置的场景:
- 给EC2实例关联的IAM角色添加对应配置管理服务的访问权限,可选择AWS Systems Manager、Ansible等工具
- 在启动模板的User Data中添加配置管理客户端的注册、拉取任务逻辑,实例启动后会自动从配置管理服务拉取最新的部署脚本、应用包,完成IIS应用的安装配置
- 该方案无需每次更新应用都重新制作AMI,适配快速迭代的业务场景
验证建议
完成配置更新后,先手动启动1台使用新配置的实例,确认IIS应用部署正常后再将配置更新到Auto Scaling组,避免批量扩容出现故障。
内容的提问来源于stack exchange,提问作者Vishwash Roy
相关产品推荐
相关产品推荐

