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

최종 업데이트 날짜: 2021년 1월 20일

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

간략한 설명

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

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

해결 방법

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

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

2.    인스턴스의 모든 사용자가 환경 변수 파일에 액세스할 수 있도록 하려면 /opt/elasticbeanstalk/deployment/env 파일을 복사하고 644 권한을 설정하는 것과 동일한 논리가 포함된 bash 스크립트를 사용합니다. 예를 들어 다음과 같습니다.

.platform/hooks/postdeploy/01_set_env.sh AND .platform/confighooks/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
-----

3.    .platform/hooks/postdeploy/01_set_env.sh..platform/confighooks/postdeploy/01_set_env.sh 파일 모두에 대한 실행 권한을 설정합니다.

chmod +x .platform/hooks/postdeploy/01_set_env.sh
chmod +x .platform/confighooks/postdeploy/01_set_env.sh

4.    .platform 후크 스크립트를 배포합니다.

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

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

참고: 공백 또는 특수 문자가 포함된 환경 속성은 Bash 셸에서 해석되어 다른 값이 될 수 있습니다.

중요: 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

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


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