Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Run AWS Elastic Beanstalk container commands based on environment
container_commands:
# check for environemt within command to use leader flag
01_portfolio_update_cron_job:
command: 'if [ "$SYMFONY_ENV" != "staging" ]; then cat .ebextensions/cronjobs/portfolio_cron_job.txt > /etc/cron.d/portfolio_cron_job && chmod 644 /etc/cron.d/portfolio_cron_job; else echo "dont include portfolio cron";fi'
leader_only: true
# command should run on all instances, we can use the test command for environment check
02_synch_cron_job:
command: cat .ebextensions/cronjobs/synch_cron.txt > /etc/cron.d/synch_cron && chmod 644 /etc/cron.d/synch_cron
test: '[ "$SYMFONY_ENV" == "develop" ]'

Since AWS Elastic Beanstalk does not provide different .ebextension scripts based on environment I'm using a little workaround to solve this.

TODO:

  • You need to declare an environment variable in your AWS EB application. (in my case SYMFONY_ENV)
  • now you can read this variable in your deployment scripts

pay attention:

  • You can not use the leader flag with the test command together. The test flag will overwrite the leader boolean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.