6

我有一個elasticbeanstalk環境,需要在部署應用程序之前運行powershell腳本並重新啓動。根據說明文件,按照說明文件提供支持AWS Elasticbeanstalk ebextensions服務器重啓錯誤「在構建過程中發生錯誤:[Errno 4]中斷函數調用」

如果系統在命令完成後需要重新啓動,系統將在指定的秒數後重新啓動。如果系統因命令而重啓,則Elastic Beanstalk將恢復到配置文件中的命令之後的位置。默認值是60秒。您也可以永久指定,但系統必須重新啓動才能運行其他命令。

然而,當我添加一個reboot命令到ebextensions config文件我從elasticbeanstalk以下異常

Error occurred during build: [Errno 4] Interrupted function call 

服務器上的日誌已重新啓動後顯示該命令被執行,所以我假定錯誤是由應用程序部署階段的重新啓動造成的。

如果我刪除重新啓動命令,部署,等待它準備好,然後手動觸發重新啓動它工作正常。但這顯然是不可接受的。

我已經研究過部署鉤子文件系統的方法,但這也不起作用,並且似乎聽起來像它應該支持這種開箱即用的需求。

有沒有人有任何想法?

回答

5

我們遇到了同樣的問題。我們需要禁用SSL和TLS < 1.2,這需要註冊表更改和重新啓動。我們的解決方法是在container_commands部分重新啓動,並等待一段時間。這似乎是正確重新啓動,然後在部署中觸發成功。 但是,它從未實際執行重新啓動後的任何步驟,其中包括從暫存位置到實際最終文件目標(最有可能是inetpub/wwwroot)的代碼的內置部署。爲了解決這個問題,在重新啓動之前先執行一個步驟,將文件從本地臨時目錄複製到Web根目錄。

+0

感謝您的答案,生病嘗試一下。一個問題,從文件的我認爲指定永遠需要手動重啓?從文檔 - 「如果系統在命令完成後需要重新啓動,系統將在指定的秒數後重新啓動」,然後「您也可以永久指定,但系統必須重新啓動,然後才能運行其他命令。」 –

+0

是的,它絕對是這樣說的,但最好我可以告訴它,實際上並不適用於具體告訴系統通過命令重新啓動。如果你通過MSI安裝了一個軟件包或者其他軟件需要重新啓動系統,我認爲這與更多的相關。通過PowerShell調用Restart-Computer肯定會立即重啓。我還發現,如果您調用Restart-Computer或其他方法強制重新啓動,並且您的waitAfterCompletion時間不夠,無法完全重新啓動,則部署將會失敗。 – jstill

相關問題