我可以在ebextensions中包含一个脚本而不必构建一个脚本吗?

时间:2016-12-16 21:08:06

标签: windows powershell amazon-web-services amazon-ec2 elastic-beanstalk

我见过这样的例子,用于通过ebextensions config创建和运行脚本:

files:
  "C:\\scripts\\whoami.ps1":
    content: |
      date       | out-file -append c:\scripts\whoami.log
      whoami     | out-file -append c:\scripts\whoami.log
      hostname   | out-file -append c:\scripts\whoami.log
      get-module | out-file -append c:\scripts\whoami.log

commands:
  whoami:
    command: powershell.exe -ExecutionPolicy Bypass -Command "C:\\scripts\\whoami.ps1"
    ignoreErrors: false
    waitAfterCompletion: 5

没关系,但是我可以在ebextensions中包含一个脚本并引用它而不必在配置中定义其内容吗?

例如我会

myapp
--.ebextensions
----myconfig.config
----myscript.ps1

然后“myconfig.config”会在某处复制“myscript.ps1”并运行它。

我该怎么做?

编辑: 所以我把这个命令放在一个配置中,看看当前的路径是什么:

commands:
  whereami:
    command: dir > c:\whereami.log
    ignoreErrors: false
    waitAfterCompletion: 5

它的c:\windows\system32有意义,因为它在SYSTEM的上下文中运行。

我可以使用指向我上传的beanstalk项目中的脚本的自引用方法/关键字吗?

2 个答案:

答案 0 :(得分:1)

对我有用的选项(感谢littleforest)。

在Web部署包中创建一个文件夹结构,并使用 container_commands 引用它:

package/myfolder/myscript.ps1

container_commands:
  relativeprogrampath:
    command: "myfolder/myscript.ps1"

在父文件夹中创建它并引用它:

示例文件夹结构:

parentfolder/myfolder/myscript.ps1
parentfolder/package/<the web deployment package>

container_commands:
  relativeprogrampath:
    command: "..\myscript.ps1"

答案 1 :(得分:1)

如果将myscript.ps1文件放在配置文件旁边的.ebextensions文件夹中,则可以从这样的容器命令中运行它:

container_commands:
  00-myscript:
    command: powershell.exe -ExecutionPolicy Bypass -Command ".\\.ebextensions\\myscript.ps1"
    waitAfterCompletion: 0