I know I can put commands in my source code in .ebextensions/*.config using the commands
array. These are executed on every deploy however. What about if I want to execute a configuration command only once when spinning up a new instance?
Saved configurations are stored in the Elastic Beanstalk S3 bucket in a folder named after your application. For example, configurations for an application named my-app in the us-west-2 region for account number 123456789012 can be found at s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app .
Instance type, root volume, key pair, and AWS Identity and Access Management (IAM) role. Internal Amazon RDS database.
You can use the eb config command to apply a saved configuration to a running environment. Use the --cfg option with the name of the saved configuration to apply its settings to your environment. In this example, v1 is the name of a previously created and saved configuration file.
Commands can be run conditionally using the test:
modifier. You specify a test to be done. If the test returns 0, the command is run, otherwise it is not.
If the last command in your config file touches a file, and the commands above that you only want to run once check for the existence of that file, then those commands will only run the first time.
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
On Windows it would be something like this
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With