在云函数中获取环境变量
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")
...
您必须在编辑的第一步中添加变量(您在此处剪切的右侧的值):
我在 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")
...
您必须在编辑的第一步中添加变量(您在此处剪切的右侧的值):