有没有办法让CodeDeploy始终设置一个新实例?

时间:2016-01-12 20:25:46

标签: amazon-web-services aws-code-deploy

是否可以让CodeDeploy自动启动一个新实例"就像最后一个"每次我部署一个新版本?

谢谢。

3 个答案:

答案 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,可以对其进行编码以启动实例。

您可能需要提供一些逻辑来阻止多个实例的部署启动多个实例。