繁体   English   中英

获取云端环境变量 function

[英]Get environment variables in a cloud function

我在 GCP 中有一个 Cloud Function,可以在特定项目/环境中查询 BigQuery。 由于我有多个环境,我想获取云 function 的当前项目/环境。 这样我就可以在相应的环境中访问 BigQuery。 当然,我可以对 project_id 进行硬编码,但我想以编程方式执行此操作。

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

例如,我尝试了以下方法,但没有给我任何环境。 Google 列出的 var。

print(os.environ)

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

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

除上一节中提到的语言和运行时之外的所有语言和运行时都将使用这组更有限的预定义环境变量。

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

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

import google.auth

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

这工作正常

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

您的意思是从get_env返回吗?

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

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

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

您可以将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

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

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM