繁体   English   中英

部署到 Elastic Beanstalk 后如何运行 Python 脚本

[英]How to Run a Python Script After Deploying to Elastic Beanstalk

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

我想说你有两个选择:

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

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

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

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

根据自定义平台挂钩AWS 文档:

警告

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

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

这意味着,在亚马逊的Linux 2,您可以创建.platform/hooks/目录下的主机预生成预先部署postdeploy文件夹对应.SH脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM