Configuration 在何处放置仅在启动时运行一次的Elastic Beanstalk配置命令?

Configuration 在何处放置仅在启动时运行一次的Elastic Beanstalk配置命令?,configuration,amazon-web-services,provisioning,amazon-elastic-beanstalk,Configuration,Amazon Web Services,Provisioning,Amazon Elastic Beanstalk,我知道我可以使用commands数组将命令放入.ebextensions/*.config中的源代码中。但是,这些都会在每次部署时执行。如果我只想在启动新实例时执行一次配置命令,该怎么办?可以使用test:修饰符有条件地运行命令。指定要执行的测试。如果测试返回0,则运行命令,否则不运行 如果配置文件中的最后一个命令接触到一个文件,并且上面您只想运行一次的命令检查该文件是否存在,那么这些命令将只在第一次运行 commands: 01-do-always: command: run_my

我知道我可以使用
commands
数组将命令放入.ebextensions/*.config中的源代码中。但是,这些都会在每次部署时执行。如果我只想在启动新实例时执行一次配置命令,该怎么办?

可以使用
test:
修饰符有条件地运行命令。指定要执行的测试。如果测试返回0,则运行命令,否则不运行

如果配置文件中的最后一个命令接触到一个文件,并且上面您只想运行一次的命令检查该文件是否存在,那么这些命令将只在第一次运行

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: test ! -f .semaphore
  99-signal-startup-complete:
    command: touch .semaphore
在Windows上是这样的

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: if exists c:\\path\\to\\semaphore.txt (exit 0) else (exit 1)
  99-signal-startup-complete:
    command: date > c:\\path\\to\\semaphore.txt

在Windows上,这应该可以工作:

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: cmd /c "if exist c:\\semaphore.txt (exit 1) else (exit 0)"
  99-signal-startup-complete:
    command: echo %date% %time% > c:\\semaphore.txt

请注意,我必须更改Jim Flanagan答案中的
test
命令。

除了在windows服务器上,您将如何执行相同的操作?语法有什么不同?谢谢。用一个Windows示例更新了这篇文章。所以我想这适用于
命令
部分,而对于
容器_命令
您可以使用
仅引线
选项?还是我误解了这个问题?@djvg
leader only
只对目标组中的一个实例执行命令。这里的问题是关于在每个实例上执行一个命令,但只执行一次。
.semaphore
对我来说不起作用,我认为当前直接执行的是临时部署目录,它在每次部署时都会被擦除。它使用不同的目录,我决定使用
/var/elasticbeanstalk/…