簡體   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