簡體   English   中英

查看是否部署在雲端

[英]Check whether deployed in cloud

我有一個 python 程序在 Docker 容器中運行。 我的身份驗證方法取決於容器是否部署在 GCP 中。 理想情況下,我會有這樣的 function:

def deployment_environment():
    # return 'local' if [some test] else 'cloud'
    pass

檢查這個最慣用的方法是什么? 我的直覺是使用名為[APP_NAME]_DEPLOYMENT_ENVIRONMENT的環境,它可以通過任何一種方式設置——但要確保設置正確有太多活動部件。 有沒有可以幫我檢查的 GCP 包/工具?

我有兩種解決方案:

隨着環境

部署時設置環境變量,如下所示:

gcloud functions deploy [function-name] --set-env-vars ENV_GCP=1

然后,在您的代碼中:

import socket


def deployment_environment():
    return 'cloud' if ('ENV_GCP' in os.environ) else 'local'
優點 缺點
意圖很明確,設置和使用 env 更多地參與
地道的 依賴於用戶正確設置 env

通過 Python,與 Sockets

import socket


def deployment_environment():
    try:
        socket.getaddrinfo('metadata.google.internal', 80)
        return 'cloud'
    except socket.gaierror:
        return 'local'
優點 缺點
更簡潔 不正確地使用try/catch
不依賴於設置環境的額外步驟 對套接字 package 和 GCP 運行時合約的依賴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM