Amazon web services 在新添加的实例中部署多个Aws CodeDeploy应用程序

Amazon web services 在新添加的实例中部署多个Aws CodeDeploy应用程序,amazon-web-services,aws-code-deploy,Amazon Web Services,Aws Code Deploy,我认为我在设计aws基础设施时犯了一些错误。 实际上,我有一个自动缩放组和一个ec2实例 在这个实例中,有6个laravel项目与aws CodeDeploy中的6个应用程序关联,因此当我想要更新版本时,我只需使用CodeDeploy进行更新 当自动缩放组将实例添加到组中,所有my codedeploy应用程序都部署到新创建的实例中,并且失败时会出现问题,并显示以下消息: 一个或多个生命周期事件未运行,部署失败。可能的原因包括: (1) 多个部署试图在一个实例上同时运行 所以。。。什么是最好的方

我认为我在设计aws基础设施时犯了一些错误。 实际上,我有一个自动缩放组和一个ec2实例

在这个实例中,有6个laravel项目与aws CodeDeploy中的6个应用程序关联,因此当我想要更新版本时,我只需使用CodeDeploy进行更新

当自动缩放组将实例添加到组中,所有my codedeploy应用程序都部署到新创建的实例中,并且失败时会出现问题,并显示以下消息:

一个或多个生命周期事件未运行,部署失败。可能的原因包括: (1) 多个部署试图在一个实例上同时运行


所以。。。什么是最好的方法让这个工作

AWS建议将单个部署组与ASG关联,并将部署整合到单个部署以实现适当的扩展。每个部署组都将一个生命周期挂钩与ASG关联,ASG将通过该挂钩在扩展事件发生时通知部署组。并行部署(在您的案例6中)将容易出现codedeploy超时(5-60分钟),并且运行在ec2上的codedeploy代理可以一次执行一个命令


如果你的每个应用程序花费的时间更少(好)如果我把所有的应用程序合并成一个,而不是删除所有的单个应用程序钩子,我可以保持每次更新一个应用程序的能力,每次向ASG应用程序添加一个实例时,自动部署自动部署将考虑最后一次成功部署该部署组,如果您单独更新应用程序。如果使用合并的应用程序挂钩,则在扩展时可能会部署旧的应用程序修订版。如果您更喜欢使用单个ASG,请将所有应用程序合并为一个应用程序,并使用挂钩(如AfterInstall/start/stopApplication)控制单个更新。如何做到这一点取决于您的应用程序的性质。哦,我明白了…如果aws能够以某种方式在扩展发生时添加顺序部署,那将是很酷的。在我的情况下,整个部署过程应该最长不少于5分钟。使用多个ASG,您的意思是同时使用多个EC2实例?是的。每个应用程序在不同的ASG上都有一个EC2。嗯,这不是非常便宜,目前我用的是t2.medium实例,因为小的没有足够的网络性能,所以应该继续用那种实例。
 aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name <asg_name> --region <region>
aws autoscaling delete-lifecycle-hook --lifecycle-hook-name <lifecycleName> --auto-scaling-group-name <asg_name> --region <region>