提问者:小点点

如何将beanstik. eb扩展.config“源”键“目标目录”设置为当前捆绑目录


我在python 2.7弹性豆茎环境中工作。

我正在尝试使用. eb扩展.config文件中的源密钥将tgz存档复制到我的应用程序根目录中的目录-/select/python/当前/app/实用程序。我这样做是因为此文件夹中的文件太大而无法包含在我的github存储库中。

但是,它看起来像源键是在创建到当前捆绑目录的甲板符号链接之前执行的,所以我不能在使用源命令时引用/select/python/甲板/app,因为它创建了文件夹,然后在尝试创建甲板符号链接时出现了beanstik错误。

以下是我尝试过的. ebextsions/utility.config文件的副本:

sources:
  /opt/python/ondeck/app/utility: http://[bucket].s3.amazonaws.com/utility.tgz

上面成功地复制到 /opt/python/ondec/app/utility但是然后beanstek错误了,因为它不能从 /opt/python/bundle/x创建符号链接-

sources:
  utility: http://[bucket].s3.amazonaws.com/utility.tgz

上面复制文件夹 /utility右关闭根并行 /etc.


共2个答案

匿名用户

您可以使用container_commands而不是,因为它在应用程序设置后运行。

使用container_commands,您将无法使用自动获取文件并提取它们,因此您必须使用wget或curl等命令来获取文件并在之后解压缩它们。示例:curl超文本传输协议://[bucket]。s3.amazonaws.com/utility.tgz|tar xz

匿名用户

在我的环境(php)中,没有瞬态的在甲板上目录,并且在运行命令后重新创建了我的应用程序最终部署的当前目录。

因此,我需要在部署后运行脚本。搜索显示我可以将脚本放在/select/elasticbeanstatk/hooks/app部署/post/中,它将在部署后运行。

所以我用最简单的方法从S3下载/解压我的文件到一个临时目录,方法是使用source。然后我创建一个文件,该文件将在部署后复制我的文件,并将其放在部署后的钩子目录中。

sources:
  /some/existing/directory: https://s3-us-west-2.amazonaws.com/my-bucket/vendor.zip
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_move_my_files_on_deploy.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      mv /some/existing/directory /var/app/current/where/the/files/belong