Amazon Codedeploy + Elastic Load Balancer - Windows 支持

Posted

技术标签:

【中文标题】Amazon Codedeploy + Elastic Load Balancer - Windows 支持【英文标题】:Amazon Codedeploy + Elastic Load Balancer - Windows support 【发布时间】:2016-02-05 22:48:27 【问题描述】:

在通过 CodeDeploy 部署时,是否有任何 bat 脚本(适用于 Windows Server)来处理 Elastic Load Balancer?我只找到了适用于 linux 的脚本:

https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb

不幸的是,他们甚至没有在文档中提到 Windows Server 支持:

http://docs.aws.amazon.com/codedeploy/latest/userguide/elastic-load-balancing-integ.html

【问题讨论】:

当然我可以使用 Cygwin 来运行这些脚本,但这似乎是一种顽皮的解决方法...... 我实际上正在开发一个端口。只是想知道为什么你认为 Cygin 会“淘气”? 最后,我得到了它与 Cygwin 的合作。但是,我也提交了一个问题寻求亚马逊支持——让我们看看他们的反应是什么。 Cygwin 的解决方案似乎不适合我,因为我正在尝试做的是相当简单、流行的案例并且需要额外的软件是荒谬的。从 git 部署 Microsoft Azure 要容易得多。 【参考方案1】:

亚马逊的官方回答链接到这个话题,他们说“有人”正在使用 Cygwin,我也应该尝试一下......

不幸的是,没有其他可能,我已经安装了 Cygwin 并在 appspec.yml 中输入:

version: 0.0
os: windows
files:
  - source: \xxx\
    destination: C:\xxx\
hooks:
  ApplicationStop:
    - location: \deregister_from_elb.bat
      timeout: 900

<next steps here>

  ApplicationStart:
    - location: \register_with_elb.bat
      timeout: 900

deregister_from_elb.bat文件中,我用Cygwin运行.sh文件,如下:

@echo off

SET mypath=%~dp0
SET mypath=%mypath:~3%

C:\cygwin64\bin\bash.exe -l -c "'/cygdrive/c/%mypath%deregister_from_elb.sh'"

您可以想象 register_with_elb.bat 的样子。

此解决方案现已在生产中运行,大约 6 个月没有出现任何重大问题。

【讨论】:

以上是关于Amazon Codedeploy + Elastic Load Balancer - Windows 支持的主要内容,如果未能解决你的问题,请参考以下文章

CodeDeploy 的 IAM 问题

CodeDeploy 未部署到新的自动缩放实例

如何设置AWS CodeDeploy和EC2 CodeDeploy安全环境

AWS:帮助在 Codepipeline 中设置 CodeDeploy

CodeDeploy 失败“停止:找不到命令”

Codedeploy 无法在新扩展的 VM 上运行