Come posso montare un volume Amazon EFS in una directory dell'applicazione di un ambiente Elastic Beanstalk?
Desidero montare un volume Amazon Elastic File System (Amazon EFS) in una directory dell'applicazione di un ambiente AWS Elastic Beanstalk.
Breve descrizione
La seguente risoluzione fornisce istruzioni generali per montare un volume Amazon EFS in piattaforme basate su Amazon Linux 1. Per questa risoluzione viene utilizzato lo stack di soluzioni PHP. Se usi uno stack di soluzioni diverso, scegli la directory dell'applicazione e la directory di staging corrette per il tuo stack di soluzioni tra le opzioni seguenti:
----------------------------------------------------- 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 implementi un'applicazione Elastic Beanstalk, il contenuto di /var/app/current viene spostato in /var/app/current.old. Non è possibile montare un volume Amazon EFS direttamente nella directory dell'applicazione. Il pacchetto sorgente attualmente implementato viene spostato nella directory dell'applicazione. Se monti il volume Amazon EFS in /var/app/current, terminata l’implementazione tale volume viene spostato in /var/app/current.old.
Esempio di output di 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 ===============================
Risoluzione
Per montare un volume Amazon EFS in una directory dell'applicazione di un ambiente Elastic Beanstalk, completa i seguenti passaggi:
- Verifica che il pacchetto sorgente sia stato decompresso nella directory di staging. Per ulteriori informazioni, consulta Viewing logs from Amazon Elastic Compute Cloud (Amazon EC2) instances in your Elastic Beanstalk environment.
Esempio di output eb-activity.log:
Nota: tutti gli hook appdeploy pre in /opt/elasticbeanstalk/hooks/appdeploy/pre/ e .ebextensions vengono eseguiti nella directory di staging.=============================== [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 ===============================
- Crea una cartella .ebextensions nella directory root del pacchetto sorgente.
- Per montare un volume Amazon EFS in una directory specifica, ad esempio /efs, aggiungi alla directory un file di configurazione formattato (YAML o JSON).
- Per montare il volume Amazon EFS in una directory dell'applicazione, crea un collegamento simbolico alla directory di staging. Per creare un collegamento simbolico da /efs che punti alla directory di staging, usa container_commands per creare un file .config nella cartella .ebextensions.
Esempio:
Nota: quando vengono eseguiti gli hook appdeploy enact durante un’implementazione in un ambiente Elastic Beanstalk, il contenuto della directory di staging viene spostato nella directory dell'applicazione. Ad esempio, in una soluzione PHP, lo script flip.sh sposta il contenuto della directory di staging nella directory dell'applicazione. Lo script flip.sh è il primo script di AppDeployEnactHook in /opt/elasticbeanstalk/hooks/appdeploy/enact/.container_commands: 01_symlink: command: ln -s /efs /var/app/ondeck/
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 mesi fa
- AWS UFFICIALEAggiornata un anno fa