我正在尝试利用 AWS Elastic Beanstalk 的工具来自定义它创建的 EC2 实例。这需要在 .ebextensions 目录中创建一个 .config 文件。
您可以指定在将应用程序部署到实例时应执行的一些命令。我使用它来安装一些 msi 文件,并配置 EC2 为实例分配一个唯一名称。这需要重新启动。
我的问题是我只希望在首次部署实例时运行这些命令。当我将仅代码更改部署到现有实例时,它们不应运行。
我试过使用“test”参数,它应该会阻止命令运行。我创建一个文件作为最后一个命令,然后在“test”参数中检查该文件是否存在。但这似乎不起作用。
我的配置文件是这样的:
# File structure documented at http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-windows-ec2.html
files:
"C:\\Users\\Public\\EnableEc2SetComputerName.ps1":
source: "[File Source]"
commands:
init-01-ec2setcomputername-enable:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: powershell.exe -ExecutionPolicy Bypass -File "C:\\Users\\Public\\EnableEc2SetComputerName.ps1"
waitAfterCompletion: 0
init-05-reboot-instance:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: shutdown -r # restart to enable EC2 to set the computer name
waitAfterCompletion: forever
init-06-mark-initialised:
test: cmd /c "if exist C:\\Users\\Public\\initialised (exit 1) else (exit 0)"
command: echo initialised > C:\\Users\\Public\\initialised
waitAfterCompletion: 0
有没有其他方法可以做到这一点?还是我在做一些愚蠢的事情?
在基于 Unix 的系统上,有touch
and命令(在这个答案test
中提到,询问 Unix 系统的等效问题)。在这种情况下,Windows 中的等效项是什么?