Como montar um volume do Amazon EFS em um diretório de aplicações de um ambiente do Elastic Beanstalk?
Quero montar um volume do Amazon Elastic File System (Amazon EFS) em um diretório de aplicação em um ambiente do AWS Elastic Beanstalk.
Breve descrição
A resolução a seguir fornece instruções gerais para montar um volume do Amazon EFS em plataformas baseadas na Amazon Linux 1. A resolução usa a pilha de soluções PHP.
Se você usar uma pilha de soluções diferente, escolha o diretório da aplicação e o diretório de teste corretos para sua pilha de soluções entre as seguintes opções:
----------------------------------------------------- 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 -----------------------------------------------------
Importante: quando você implanta uma aplicação Elastic Beanstalk, o conteúdo de /var/app/current é movido para /var/app/current.old. Não é possível montar diretamente um volume do Amazon EFS no diretório da aplicação. O pacote de origem implantado atualmente é movido para o diretório da aplicação. Se você montar o volume do Amazon EFS em /var/app/current, esse volume será movido para /var/app/current.old após a conclusão da implantação.
Exemplo de saída 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 ===============================
Resolução
Para montar um volume do Amazon EFS em um diretório de aplicação em um ambiente do Elastic Beanstalk, conclua as seguintes etapas:
- Confirme se seu pacote de origem está descompactado no diretório de teste. Para obter mais informações, consulte Visualizar logs de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) no seu ambiente do Elastic Beanstalk.
Exemplo de saída eb-activity.log:
Observação: todos os ganhos appdeploy pre em /opt/elasticbeanstalk/hooks/appdeploy/pre/ e .ebextensions são executados no diretório de teste.=============================== [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 ===============================
- Crie uma pasta .ebextensions no diretório raiz do pacote de origem.
- Para montar um volume do Amazon EFS em um diretório específico, como /efs, adicione um arquivo de configuração formatado (YAML ou JSON) ao seu diretório.
- Para montar seu volume do Amazon EFS em um diretório de aplicação, crie um link simbólico para o diretório de teste. Para criar um link simbólico de /efs que aponte para o diretório de teste, use container_commands para criar um arquivo .config na pasta .ebextensions.
Exemplo:
Observação: quando ganchos appdeploy enact são executados durante uma implantação em um ambiente do Elastic Beanstalk, o conteúdo do diretório de teste é movido para o diretório da aplicação. Por exemplo, em uma solução PHP, o script flip.sh move o conteúdo do diretório de teste para o diretório da aplicação. O script flip.sh é o primeiro script de AppDeployEnactHook em /opt/elasticbeanstalk/hooks/appdeploy/enact/.container_commands: 01_symlink: command: ln -s /efs /var/app/ondeck/
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano