我在 python 2.7 elastic beanstalk 环境中工作。
我正在尝试使用来源在 .ebextensions .config 文件中键入以将 tgz 存档复制到我的应用程序根目录中的目录-- /opt/python/current/app/utility
。我这样做是因为此文件夹中的文件太大,无法包含在我的 github 存储库中。
但是,看起来 sources 键是在创建到当前包目录的 ondeck 符号链接之前执行的,所以/opt/python/ondeck/app
在使用 sources 命令时我无法引用,因为它会创建文件夹,然后在尝试创建 ondeck 符号链接时出现 beanstalk 错误。
以下是.ebextensions/utility.config
我尝试过的文件的副本:
sources:
/opt/python/ondeck/app/utility: http://[bucket].s3.amazonaws.com/utility.tgz
以上成功复制到 /opt/python/ondec/app/utility,但是 beanstalk 出现错误,因为它无法从 /opt/python/bundle/x --> /opt/python/ondeck 创建符号链接。
sources:
utility: http://[bucket].s3.amazonaws.com/utility.tgz
上面将文件夹从根目录复制到 /utility,与 /etc 并行。
答案1
我能够使用不同的密钥来完成此操作:
container_commands:
001_get_utility_dir:
command: "cd /opt/python/ondeck/app/utility && curl http://[bucket].s3.amazonaws.com/elasticbeanstalk/utility.tgz | tar xz"
答案2
这有一定的帮助,但在我的环境(php)中没有临时ondeck
目录,并且current
我的应用程序最终部署的目录是在运行命令后重新创建的。
因此,我需要在部署后运行一个脚本。搜索后发现,我可以放入一个脚本/opt/elasticbeanstalk/hooks/appdeploy/post/
,它将在部署后运行。
因此,我使用最简单的方式将文件从 S3 下载/提取到临时目录中sources
。然后,我创建一个文件,该文件将在部署后复制我的文件并将其放在部署后挂钩目录中。
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