Elastic Beanstalk ebextension配置未在autoscaling组中为新实例运行

时间:2015-03-12 16:20:08

标签: amazon-web-services elastic-beanstalk

希望有一些想法如何解决这个问题!

我有一个在Elastic Beanstalk中运行的.NET Web应用程序,它需要通过ebextensions完成一些事情。它在创建实例后一致地工作,但在实例创建时,似乎存在问题。

在日志文件中,有以下内容:

2015-03-12 15:44:36,901 [INFO] Running config postbuild_0_MyConfig
2015-03-12 15:44:38,309 [ERROR] -----------------------BUILD FAILED!------------------------
2015-03-12 15:44:38,309 [ERROR] Unhandled exception during build: [Error 267] The directory name is invalid
Traceback (most recent call last):
  File "cfn-init", line 123, in <module>
  File "cfnbootstrap\construction.pyc", line 117, in build
  File "cfnbootstrap\construction.pyc", line 502, in build
  File "cfnbootstrap\construction.pyc", line 513, in run_config
  File "cfnbootstrap\construction.pyc", line 125, in run_commands
  File "cfnbootstrap\command_tool.pyc", line 104, in apply
  File "cfnbootstrap\util.pyc", line 468, in call
  File "cfnbootstrap\util.pyc", line 454, in call
  File "subprocess.pyc", line 679, in __init__
  File "subprocess.pyc", line 896, in _execute_child
WindowsError: [Error 267] The directory name is invalid

在失败之后,我将使用AWS控制台中的相同代码版本再次运行部署,我得到:

2015-03-12 16:00:42,526 [INFO] Running config postbuild_0_Umbraco
2015-03-12 16:00:44,558 [INFO] Command 01-changeperm succeeded
2015-03-12 16:00:44,558 [INFO] Waiting 60 seconds for reboot
2015-03-12 16:01:47,322 [INFO] Command 02-createvirtualdirectory succeeded
2015-03-12 16:01:47,338 [INFO] Waiting 60 seconds for reboot

这是预期的。

我认为由于配置文件本身一定会失败,因为个别命令本身的问题会导致不同的错误。

这是我的.config文件,它被部署到.ebextensions文件夹中,以及引用的脚本:

container_commands:
  01-changeperm:
    command: "permissions.bat > ../eblog.log"
    cwd: "C:/inetpub/wwwroot/.ebextensions"
  02-createvirtualdirectory:
    command: "powershell.exe -noprofile -executionpolicy bypass -file ./virtualdir.ps1 > ../vd.log"
    cwd: "C:/inetpub/wwwroot/.ebextensions"

希望有人可以帮助我,因为我不知所措!如果有人想要更多信息,请问!

提前致谢。

1 个答案:

答案 0 :(得分:2)

由于部署了webdeploy软件包的方式,在Windows上执行配置略有不同。

因此,您不能指望磁盘上存在的.ebextensions文件夹(或捆绑包中的任何文件)中的任何文件(这不是实际执行脚本的位置)。

.ebextensions配置中的命令在你的任何位被放置在磁盘上之前执行(甚至是container_commands)。

出于这个原因,您可能需要内联您的bat文件和ps1脚本,或者将它们放在S3中,然后使用file:directives将它们放下。