首页 > 解决方案 > 具有 ASG 和 ELB (bitbucket) 的 AWS CD/CI 管道

问题描述

我必须首先说我对 AWS 比较陌生,但发现它非常有用。让我描述一下我的场景......

我目前拥有的

我的问题

当 ASG 决定使用我的启动模板和 AMI 扩展新的 EC2 实例时,它将使用 AMI 中的应用程序代码。但是,如果我在某个时候部署到 master,我的 AMI 将不会更新,但 ASG 中的实例会更新。确保 ASG 生成的新实例运行最新代码版本(主)的最佳方法是什么?

我最初的想法

我正在考虑在启动配置中包含一个 bash 脚本,该脚本将从 Bitbucket 中提取最新代码并运行任何以下步骤以使我的应用程序运行(例如“npm install”、“npm run start”等)。我确信有人有更优雅的解决方案,我很想听听一些建议。

标签: node.jsamazon-web-servicesdevopsbitbucket-pipelinesaws-code-deploy

解决方案


对于任何来这里的人,我确实解决了我的问题。一开始我是对的。一旦实例启动并运行,启动模板中的“用户数据”字段是引导我的应用程序的好地方。它基本上从远程仓库克隆,然后执行任何必要的步骤来启动应用程序。

例如,在 EC2 的启动配置中

#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start

此外,如果您运行的是经典负载均衡器,当您的 ASG 扩展 EC2 实例时,CodeDeploy 将尝试根据您在 S3 中的最新代码存储库启动部署。所以上述解决方案将是多余的。


推荐阅读