2013-06-04 3 views
9

AWS Elastic Beanstalk : DevelopmentProduction에 두 개의 환경이 있습니다.AWS Elastic Beanstalk : 특정 환경에 대한 확장.

.ebextensions/app.configProduction 환경에서만 실행하고 싶습니다. 그럴 수있는 방법은 무엇입니까?


의 app.config : 나는 당신이 생각하고있는 방법으로 그것을 할 수있는 간단한 방법이 있다고 생각하지 않습니다

container_commands: 
    01-command: 
    command: "crontab .ebextensions/cronjob" 
    leader_only: true 

답변

14

TNICHOLS 생각에 따르면 나는 해결책을 찾아 냈다.

의 app.config :

container_commands: 
    command-01: 
    command: "/bin/bash .ebextensions/crontab.sh" 
    leader_only: true 

crontab.sh : 좋은 ideia That`s

if [ "$PARAM1" == "MyAppEnv-Production" ]; then 
    crontab -l > /tmp/cronjob 

    #CRONJOB RULES 
    echo "00 00 * * * /usr/bin/wget http://localhost/cronexecute > /dev/null 2>&1" >> /tmp/cronjob 

    crontab /tmp/cronjob 
    rm /tmp/cronjob 
    echo 'Script successful executed, crontab updated.' 
else 
    echo 'This script is only executed in the production environment.' 
fi 
+1

나에게 잘 어울려요! – tnichols

+4

AWS는 container 명령에 'test'옵션을 추가 했으므로 crontab.sh의 if 문을 leader_only 다음에 app.config로 옮길 수 있습니다 :'test : '[ "$ PARAM1"== "MyAppEnv-Production"]'' – choobablue

2

. config 파일을 실행시켜 두 번째 스크립트 (아마도 cron.sh)를 실행할 수 있습니다. cron.sh에서 환경 이름을 확인한 다음 그에 따라 cronjob을 추가 할 수 있습니다. 테스트를 해보지는 않았지만 효과가 있다고 생각합니다.


변경 환경 PARAM1 변수 MyAppEnv-Production에 값 (또는 당신이 원하는) :

+0

는 일리노이 그렇게하려고! –

+0

.sh 스크립트에서'Environment Name'을 실행하는 방법을 알고 있습니까? –

+0

귀하의 아이디어를 기반으로 내 솔루션을 확인하십시오;) 감사합니다! –

관련 문제