获取运行云功能的运行时服务帐户

Die*_*roz 4 python google-cloud-functions

有没有办法以编程方式从云功能获取运行时服务帐户的电子邮件?

运行时服务帐户选项

我知道我可以“猜测”默认的 App Engine 帐户(因为它始终是 <project-id>@appspot.gserviceaccount.com),但这不是我想要的。

我期望有一些环境变量或包含此信息的内容,但我找不到任何内容。

Die*_*roz 9

对于较旧的运行时(Node.js 8、Python 3.7 和 Go 1.11),您可以使用FUNCTION_IDENTITY环境变量,如此处所述

Python 中的示例:

import os
service_account_email = os.environ.get('FUNCTION_IDENTITY')
Run Code Online (Sandbox Code Playgroud)

对于较新的运行时,您需要查询元数据服务器,如下例所示:

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')
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下方法编写支持两种运行时(较旧和较新)的函数:

service_account_email = os.environ.get('FUNCTION_IDENTITY') or query_metadata('instance/service-accounts/default/email')
Run Code Online (Sandbox Code Playgroud)

有关可用于查询信息的元数据端点的列表,请查看此处