Elastic Beanstalk 인스턴스 셸에서 환경 변수를 사용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 8월 25일

AWS Elastic Beanstalk 인스턴스 셸에서 환경 변수를 사용하고 싶습니다.

간략한 설명

Elastic Beanstalk에서 환경 변수는 운영 체제에 노출되지 않습니다.

환경 변수가 Elastic Beanstalk 환경 변수로 설정된 경우 운영 체제의 환경 변수와 함께 유틸리티를 사용하려면, 환경 변수를 운영 체제 변수로 내보내는 .ebextension을 사용해야 합니다.

이렇게 하는 방법은 다음 해결 방법을 참조하십시오.

1.    get-config 유틸리티를 사용하여 Elastic Beanstalk 환경 변수를 읽습니다.

2.    jq 웹 사이트에서 jq 유틸리티를 사용하여 JSON에서 쉘 변수로 get-config 출력을 변환합니다.

3.    /etc/profile.d/sh.local 파일에 변수를 저장합니다. 이 파일은 Bash가 변수를 운영 체제로 내보내기 위해 읽는 파일입니다.

해결 방법

1.    애플리케이션 소스 번들에 .ebextension 파일을 생성하고 다음을 포함합니다.

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
    yum:
        jq: []

참고: 1단계의 구성 파일을 setvars.config라고 합니다.

2.    .ebextension 파일을 저장한 다음 Elastic Beanstalk 환경에 배포합니다.

3.    변수가 내보내지고 있는지 테스트하려면, SSH를 사용하여 인스턴스에 연결한 후 다음 명령을 실행합니다. 테스트하기 전에 기존 세션을 닫은 다음 SSH를 사용하여 다시 연결합니다.

env | grep VARIABLE_NAME

중요: 3단계에서 VARIABLE_NAME을 환경에 정의된 변수로 설정합니다.

환경 변수가 올바르게 설정되었는지 여부가 출력에 표시됩니다. 다음 예제 출력에서 RDS_PORT라는 변수는 Elastic Beanstalk 환경에서 정의됩니다.

$ env|grep RDS_PORT
RDS_PORT=3306

참고: .ebextension명령을 사용하고 있는 경우 sh.local 파일을 새 배포로만 업데이트할 수 있습니다. 환경에서 변수를 추가하거나 변경하는 경우 변수를 운영 체제로 내보내려면 먼저 새 배포를 생성해야 합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?