AWS Elastic Beanstalk 部署后脚本

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 部署后脚本【英文标题】:AWS Elastic Beanstalk Post Deploy Script 【发布时间】:2015-07-28 01:53:10 【问题描述】:

我正在尝试将部署后脚本添加到我的 Elastic Beanstalk。我已经阅读了一些博客文章(阅读参考资料),其中提到将配置文件添加到 .elasticbeanstalk 目录。配置文件应该创建一个shell脚本并将其复制到目录:

/opt/elasticbeanstalk/hooks/appdeploy/post

在我的.elasticbeanstalk 文件夹中,我有以下文件:

config.yml

    branch-defaults:
      staging:
        environment: env-name
    global:
      application_name: app-name
      default_ec2_keyname: aws-eb
      default_platform: 64bit Amazon Linux 2015.03 v1.3.1 running Ruby 2.2 (Passenger Standalone)
      default_region: us-west-2
      profile: eb-cli
      sc: git

test.config(我添加的用于测试部署后脚本如何工作的配置):

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/01_test.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      # This is my test shell script

在我运行eb deploy 之后,shell 脚本并没有被复制到上面的目录中。我的/opt/elasticbeanstalk/appdeploy/post 目录是空的。 .elasticbeanstalk 文件夹在/var/app/current/ 目录中是正确的。我也看不到日志文件中引用新脚本或错误的任何内容。我检查了eb-tools.logeb-activity.logcron,并在所有日志中查找了这些文件周围的关键字。尽管如此,还是没有运气。

提前感谢任何帮助/建议!

参考资料:

https://forums.aws.amazon.com/thread.jspa?threadID=137136 http://www.dannemanne.com/posts/post-deployment_script_on_elastic_beanstalk_restart_delayed_job

【问题讨论】:

【参考方案1】:

放置配置文件的正确位置是应用中的.ebextensions 目录,而不是. elasticbeanstalk。然后,您应该会在 /opt/elasticbeanstalk/hooks/appdeploy/post 目录中看到您的 shell 脚本。

如论坛帖子中所述 “将文件直接放入 hooks 目录是有风险的,因为这不是记录在案的方法,在某些容器中有所不同,并且将来可能会改变”

【讨论】:

啊,哇!愚蠢的错误。谢谢!

以上是关于AWS Elastic Beanstalk 部署后脚本的主要内容,如果未能解决你的问题,请参考以下文章

部署到 AWS Elastic Beanstalk 后如何访问 servlet?

在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本

在 AWS Elastic Beanstalk 上部署 Laravel 8 后得到 404

“数据库主机数组为空。”在 AWS Elastic Beanstalk 上部署 Laravel 项目后

AWS Elastic Beanstalk - PHP 脚本在部署新版本后无法执行

在 AWS Elastic Beanstalk 中部署后浏览 https 时,Laravel 资产、路由和 url() 不起作用