0

每次部署新修订版时,是否可以让 CodeDeploy 自动启动一个新实例“就像上一个实例一样”?

谢谢你。

4

3 回答 3

1

我想你会想要使用 Cloudformation 来启动实例,并让它使用 Codedeploy 拉取最新的更新。

我认为您不能反过来使用它,即让 CodeDeploy 调用 Cloudformation。

http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-use-cloud-formation-template.html

于 2016-01-12T20:52:32.187 回答
0

CodeDeploy 目前不进行实例管理,因此理想情况下您必须通过其他 AWS 服务来管理您的实例。

在您的情况下,看起来您想为每个新部署启动新实例,我认为您可以使用 CloudFormation 创建一个工作流,启动一个新实例并为其部署新修订。或者,您可以使用 AWS lambda 创建一个自动创建实例并从 S3 部署的工作流。这是一篇关于如何设置从 S3 自动部署的博客文章。

于 2016-01-12T21:47:45.577 回答
0

是的,您可以让 CodeDeploy 在部署生命周期中创建一个新实例,或者在部署期间使用生命周期事件挂钩创建您需要的任何任务,通过 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可以被编码来启动一个实例。

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

于 2016-01-13T15:46:50.937 回答