Skip to content

Instantly share code, notes, and snippets.

@StefanieD
Last active June 12, 2021 03:12
Show Gist options
  • Save StefanieD/db769e9441b96ae0e5f4b97a91342a06 to your computer and use it in GitHub Desktop.
Save StefanieD/db769e9441b96ae0e5f4b97a91342a06 to your computer and use it in GitHub Desktop.
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