Amazon Linux 2 기반 Elastic Beanstalk 인스턴스의 환경 변수에 액세스해야 하는 스크립트를 수동으로 실행하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 20일

Amazon Linux 2 기반 AWS Elastic Beanstalk 인스턴스의 환경 변수에 액세스해야 하는 스크립트를 수동으로 실행하려고 합니다.

간략한 설명

플랫폼 후크를 사용하면 Amazon Linux 2 플랫폼에서 Elastic Beanstalk 인스턴스의 환경 변수에 액세스해야 하는 스크립트를 수동으로 실행할 수 있습니다. 인스턴스 프로비저닝 중에 환경 인스턴스에서 사용자 지정 코드를 구성하고 실행하려면 .ebextension 구성 파일에 파일과 명령을 제공하는 대신 플랫폼 후크를 사용하는 것이 좋습니다.

참고: 다음 해결 방법에는 PHP, Python, Ruby, Amazon Corretto, Tomcat 및 Node.js 등의 여러 플랫폼에서 사용할 수 있는 스크립트가 포함되어 있습니다. 이 스크립트를 사용하면 사용자가 /opt/elasticbeanstalk/deployment/env 파일에 정의된 환경 변수를 소싱할 수 있습니다.

​해결 방법

1.    애플리케이션 소스 번들에서 .platform/hooks/postdeploy 디렉터리에 01_set_env.conf라는 이름의 파일을 생성합니다. 예를 들어 다음과 같습니다.

~/workspace/my-app/
├── .platform
│   ├── hooks
│   │   ├── postdeploy
│   │   │   ├── 01_set_env.sh
|-- helloworld

2.    /opt/elasticbeanstalk/deployment/env 파일을 복사하고 인스턴스의 모든 사용자가 파일에 액세스할 수 있도록 644 권한을 설정하는 Bash 스크립트를 생성합니다. 예를 들어 다음과 같습니다.

.platform/hooks/postdeploy/01_set_env.sh
-----
#!/bin/bash

#Create a copy of the environment variable file
cp /opt/elasticbeanstalk/deployment/env /opt/elasticbeanstalk/deployment/custom_env_var

#Set permissions to the custom_env_var file so this file can be accessed by any user on the instance. You can restrict permissions as per your requirements.
chmod 644 /opt/elasticbeanstalk/deployment/custom_env_var

#Remove duplicate files upon deployment
rm -f /opt/elasticbeanstalk/deployment/*.bak
-----

중요: .platform/hooks/postdeploy/01_set_env.sh 파일에 chmod +x 권한을 설정하십시오.

3.    .platform 후크 파일을 배포합니다.

4.    수동으로 파일을 소싱하지 않으려면 사용자의 ~/.bash_profile에 다음 코드를 추가합니다.

source <(sed -E -n 's/[^#]+/export &/ p' /opt/elasticbeanstalk/deployment/custom_env_var)

참고: Amazon Linux 2에서는 모든 환경 변수가 /opt/elasticbeanstalk/deployment/env라는 단일 파일로 중앙 집중화되어 있습니다. 이 파일은 Elastic Beanstalk의 애플리케이션 배포 프로세스 중에만 사용해야 합니다. /opt/elasticbeanstalk/deployment/env에 정의된 변수는 운영 체제 수준에서 사용할 수 없으므로 인스턴스에서 실행되는 수동 스크립트를 통해 이러한 변수에 액세스하는 경우 “권한 거부” 문제가 발생합니다. /opt/elasticbeanstalk/deployment/env 파일은 사용 권한이 제한되어 있으므로 루트가 아닌 사용자(예: ec2-user)가 소싱하기에 어려울 수 있습니다. 예를 들어 다음과 같습니다.

[root@ip-X-X-X-X deployment]# ls -latr /opt/elasticbeanstalk/deployment/env

-r-------- 1 root root 147 Jun 17 06:23 /opt/elasticbeanstalk/deployment/env

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?