是否可以让CodeDeploy自动启动一个新实例"就像最后一个"每次我部署一个新版本?
谢谢。
答案 0 :(得分:1)
我认为您希望使用Cloudformation来启动实例,并使用Codedeploy获取最新更新。
我不认为你可以反过来使用它,即让CodeDeploy调用Cloudformation。
http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-use-cloud-formation-template.html
答案 1 :(得分:0)
CodeDeploy目前不进行实例管理,因此理想情况下您必须通过其他AWS服务管理您的实例。
在您的情况下,看起来您想为每个新部署启动新实例,我认为您可以使用CloudFormation创建一个工作流,该工作流可以旋转新实例并为其部署新版本。或者,您可以使用AWS lambda创建一个自动创建实例并从S3部署的工作流。以下是关于如何设置从S3自动部署的blog post。
答案 2 :(得分:0)
是的,您可以让CodeDeploy在部署生命周期期间创建新实例,或者在部署期间使用lifecycle event hooks通过AppSpec文件创建任何任务。
例如,在ValidateService
事件期间,您可以调用AWS CLI来运行start-instance命令来启动新实例。
以下是AppSpec文件的示例:
os: linux
files:
- source: Config/config.txt
destination: webapps/Config
- source: source
destination: /webapps/myApp
hooks:
BeforeInstall:
- location: Scripts/UnzipResourceBundle.sh
- location: Scripts/UnzipDataBundle.sh
AfterInstall:
- location: Scripts/RunResourceTests.sh
timeout: 180
ApplicationStart:
- location: Scripts/RunFunctionalTests.sh
timeout: 3600
ValidateService:
- location: Scripts/StartInsance.sh
timeout: 3600
runas: codedeployuser
此处ValidateService
事件调用Scripts/StartInsance.sh
,可以对其进行编码以启动实例。
您可能需要提供一些逻辑来阻止多个实例的部署启动多个实例。