能否从一个GAE应用程序部署另一个GAE应用程序?

3
为了重新部署GAE应用程序,我目前必须在用于部署的系统上安装GAE部署工具。虽然这个过程相对简单,但部署过程是一个手动过程,无法在防火墙后面工作,并且必须在每台用于更新GAE应用程序的机器上安装部署工具。更理想的解决方案是,如果我可以从先前部署的另一个GAE应用程序中更新GAE应用程序。这将消除需要配置多个系统来部署应用程序的需求。
由于GAE部署工具是用Python编写的,而GAE应用程序引擎支持Python,因此是否可以修改appcfg.py以在GAE内部工作?使用情况是从GitHub或其他在线存储库中提取项目并从另一个GAE应用程序更新一个GAE应用程序。如果这不可能,那么限制性约束是什么?

2
我禁不住想到这个:http://www.penny-arcade.com/comic/2009/5/18/ - Kip
3个回答

5

这是可能的吗?是的。Appcfg用于更新应用程序的协议完全基于HTTP,因此您完全可以编写一个能够部署其他应用程序(或重新部署自身-自修改代码)的应用程序!您甚至可以重用appcfg.py的大部分内容来实现它。

这容易吗?可能不是。您很可能需要了解appcfg的内部机制以及它使用的RPC来上传新应用程序-这不是一项简单的任务。您还需要在应用程序中存储自己的凭据-虽然您可以使用仅针对其部署应用程序的管理员角色帐户来最小化风险。


那么关于“从GitHub或其他在线存储库中拉取项目并更新一个GAE应用程序”的部分呢?虽然可以通过编程方式从版本控制系统中提取,但无法将文件存储到GAE中。因此,选项是将它们保留在内存中或存储它们。然后,您不仅需要调整appcfg t以进行身份验证,还需要进行从数据库的提取、转换为有意义内容和上传的操作。 - OscarRyz
您可以一次获取并上传一个文件到新的应用程序版本 - 没有必要获取和存储所有文件。只需要上传修改过的文件,这也减少了所需操作的数量。 - Nick Johnson

2

一个限制条件可能是Python SDK与GAE服务器通信所使用的协议。如果只使用HTTP,那么你可能没问题。但如果使用其他协议,则可能会失败,因为你无法直接从GAE内部打开套接字。


1
这是HTTP协议。 - Nick Johnson

0

您在防火墙后更新时遇到了什么问题?

我也遇到了一些问题,但最终我设法解决了它们。

关于您的问题,限制是您不能将文件写入GAE应用程序,因此即使您可能从VCS拉取,也无法编写这些已拉取的文件。

因此,您首先必须从GAE外部进行更新。

无论如何,需要更新GAE的每台机器都应该有SDK,以便查看更改是否有效。

所以,如果您真的想这样做,您有两个选择:

  1. 托管自己的“更新程序”站点并在那里安装SDK,然后当您想要更新时登录到您的站点(或运行脚本)并进行远程更新。

  2. 虽然我不太了解Amazon EC2,但我认为您可以从那里执行与选项1几乎相同的操作。

最后,我认为必须始终键入更新密码。(您可以拥有App引擎的SDK并修改它,因为它是开源的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接