在云函数中获取环境变量

Get environment variables in a cloud function

我在 GCP 中有一个 Cloud Function,它在特定 project/environment 中查询 BigQuery。因为我有多个环境,所以我想获取云函数的当前 project/environment。这样我就可以在相应的环境中访问 BigQuery。当然,我可以硬编码 project_id,但我想以编程方式执行此操作。

根据Google 自动设置环境变量。但是当我尝试访问它们时,我找不到任何一个。

例如,我尝试了以下方法,它给了我 none 的环境。 Google.

列出的变量
print(os.environ)

有人设法在运行时访问环境变量吗?

这工作正常

import os
os.environ.get('GCP_PROJECT')

您是想从 get_env 到 return 吗?

def get_env():
    print(os.environ)
    if 'GCP_PROJECT' in os.environ:
       return os.environ['GCP_PROJECT']

这可能可以简化为以下一行:

environment = os.environ.get('GCP_PROJECT')

您所指的那些环境变量仅适用于 python 3.7,该页面的第二部分 (https://cloud.google.com/functions/docs/env-var#nodejs_10_and_subsequent_runtimes) 指出:

All languages and runtimes other than those mentioned in the previous section will use this more limited set of predefined environment variables.

这意味着 GCP_PROJECT 不再设置为 3.8(至少目前如此)。

对于 Python 3.8 有一个解决方法:

import google.auth

_, project_id = google.auth.default()
print(project_id)

您可以将 os.environ.get() 缩短为

from os import environ

db_user = environ["DB_USER"]
db_pass = environ["DB_PASS"]
db_name = environ["DB_NAME"]
db_host = environ["DB_HOST"]
db_port = environ["DB_PORT"] # if not used, default 3306 anyway

或使用更短的

from os import getenv

db_user = getenv("DB_USER")
...

您必须在编辑的第一步中添加变量(您在此处剪切的右侧的值):