ElasticBeanstalk에서 환경 변수 사용

3576 단어 ElasticBeanstalkAWS
.ebextensions 등 ElasticBeanstalk에서 Software Configuration 등으로 설정한 환경 변수를 참조하고 싶은 경우의 메모.
(마지막으로 확인한 것이 꽤 전이므로, 어쩌면 현재는 이대로는 동작하지 않을지도 모릅니다)



환경 유형: Docker



현재 방법



이전에는 /opt/elasticbeanstalk/hooks/common.sh 에 쓰여 있던 설정 파일을 참조해 직접 읽고 있었지만, 최근 EB 의 AMI 의 버젼을 올렸더니 잘 움직이지 않게 되어 있었다 (ami-4aedea4b 로 확인).

배포 스크립트가 사용하고 있던 도구를 발견했기 때문에 이것을 사용하기로 결정합니다.

덧붙여서 환경 변수가 포함된 컨테이너의 구성 파일을 직접 참조하고 싶은 경우는 여기에 있습니다.
/opt/elasticbeanstalk/deploy/configuration/containerconfiguration

1: /opt/elasticbeanstalk/bin/get-config 사용



예를 들면 AWS_ACCESS_KEY_ID 를 취득하고 싶은 경우는 이하.
# 要 root 権限
AWS_ACCESS_KEY_ID=$(/opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:application:environment -o AWS_ACCESS_KEY_ID)

2부: /opt/elasticbeanstalk/containerfiles/support/generate_env 사용


generate_env 를 사용하면 설정된 환경 변수를 한 번에 얻을 수 있습니다.
# 要 root 権限
while read -r ENV; do
    export $ENV
done < <(/opt/elasticbeanstalk/containerfiles/support/generate_env)

다만 support 디렉토리가 가변적인 분위기였으므로, 실제로 사용하는 경우는 아래와 같이 get-config 를 사용해 support 디렉토리를 취득하는 편이 좋을지도 모릅니다.
SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_files_dir)
while read -r ENV; do
    export $ENV
done < <(${SUPPORT_DIR}/generate_env)

번외편: 이전 방법



위를 적용하기 전까지는 다음을 사용했습니다.
source /opt/elasticbeanstalk/hooks/common.sh

touch /tmp/env.sh
chmod 600 /tmp/env.sh
jq .docker.env[] $EB_CONFIG_FILE | tr -d \" > /tmp/env.sh
source /tmp/env.sh
rm /tmp/env.sh

이 방법은 Amazon S3를 Docker 프라이빗 리포지토리로 사용하여 AWS ElasticBeanstalk 환경에 배포 에서 소개된 방법입니다.

환경 유형: Multi-container Docker



코멘트로 가르쳐 주신 방법입니다만, Multi-container Docker 의 경우는 아래와 같은 방법으로 환경 변수를 취득 가능한 것 같습니다.
jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" <(/opt/elasticbeanstalk/bin/get-config environment) > /tmp/envs
. /tmp/envs

좋은 웹페이지 즐겨찾기