带有ASG和ELB的AWS CD / CI管道(位桶)

时间:2020-09-24 09:06:33

标签: node.js amazon-web-services devops bitbucket-pipelines aws-code-deploy

首先,我必须说我对AWS相对陌生,但是发现它非常有用。让我描述一下我的情况...

我目前有什么

  • 自动缩放组(ASG)
  • 弹性负载平衡器(ELB)
  • 使用CodeDeploy和Bitbucket的CD / CI管道
  • 在EC2实例上提供自定义API的Node / Express应用
  • VPC和子网运行正常
  • 带有我的应用程序代码的AMI

我的问题

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

我的初步想法

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

1 个答案:

答案 0 :(得分:0)

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

例如,在EC2的启动配置中

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

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