cronjob이 awscli
( 환경 변수를 통해 인증 됨)을 사용하여 백업을 수행 해야하는 도커 컨테이너를 설정하고 있습니다.
cron에 도커 변수가 표시되지 않으므로 aws
명령을 실행하기 전에 파일에 인쇄하고 소싱합니다 .
나는 한 확인 변수가 아직 크론에서 설정되어 있는지 awscli
를 볼 수 없습니다.
다음은이 문제를 보여주는 최소한의 프로젝트입니다.
도커 파일 :
FROM debian:jessie
# Install aws and cron
RUN apt-get -yqq update
RUN apt-get install -yqq awscli cron rsyslog
# Create cron job
ADD crontab /etc/cron.d/hello-cron
RUN chmod 0644 /etc/cron.d/hello-cron
# Output environment variables to file
# Then start cron and watch log
CMD printenv > /env && cron && service rsyslog start && tail -F /var/log/*
크론 탭 :
# Demonstrates that cron can see variables
*/2 * * * * root /usr/bin/env bash -c '. /env && echo $AWS_DEFAULT_REGION' >> /test1 2>&1
# Attempt to list s3 buckets knowing environment variables are set
*/2 * * * * root /usr/bin/env bash -c '. /env && aws s3 ls' >> /test2 2>&1
다시 돌아옵니다 Unable to locate credentials. You can configure credentials by running "aws configure"
. 그러나 도커 컨테이너 내에서 동일한 명령을 실행하면 버킷 목록이 다시 나타납니다.
이것은 .env
docker에 전달 하는 파일입니다.
.env :
## AWS SETTINGS
AWS_ACCESS_KEY_ID=(key removed)
AWS_SECRET_ACCESS_KEY=(secret removed)
AWS_DEFAULT_REGION=us-west-2
왜 awscli
환경 변수를 볼 수 없지만 cron 내부에서만 볼 수 있는지에 대한 아이디어가 있습니까?