【问题标题】:How to Run a Python Script After Deploying to Elastic Beanstalk如何在部署到 Elastic Beanstalk 后运行 Python 脚本
【发布时间】:2018-07-19 16:51:22
【问题描述】:

我正在尝试在运行 Python 3.4 的 AWS Elastic Beanstalk 64 位 Linux 实例上运行 Python 脚本。我目前在ebextensions 目录中使用container_commands 来运行一些命令,但我的问题是这些命令在应用程序完全部署到环境之前运行。有谁知道如何在部署后执行 python 脚本?我发现 this older post 详细介绍了 Rails 环境的解决方法,但我使用的是 Python。

【问题讨论】:

  • 你可以从 EB 外部进行,你用什么来部署?
  • 我正在使用 EB CLI 进行部署。我可以通过 ssh 进入环境并手动运行脚本,但我只是想知道是否有办法将其设置为在每次部署后自动运行。

标签: python amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

我会说你有两个选择:

  1. 将脚本托管在this article 中提到的appdeploy/post 文件夹中:

所以当我查看 EC2 实例上的 eb-tools.log 时,我发现 它正在搜索要在 /opt/elasticbeanstalk/hooks/appdeploy/post 目录重启后 网络服务器。事实证明,如果您将 shell 脚本放入此 目录它们将在部署后执行,就像你想要的一样! 但是这个目录默认不存在,因为亚马逊不存在 使用任何部署后脚本,因此我们还需要确保这一点 目录已创建。

  1. 如果第一个选项不起作用,我会做的是将要运行的代码添加到我正在部署到该 EB 的代码中,并将其作为我正在使用的部署过程的一部分运行。例如,如果我通过 Windows 机器上的批处理文件进行部署,我会执行以下操作:

    call eb deploy
    call http://myurl.com/postDeploy
    

【讨论】:

  • 您好 Naguib,感谢您的回答!我已经尝试了几次选项 1,但是我在运行 python 脚本时遇到了问题。我在我的项目的主目录中将它作为test.py,但是我尝试过的每个文件路径组合总是导致错误提示No such file or directory. 所以我根据文章编写了一个shell脚本,但是@987654326行@ 不起作用,~/var/app/current/test.py/var/app/current/test.pytest.py/tmp/deployment/application/test.py 之类的路径也不起作用...您认为有办法访问我丢失的文件吗?
  • 不幸的是,eb-tools.log 似乎不再包含有关它尝试运行的任何命令的任何信息(根据文章之前提到的/opt/elasticbeanstalk/hooks/appdeploy/post 目录)。
【解决方案2】:

根据Custom Platform HooksAWS 文档:

警告

在托管平台上使用自定义平台挂钩不是 支持的。自定义平台挂钩是为自定义平台设计的。在 Elastic Beanstalk 托管平台的工作方式可能不同或 有一些问题,并且行为可能因平台而异。在 Amazon Linux AMI 平台(早于 Amazon Linux 2),它们可能 在某些情况下仍然以有用的方式工作;谨慎使用。

自定义平台挂钩是 Amazon Linux 上的一项遗留功能 AMI 平台。在 Amazon Linux 2 平台上,自定义平台挂钩 /opt/elasticbeanstalk/hooks/ 文件夹已完全停产。 Elastic Beanstalk 不会读取或执行它们。 亚马逊 Linux 2 平台支持一种新的平台钩子,专门设计的 扩展 Elastic Beanstalk 托管平台。您可以添加自定义 脚本和程序直接到应用程序中的 hooks 目录 源包。 Elastic Beanstalk 在各种实例中运行它们 供应阶段。有关更多信息,请展开平台挂钩 Extending Elastic Beanstalk Linux platforms中的部分。

这意味着在 Amazon Linux 2 上,您可以创建 .platform/hooks/ 目录来托管具有相应 .sh 的 prebuildpredeploypostdeploy 文件夹脚本。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2014-11-09
    • 2015-07-28
    • 2015-06-30
    • 2018-04-16
    • 2017-07-26
    • 2012-10-25
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多