gpt4 book ai didi

windows - Windows 上的 Beanstalk : How do I prevent commands running on re-deployment?

转载 作者:可可西里 更新时间:2023-11-01 13:08:39 24 4
gpt4 key购买 nike

我正在尝试利用 AWS Elastic Beanstalk 的功能来自定义它创建的 EC2 实例。这需要创建一个 .config file in the .ebextensions directory .

您可以指定在将应用程序部署到实例时应执行的命令数量。我用它来安装一些 msi 文件,并配置 EC2 为实例分配一个唯一的名称。然后需要重新启动。

我的问题是我只希望在首次部署实例时运行这些命令。当我将仅代码更改部署到现有实例时,不应运行它们。

我试过使用“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 的系统上,有 touchtest 命令(在 this answer 中提到,询问 Unix 系统的等效问题)。在这种情况下,Windows 中的等效项是什么?

最佳答案

我认为问题在于您在写入初始化文件之前重新启动了机器。您应该能够使用首先写入信号量的 bat 文件,然后重新启动实例,并在信号量存在时运行该 .bat 文件。

您可以使用 files:source: 指令下载 .bat 文件,也可以使用 files:content: 指令将其组合到 .config 中。

否则,您的 test: 行看起来不错(我在本地测试了它们,没有重新启动)。

关于windows - Windows 上的 Beanstalk : How do I prevent commands running on re-deployment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com