【问题标题】:Is it possible to deploy one GAE application from another GAE application?是否可以从另一个 GAE 应用程序部署一个 GAE 应用程序?
【发布时间】:2023-04-13 23:12:01
【问题描述】:

为了重新部署 GAE 应用程序,我目前必须在用于部署的系统上安装 GAE 部署工具。虽然此过程相对简单,但部署过程是手动过程,不能在防火墙后面工作,并且必须在将用于更新 GAE 应用程序的每台机器上安装部署工具。一个更理想的解决方案是,如果我可以从我之前部署的另一个 GAE 应用程序更新一个 GAE 应用程序。这将消除配置多个系统来部署应用程序的需要。

由于 GAE 部署工具是用 Python 编写的,并且 GAE App Engine 支持 Python,是否可以修改 appcfg.py 以在 GAE 中工作?用例是从 GitHub 或其他在线存储库中提取项目,并从另一个 GAE 应用程序更新一个 GAE 应用程序。如果这不可能,限制条件是什么?

【问题讨论】:

标签: python google-app-engine


【解决方案1】:

有可能吗?是的。 appcfg 用于更新应用程序的协议完全基于 HTTP,因此您绝对没有理由不能编写能够部署其他应用程序(或重新部署自身 - 自修改代码)的应用程序!您甚至可以重用 appcfg.py 的大部分内容。

容易吗?可能不是。您很可能需要了解相当一部分 appcfg 的内部结构,以及它用于上传新应用程序的 RPC——这不是一件容易的事。您还很可能需要将您的凭据存储在应用程序中 - 尽管您可以使用角色帐户,该帐户仅用于其部署的应用程序的管理员,以最大程度地降低风险。

【讨论】:

  • 那么:“...从 GitHub 或其他在线存储库中提取项目并更新一个 GAE 应用程序...”部分呢?虽然可以以编程方式从 VCS 中提取,但不能将文件存储到 GAE。因此,选择是将它们保存在内存中或存储它们。然后,您不仅需要调整 appcfg t 进行身份验证,还需要调整从 db 获取、转换为有意义的内容以及上传。
  • 您可以为新的应用程序版本一次获取并上传一个文件 - 无需获取和存储所有文件。也只需要上传修改过的文件,减少了所需的操作次数。
【解决方案2】:

一个限制条件可能是 python sdk 用于与 GAE 服务器通信的协议。如果它只使用 HTTP,你可能没问题。但如果是其他原因,您可能会很不走运,因为您无法直接从 GAE 中打开套接字。

【讨论】:

  • 它是 HTTP。 额外的文字要求让我的信息足够长
【解决方案3】:

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

我有一些,但最后我设法解决了它们。

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

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

无论如何,每台需要更新 GAE 的机器都应该有 SDK,只是为了看看它们所做的更改是否有效。

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

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

  2. 虽然我不太了解 Amazon EC2,但我认为您可以从那里做与 op 1 几乎相同的事情。

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

【讨论】:

    最近更新 更多