Wie mounte ich ein Amazon EFS-Volume in ein Anwendungsverzeichnis in einer Elastic Beanstalk-Umgebung?
Ich möchte ein Amazon Elastic File System (Amazon EFS)-Volume in einem Anwendungsverzeichnis in einer AWS Elastic Beanstalk-Umgebung mounten.
Kurzbeschreibung
Die folgende Behebung enthält allgemeine Anweisungen zum Mounten eines Amazon EFS-Volumes auf Plattformen, die auf Amazon Linux 1 basieren. Die Behebung verwendet den PHP-Lösungs-Stack.
Wenn Sie einen anderen Lösungs-Stack verwenden, wählen Sie aus den folgenden Optionen das richtige Anwendungsverzeichnis und Stagingverzeichnis für Ihren Lösungs-Stack aus:
----------------------------------------------------- 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 -----------------------------------------------------
**Wichtig:**Wenn Sie eine Elastic Beanstalk-Anwendung bereitstellen, wird der Inhalt von /var/app/current nach /var/app/current.old verschoben. Sie können ein Amazon EFS-Volume nicht direkt in das Anwendungsverzeichnis mounten. Das aktuell bereitgestellte Quellpaket wird in das Anwendungsverzeichnis verschoben. Wenn Sie das Amazon EFS-Volume in /var/app/current mounten, wird dieses Volume nach Abschluss der Bereitstellung nach /var/app/current.old verschoben.
Beispiel für die Ausgabe von 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 ===============================
Behebung
Um ein Amazon EFS-Volume in einem Anwendungsverzeichnis in einer Elastic Beanstalk-Umgebung bereitzustellen, führen Sie die folgenden Schritte aus:
- Vergewissern Sie sich, dass Ihr Quellpaket im Staging-Verzeichnis entpackt ist. Weitere Informationen finden Sie unter Anzeigen von Protokollen von Amazon Elastic Compute Cloud (Amazon EC2)-Instances in Ihrer Elastic Beanstalk-Umgebung.
Beispiel für die Ausgabe von eb-activity.log:
**Hinweis:**Alle Appdeploy Pre-Hooks in /opt/elasticbeanstalk/hooks/appdeploy/pre/ und .ebextensions werden im Staging-Verzeichnis ausgeführt.=============================== [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 ===============================
- Erstellen Sie einen Ordner .ebextensions im Stammverzeichnis des Quellpakets.
- Zum Mounten für ein Amazon EFS-Volume in einem bestimmten Verzeichnis wie /efs zu mounten, fügen Sie Ihrem Verzeichnis eine formatierte Konfigurationsdatei (YAML oder JSON) hinzu.
- Um Ihr Amazon EFS-Volume in ein Anwendungsverzeichnis zu mounten, erstellen Sie einen Symlink zum Staging-Verzeichnis. Um einen Symlink von /efs zu erstellen, der auf das Staging-Verzeichnis verweist, verwenden Sie container_commands, um eine .config-Datei in Ihrem .ebextensions-Ordner zu erstellen.
Beispiel:
**Hinweis:**Wenn Appdeploy Enact Hooks während einer Bereitstellung in einer Elastic Beanstalk-Umgebung ausgeführt werden, wird der Inhalt des Staging-Verzeichnisses in das Anwendungsverzeichnis verschoben. Beispielsweise verschiebt das Skript flip.sh in einer PHP-Lösung den Inhalt des Staging-Verzeichnisses in das Anwendungsverzeichnis. Das Skript flip.sh ist das erste Skript von AppDeployeNactHook in /opt/elasticbeanstalk/hooks/appdeploy/enact/.container_commands: 01_symlink: command: ln -s /efs /var/app/ondeck/
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren