我有一个elasticbeanstalk环境需要运行PowerShell脚本并在部署应用程序之前重新启动。根据文档,这是根据文档
支持的如果系统在命令完成后需要重新启动,则系统会在指定的秒数过后重新启动。如果系统由于命令而重新启动,则Elastic Beanstalk将恢复到配置文件中的命令之后的点。默认值为60秒。您也可以永久指定,但系统必须重新启动才能运行另一个命令。
但是,当我向ebextensions .config文件添加reboot命令时,我从elasticbeanstalk获得以下异常
Error occurred during build: [Errno 4] Interrupted function call
重新启动后服务器上的日志显示该命令已执行,因此我认为错误是由应用程序部署阶段重新启动引起的。
如果我删除restart命令,部署,等待它准备就绪,然后手动触发重启,它工作正常。但这显然是不可接受的。
我已经研究了部署挂钩文件系统的方法,但这也没有用,并且看起来很有用,因为它听起来应该支持开箱即用的这个要求。
有人有什么想法吗?
答案 0 :(得分:5)
我们遇到了同样的问题。我们需要禁用SSL和TLS< 1.2,这需要注册表更改和重新启动。我们的解决方法是在container_commands部分重新启动,等待一段时间。这似乎正确地重新启动,然后在部署中触发成功。 然而,它实际上从未执行重启后的任何步骤,其中包括从分段位置到实际最终文件目标的代码的内置部署(最有可能是inetpub / wwwroot)。要解决此问题,请在重新引导之前执行一步,将文件从本地临时目录复制到Web根目录。
答案 1 :(得分:0)
我们还需要设置注册表值并重新启动。我们的解决方案是将脚本放入命令部分,并将waitAfterCompletion设置为foreve。在我们的powershell脚本中有一台重启计算机--Force导致重启。
disable_secure_time_seeding:
command: powershell.exe -ExecutionPolicy Bypass -File "C:\\scripts\\DisableSecureTimeSeeding.ps1" #This will cause a reboot
waitAfterCompletion: forever