自动切换Elastic Beanstalk的推送环境

时间:2013-03-06 16:16:09

标签: git amazon-web-services push elastic-beanstalk

好的,继续这笔交易。 我使用弹性beanstalk并有两个环境。每个人都有自己的名字和网址,让我们说env-one = foo.elasticbeanstalk.com和env-two = bar.elasticbeanstalk.com。

然后我们有了生产域:example.com。

example.com的cname指向foo.elasticbeanstalk.com

默认推送环境为env-two。

我推送到默认环境并检查一切正常,就像普通的开发环境一样。当每个人都满意的时候,我会切换网址,以便开发环境变成生产环境,反之亦然。

现在,env-two = foo.elasticbeanstalk.com和env-one = bar.elasticbeanstalk.com

问题是,默认的推送环境仍然是env-two,但现在已经变成了生产环境。所以下次我需要推送到dev时,我必须定义我想推送到env-one。

git aws.push --environment env-one

所以,我正在寻找的是一种不必定义我想推送的环境的方法。

提前感谢您的回答。我希望有一个解决方案。

2 个答案:

答案 0 :(得分:1)

一些想法:

1)这有点超出您所要求的范围(我不是AWS专家),但如果这是一个公共站点,如果DNS建议延迟,则DNS切换可能会给您留下一个冲突窗口。

2)您可以定义第二个DNS别名“dev.elasticbeanstalk.com”并同时交换它,然后始终推送到那个。

3)如果你只是从一个本地仓库推出,你可以做一些“git remote set-url”魔术来切换URL,这样你就可以推向正确的。但是,这似乎很容易让我感到错误。

如果我要继续使用DNS,我会使用选项#然后设置一个监控系统,如果“dev”将触发该系统。并且“example.com”指向相同的A记录。

答案 1 :(得分:1)

当您使用this instruction创建要在AWS EB上部署的git仓库时(我选择了PHP,其他语言的工作流程是相同的)并运行 eb init 命令,它会创建特殊的 .elasticbeanstalk 包含环境描述的文件夹。

运行 eb start 命令时,将使用该说明创建环境。

每次调用 git aws.push 命令时,都会生成新的远程git URL。它取决于应用程序名称,环境名称,提交ID,本地时间和AWS凭据。仅在 git aws.push 命令中使用该生成的URL - git repository远程URL被忽略。由于URL取决于当前时间,因此总是不同。

默认情况下,要在其他环境中部署,您只需更改 .elasticbeanstalk \ config 文件中的 EnvironmentName 选项(如果您的环境位于同一应用程序中且具有类似设置)

如果你的环境在另一个应用程序中或者一个设置不同,我认为你应该删除 .elasticbeanstalk 文件夹并再次运行 eb init 命令,根据你已经存在的情况传递答案环境参数。之后,您可以传递 eb init 命令(因为环境已经存在),然后继续使用 git aws.push