有没有办法以编程方式从云功能获取运行时服务帐户的电子邮件?
我知道我可以“猜测”默认的 App Engine 帐户(因为它始终是 @appspot.gserviceaccount.com),但这不是我想要的。
我本来期待有一些环境变量 https://cloud.google.com/functions/docs/env-var或包含此信息的内容,但我找不到任何内容。
对于较旧的运行时(Node.js 8、Python 3.7 和 Go 1.11),您可以使用FUNCTION_IDENTITY
环境变量,如此处描述 https://cloud.google.com/functions/docs/env-var#nodejs_8_python_37_and_go_111.
Python 中的示例:
import os
service_account_email = os.environ.get('FUNCTION_IDENTITY')
对于较新的运行时,您需要查询元数据服务器 https://cloud.google.com/compute/docs/storing-retrieving-metadata,如本例所示:
import requests
def query_metadata(entry):
response = requests.get('http://metadata.google.internal/computeMetadata/v1/' + entry, headers={'Metadata-Flavor': 'Google'})
return response.content.decode("utf-8")
service_account_email = query_metadata('instance/service-accounts/default/email')
您还可以使用以下方法编写支持两种运行时(较旧和较新)的函数:
service_account_email = os.environ.get('FUNCTION_IDENTITY') or query_metadata('instance/service-accounts/default/email')
有关可用于查询信息的元数据端点的列表,检查这里 https://cloud.google.com/compute/docs/metadata/default-metadata-values.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)