2

У меня есть приложение Node для эластичного бобового стежка, которое я пытаюсь настроить. Я пытаюсь загрузить файл среды из S3 в /var/app/ondeck/src/, поэтому файл доступен, когда приложение Node запущено. Я пробовал столько, о чем я могу думать, но файл production.env никогда не появляется. Если я изменил местоположение на что-то вроде /home/ec2-user, файл появится, поэтому я знаю, что у меня есть часть файла правильно. Что мне не хватает?Загрузите S3 и добавьте в каталог приложений

files: 
    "/var/app/ondeck/src/production.env": 
    mode: "000777" 
    user: nodejs 
    group: nodejs 
    source: https://s3.amazonaws.com/bucket-name/file.env 

Resources: 
    AWSEBAutoScalingGroup: 
    Metadata: 
     AWS::CloudFormation::Authentication: 
     S3Access: 
      type: S3 
      roleName: aws-elasticbeanstalk-ec2-role 
      buckets: bucket-name 

========

В крайнем случае идея в том, чтобы запустить container_command что бы просто скопировать файл из /home/ec2-user в /var/app/current/src/ или /var/app/ondeck/src/ но это, кажется, не работает. Я предпочитаю, чтобы верхний пример работал, если это вообще возможно.

container_commands: 
    command: "/bin/cp /home/ec2-user/production.env /var/app/ondeck/production.env" 
+0

почему вы используете папку «ondeck», а не «текущий» один? онддек, вероятно, удаляется вместе с вашим файлом. попробуйте ssh окно и убедитесь сами, если эта папка существует даже после развертывания. – Tal

+0

Ondeck создается во время развертывания приложения. Если все идет хорошо, он удаляет ток и переименовывает ondeck в текущий, если я не ошибаюсь. – adam8810

+0

Я пробовал загружать файл в текущий, но не удался. – adam8810

ответ

2

Последний вариант, похоже, работает для меня с некоторыми изменениями. Обратите внимание на следующее:

  • Я использую mv вместо cp
  • в моем случае у меня есть владелец и группа webapp вместо nodejs, но, вероятно, это только из-за меня, используя Beanstalk для PHP вместо Node
  • У меня есть имя для моей команды контейнера
  • Я использую относительный путь для целевого файла команды контейнера
  • Я не тестировал аутентификацию с моего конкретного случая использования. VES файл, который является публичным

Было бы что-то вроде:

files: 
    "/home/ec2-user/production.env": 
    mode: "000644" 
    owner: nodejs 
    group: nodejs 
    source: https://s3.amazonaws.com/bucket-name/file.env 

container_commands: 
    01_mv_to_app_dir: 
    command: "mv /home/ec2-user/production.env ./production.env"