Wie mounte ich ein Amazon EFS-Volume in ein Anwendungsverzeichnis in einer Elastic Beanstalk-Umgebung?

Lesedauer: 3 Minute
0

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:

  1. 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:
    ===============================
    [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
    ===============================
    **Hinweis:**Alle Appdeploy Pre-Hooks in /opt/elasticbeanstalk/hooks/appdeploy/pre/ und .ebextensions werden im Staging-Verzeichnis ausgeführt.
  2. Erstellen Sie einen Ordner .ebextensions im Stammverzeichnis des Quellpakets.
  3. 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.
  4. 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:
    container_commands:
      01_symlink:
        command: ln -s /efs /var/app/ondeck/
    **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/.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Monaten