我的基本問題:如何將我的魔豆彈性期間設置的環境變量將生效部署流程?環境變量部署
我不是在談論部署在部署後,這將是我的應用程序可以訪問期間設置環境變量,我想設置環境變量,將修改彈性青苗的構建腳本的特定行爲。
要清楚 - 我一般認爲這是一個壞主意,但所以我要把這一點作爲一個實驗可能是在這種情況下確定。這裏有一些關於爲什麼我正在研究這個問題的背景,以及爲什麼我認爲它可能是正確的:
我正在將服務器從美國的AWS轉移到中國的AWS,並且發現部署了服務器在50%〜100%的時間內失敗,這取決於當天。這是發展過程中的一大痛苦,但我主要關心我將如何在生產中完成這項工作。
這是一臺運行Python 2.7的亞馬遜Linux服務器,並且日誌表明這些故障主要是讀取超時錯誤,有幾次連接重置被同層次拋出,全部由pip安裝生成,同時嘗試從pypi下載軟件包。爲了驗證這一點,我已經對我的實例進行了手動安裝一些軟件包,並在小樣本大小看到類似的失敗率。請注意,在嘗試訪問中國GFW另一端的內容時,這種情況非常普遍。
所以,我寫了一個腳本,PIP下載 S上的包我的本地機器,然後AWS同步他們s到位於同一區域作爲我的服務器的S3桶。這將消除在部署時跨越GFW的需要。我原來的計劃是在S3中添加一個.ebextension到pip緩存,但是(除非我遺漏了某些東西),這有點令人驚訝地看起來並不直截了當。
所以,作爲B計劃,我重定向到包上的實例的本地目錄。這是行之有效的,但我不能得到pip安裝拉本地目錄的軟件包,而不是從pypi下載軟件包。
繼PIP文檔,我預計PIP_FIND_LINKS環境變量指向我的包目錄將具有畫中畫「自然地」從我的目錄拉包,而不是的PyPI。這會使這個變更對EB構建腳本透明,爲什麼我認爲這可能是一個合理的解決方案。
到目前爲止我曾嘗試:
1)命令其中出口PIP_FIND_LINKS = /路徑/到/包,沒有運氣。我認爲這是由於部署步驟從不同的會話中調用,所以然後我嘗試:
2)命令其中(除了前面的出口)追加出口PIP_FIND_LINKS = /路徑/要/包到〜。/ profile,試圖讓這適用於任何新的會話。
我試圖通過發行兩ec2_user和根,既不工作的命令。
與此同時,我希望有一些對EB,pip等細微差別更有經驗的人可能能夠提供一些指導。
哪個pypi庫是問題的根源?有時我的requirements.txt包含一個不在pypi上但通過setup()從repo安裝的庫。這在部署中觸發了失敗。我的解決方案是修復需求並使用docker環境,以便更好地控制部署腳本。 –
失敗的庫因運行而異,有時也沒有失敗。這看起來似乎與隨機連接阻塞相關,在穿越GFW時這是相當常見的,爲什麼我想在本地存儲我的依賴關係。我也應該提到,這個需求文件的超集在中國以外的地方使用了一年多沒有問題。 – gary