2017-10-08 86 views
1

我爲Google Compute Engine虛擬機實例設置了一個靜態外部IP地址,當我將SSH連入計算機時,我的出站請求(例如curl canhazip.com)靜態外部IP,但是當我從控制檯啓動Google Cloud Shell或部署應用程序時(例如,通過gcloud應用程序部署的Python應用程序,IP地址不同,有關如何使其一致性的任何想法?需要在app.yaml中指定的東西。換句話說,如果我想部署一個看起來像這樣的Python應用程序:在谷歌計算引擎上設置靜態出站/源IP地址

import requests 

print('requesting...') 
res = requests.get("http://ip.jsontest.com/") 
print(res.text) 

我將如何配置它總是返回我已經設置相同的靜態外部IP up?

回答

1

Cloud Shell和App Engine都沒有直接網絡訪問權限。

  • 對於Cloud Shell,有limitations to network access。由於Cloud Shell是ephemeral instance,因此您無法對使用的IP地址等內容進行進一步控制。

  • App Engine Standard在沒有網絡訪問權限的情況下運行沙盒環境。應用程序必須使用Sockets or URLFetch API來提出外部請求。 python運行時補丁套接字和urllib,以便大多數python代碼可以使用這些API,而無需進一步修改。

如果您需要傳出連接的一致源IP地址,則可能需要尋找egress NAT gateway。但是,此設置也不適用於雲端Shell或App Engine標準。