繁体   English   中英

从 App Engine 在 Google Compute Engine 中执行 python 脚本

[英]Executing a python script in Google Compute Engine from App Engine

我有一个 Python 脚本存储在计算引擎实例中。 我还在 Google App Engine 上部署了一个 web 应用程序。

我想要实现的是让用户在 web 应用程序界面上输入一些参数,并让它使用输入的参数在 Compute Engine 实例中执行脚本。

我的问题是:如何从 App Engine 访问 Compute Engine 实例并使用用户传入的参数执行脚本?

我认为这里有几个因素需要考虑:

  • 安全隐患:让 web 站点后端访问不同的主机以根据请求运行带有客户端定义参数的命令,很容易引入许多不值得处理的潜在漏洞。
  • 清理 Python 脚本中的一个或多个参数是必须的,您可以使用shlex.quote()执行此操作。
  • 通过 App Engine 的 SSH 在 VM 实例中运行脚本:
    • 使用Python 的 Google Cloud Client Library,您可以连接到给定的 GCE 实例并通过设置 OS Login并将此实例的roles/compute.osLogin授予运行 App Engine 应用程序的服务帐户来运行命令,如所述在本指南中(使用此示例)。
    • 否则,您可以尝试在实例中为此目的创建一个系统帐户,并允许其在其/etc/ssh/ssh_config中登录,并使用添加到该用户的~/ssh/.authorized_keys .authorized_keys 文件中的新 RSA 密钥和通用的 SSH 客户端库就像Paramiko连接到它的外部 IP 地址,假设它有一个。
    • 在这两种情况下,这都会为请求引入非常高的延迟,因为 SSH 会话通常需要 2 秒以上才能创建。
  • 作为可接受的延迟(并且可能更安全)的替代方案,您可以在 VM 中使用简单的 HTTPS 服务(如果需要,您可以在 Python 代码中检查正确的snakeoil证书)并设置一个带有类似长散列的 URL 路径(以及可选的非默认端口)由例如一个简单的 PHP 脚本处理,该脚本在通过excapeshellarg()在其$_POST[]超全局中传递参数变量后使用exec()运行结束脚本对其进行(重新)消毒。

暂无
暂无

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

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