2013-03-06 43 views
1

好吧,繼承人的協議。 我使用彈性豆莖並有兩種環境。每個人都有自己的名字和網址,可以說env-one = foo.elasticbeanstalk.com和env-two = bar.elasticbeanstalk.com。Elastic Beanstalk的自動切換推送環境

然後我們有生產域:example.com。

example.com有一個CNAME指向foo.elasticbeanstalk.com

默認推動環境ENV兩。

我推到默認環境,並檢查一切工作正常,就像一個正常的開發環境。當每個人都很開心時,我會切換這些網址,這樣開發環境就會轉變爲生產環境,反之亦然。

所以,現在,ENV個= foo.elasticbeanstalk.com和env-一個= bar.elasticbeanstalk.com

的問題是,默認的推動環境依然ENV個,但是現在已經變成了生產環境。所以下一次我需要推送到dev,我必須定義我想推到env-one。

git aws.push --environment env-one 

所以,我正在尋找的是一種不必定義我想要推送到什麼環境的方法。

在此先感謝您的答案。我希望有這樣的解決方案。

回答

1

的一點想法:

1)這是一個有點你問的範圍之外(我不是一個AWS專家),但由於DNS propigation延遲,如果這是一個公共網站,DNS切換可能給你一個碰撞窗口。

2)你可以定義第二個DNS別名「dev.elasticbeanstalk.com」,並同時交換它,然後總是推送到那個。

3)如果你只是從一個本地回購推動,你可以做一些「git remote set-url」魔術來切換網址,這樣你就可以推向正確的網址。但是,這似乎對我來說可能是錯誤的。

如果我打算留在DNS中,我會使用選項#,然後建立一個監視系統,如果「dev」會觸發。和「example.com」指向相同的A記錄。

1

當你創建一個混帳回購協議與this instruction在AWS EB部署(我選擇了PHP的一個,其他語言的工作流程是一樣的),然後運行EB初始化命令時,它會創建一個包含說明對環境的特殊.elasticbeanstalk文件夾。

當您運行eb start命令時,使用該描述創建環境。

每當您撥打git aws.push命令 - 生成新的遠程git URL。它取決於應用程序名稱,環境名稱,提交ID,本地時間和AWS憑證。只有生成的URL用於git aws.push命令 - 忽略git存儲庫遠程URL。由於URL取決於當前時間,因此它總是不同的。

部署在默認情況下另一個環境中你可以改變EnvironmentName選項.elasticbeanstalk \ CONFIG文件(如果你的環境是在相同的應用,並有類似的設置)。

如果你的環境是在另一個應用程序或一個設置是不同的,我認爲你應該刪除.elasticbeanstalk文件夾並運行基於您現有的環境參數EB初始化命令再次傳遞答案。之後,您可以通過eb init命令(因爲環境已經存在),只需要繼續git aws.push

相關問題