¿Cómo puedo montar un volumen de Amazon EFS en un directorio de aplicaciones en un entorno de Elastic Beanstalk?
Quiero montar un volumen de Amazon Elastic File System (Amazon EFS) en un directorio de aplicaciones en un entorno de AWS Elastic Beanstalk.
Breve descripción
La siguiente resolución proporciona instrucciones generales para montar un volumen de Amazon EFS en plataformas basadas en Amazon Linux 1. Para la resolución se usa la pila de soluciones de PHP.
Si usa una pila de soluciones diferente, elija el directorio de aplicaciones y el directorio provisional correctos para su pila de soluciones entre las siguientes opciones:
----------------------------------------------------- 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: Al implementar una aplicación de Elastic Beanstalk, el contenido de /var/app/current se mueve a /var/app/current.old. No puede montar directamente un volumen de Amazon EFS en el directorio de aplicaciones. El paquete fuente actualmente implementado se mueve al directorio de aplicaciones. Si monta el volumen de Amazon EFS en /var/app/current, ese volumen se mueve a /var/app/current.old una vez finalizada la implementación.
Ejemplo de salida de 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 ===============================
Solución
Para montar un volumen de Amazon EFS en un directorio de aplicaciones en un entorno de Elastic Beanstalk, siga estos pasos:
- Confirme que el paquete fuente esté descomprimido en el directorio provisional. Para obtener más información, consulte Viewing logs from Amazon Elastic Compute Cloud (Amazon EC2) instances in your Elastic Beanstalk environment.
Ejemplo de salida de eb-activity.log:
Nota: Todos los enlaces appdeploy pre de /opt/elasticbeanstalk/hooks/appdeploy/pre/ y .ebextensions se ejecutan en el directorio provisional.=============================== [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 ===============================
- Cree una carpeta .ebextensions en el directorio raíz del paquete fuente.
- Para montar un volumen de Amazon EFS en un directorio específico, como /efs, añada un archivo de configuración formateado (YAML o JSON) al directorio.
- Para montar el volumen de Amazon EFS en un directorio de aplicaciones, cree un enlace simbólico al directorio provisional. Para crear un enlace simbólico desde /efs que apunte al directorio provisional, use container_commands para crear un archivo .config en la carpeta .ebextensions.
Ejemplo:
Nota: Cuando los enlaces appdeploy enact se ejecutan durante una implementación en un entorno de Elastic Beanstalk, el contenido del directorio provisional se mueve al directorio de aplicaciones. Por ejemplo, en una solución de PHP, el script flip.sh mueve el contenido del directorio provisional al directorio de aplicaciones. El script flip.sh es el primer script de AppDeployEnactHook en /opt/elasticbeanstalk/hooks/appdeploy/enact/.container_commands: 01_symlink: command: ln -s /efs /var/app/ondeck/
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 años