Google Cloud功能-调用Google App Engine时如何进行身份验证

问题描述

我们在App Engine标准Python 2.7中有一个应用程序。我们在这个项目中也有一个Cloud Function。

我们想对App Engine应用程序中的资源之一进行HTTP POST请求。当前,我们在Cloud Functions中具有以下代码

url = "https://project-name.appspot.com/urlidentifier"

data_obj = {
    'sample' : 'data'
}

data_json = json.dumps(data_obj)
data_encode = urllib.parse.urlencode(data_json).encode("utf-8")

req =  request.Request(url,data=data_encode) # this will make the method "POST"
resp = request.urlopen(req)

Python 2.7中的应用程序使用Firebase用户身份验证进行身份验证。有关详细信息,请参见here

我们的问题-由Cloud Function(而非用户)启动HTTP POST时,我们如何强制对应用程序资源进行身份验证。应用程序资源(https://project-name.appspot.com/urlidentifier)是项目中的功能。我们可以使用服务帐户吗?如果是,我们该怎么做?

Cloud Function和应用程序都属于同一个项目。

解决方法

您可以通过该功能的现有service identity进行身份验证,请参阅:

https://cloud.google.com/run/docs/authenticating/service-to-service

(此文档适用于Cloud Run,但适用于Cloud Functions的模式相同。您需要将App Engine调用者角色赋予该功能的服务帐户)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...