Elastic Beanstalk 환경의 애플리케이션 디렉터리에 Amazon EFS 볼륨을 탑재하려면 어떻게 해야 합니까?
AWS Elastic Beanstalk 환경의 애플리케이션 디렉터리에 Amazon Elastic File System(Amazon EFS) 볼륨을 탑재하려고 합니다.
간략한 설명
다음 해결 방법은 PHP 솔루션 스택을 예로 들어 Amazon Linux 1 기반 플랫폼에 Amazon EFS 볼륨을 마운트하기 위한 일반적인 지침을 제공합니다.
다른 솔루션 스택을 사용하는 경우 동일한 단계를 따르되, 다음 옵션 중에서 솔루션 스택에 대한 올바른 애플리케이션 디렉터리 및 스테이징 디렉터리를 선택합니다.
----------------------------------------------------- Solution stack Application directory Staging directory Nodejs /var/app/current /tmp/deployment/application PHP /var/app/current /var/app/ondeck Ruby (Passenger) /var/app/current /var/app/ondeck Ruby (Puma) /var/app/current /var/app/ondeck Java with Tomcat /usr/share/tomcat*/webapps/ROOT /tmp/deployment/application/ROOT Java SE /var/app/current /var/app/staging Python /opt/python/current/app /opt/python/ondeck/app Go /var/app/current /var/app/staging Single Container Docker /var/app/current /var/app/staging Multi-Container Docker /var/app/current /var/app/staging -----------------------------------------------------
중요: Amazon EFS 볼륨을 애플리케이션 디렉터리에 직접 마운트할 수는 없습니다. Elastic Beanstalk 애플리케이션을 배포할 때마다 /var/app/current의 콘텐츠가 /var/app/current.old로 이동하기 때문입니다. 현재 배포된 소스 번들이 애플리케이션 디렉터리로 이동합니다. Amazon EFS 볼륨을 /var/app/current에 탑재하면 배포가 완료된 후 이 볼륨이 /var/app/current.old로 이동합니다. 예를 들어 다음 eb-activity.log 출력을 참조하십시오.
=============================== [2020-02-12T02:28:18.237Z] INFO [3159] - [Application deployment Sample Application@1/StartupStage1/AppDeployEnactHook/01_flip.sh] : Starting activity... [2020-02-12T02:28:18.431Z] INFO [3159] - [Application deployment Sample Application@1/StartupStage1/AppDeployEnactHook/01_flip.sh] : Completed activity. Result: ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir + EB_APP_STAGING_DIR=/var/app/ondeck ++ /opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir + EB_APP_DEPLOY_DIR=/var/app/current + '[' -d /var/app/current ']' + mv /var/app/current /var/app/current.old + mv /var/app/ondeck /var/app/current + nohup rm -rf /var/app/current.old ===============================
해결 방법
1. 스테이징 디렉터리에서 소스 번들의 압축이 해제되었는지 확인합니다. 다음 예제 eb-activity.log 출력을 참조하세요.
=============================== [2020-02-12T02:28:16.336Z] INFO [3159] - [Application deployment Sample Application@1/StartupStage0/AppDeployPreHook/01_unzip.sh] : Starting activity... [2020-02-12T02:28:16.631Z] INFO [3159] - [Application deployment Sample Application@1/StartupStage0/AppDeployPreHook/01_unzip.sh] : Completed activity. Result: ++ /opt/elasticbeanstalk/bin/get-config container -k app_user + EB_APP_USER=webapp ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir + EB_APP_STAGING_DIR=/var/app/ondeck ++ /opt/elasticbeanstalk/bin/get-config container -k source_bundle + EB_SOURCE_BUNDLE=/opt/elasticbeanstalk/deploy/appsource/source_bundle + rm -rf /var/app/ondeck + /usr/bin/unzip -d /var/app/ondeck /opt/elasticbeanstalk/deploy/appsource/source_bundle Archive: /opt/elasticbeanstalk/deploy/appsource/source_bundle creating: /var/app/ondeck/.ebextensions/ inflating: /var/app/ondeck/.ebextensions/logging.config inflating: /var/app/ondeck/scheduled.php inflating: /var/app/ondeck/index.php inflating: /var/app/ondeck/cron.yaml inflating: /var/app/ondeck/styles.css extracting: /var/app/ondeck/logo_aws_reduced.gif + chown -R webapp:webapp /var/app/ondeck + chmod 775 /var/app/ondeck ===============================
참고: **/opt/elasticbeanstalk/hooks/appdeploy/pre/**의 모든 appdeploy pre 후크와 .ebextensions는 스테이징 디렉터리에서 실행됩니다.
2. 소스 번들의 루트 디렉터리에 .ebextensions 폴더를 생성합니다.
3. 특정 디렉터리(예: /efs)에 Amazon EFS 볼륨을 마운트하려면 형식이 지정된 구성 파일(YAML 또는 JSON)을 디렉터리에 추가합니다.
4. Amazon EFS 볼륨을 애플리케이션 디렉터리에 마운트하려면 스테이징 디렉터리에 대한 심볼릭 링크를 생성해야 합니다. /efs에서 스테이징 디렉터리를 가리키는 심볼릭 링크를 생성하려면 container_commands를 사용하여 .ebextensions 폴더에 .config 파일을 생성합니다. 예를 들어, 다음과 같습니다:
container_commands: 01_symlink: command: ln -s /efs /var/app/ondeck/
참고: Elastic Beanstalk 환경에서 배포하는 동안 appdeploy enact 후크를 실행하면 스테이징 디렉터리의 콘텐츠가 애플리케이션 디렉터리로 이동합니다. 예를 들어, PHP 솔루션에서 flip.sh 스크립트는 스테이징 디렉터리의 콘텐츠를 애플리케이션 디렉터리로 이동합니다. flip.sh 스크립트는 **/opt/elasticbeanstalk/hooks/appdeploy/enact/**의 AppDeployEnactHook의 첫 번째 스크립트입니다.
관련 콘텐츠
- 질문됨 17일 전lg...
- 질문됨 3년 전lg...
- 질문됨 4달 전lg...
- 질문됨 한 달 전lg...
- 질문됨 6달 전lg...
- AWS 공식업데이트됨 9달 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 5달 전