0

我在快递中创建了一个项目

const express = require('express');
const app = express();

const PORT = 5555;


app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

app.get('/tr', (req, res, next) => {
    res.json({ status: 200, data: 'tr' })
});

app.get('/po', (req, res, next) => {
    res.json({ status: 200, data: 'po' })
});

module.exports = {
    app
};

部署在名为my-transaction的云函数上

我正在安排 google clound 给 url 之类的

http://url/my-transaction/po

当我在没有身份验证的情况下部署时调度程序运行作业成功,但是当我进行身份验证时它失败。

如果我创建如下示例项目,则类似

exports.helloHttp = (req, res) => {
    res.json({ status: 200, data: 'test hello' })
  };

并部署与上面相同的配置,并使用它工作的身份验证。

唯一的区别是最后一个函数名称类似于入口点的意思,而上面的入口点是具有不同端点的应用程序。

任何帮助,不胜感激谢谢

4

1 回答 1

0

这是因为您需要在 cloud Scheduler 上的 http 请求中添加身份验证信息

首先,您需要创建一个角色为 Cloud Functions Invoker的服务帐户

创建服务帐户后,您可以看到该帐户关联了一封电子邮件,例如:

cfinvoker@fakeproject.iam.gserviceaccount.com

之后,您可以按照以下步骤使用身份验证信息创建新的调度程序作业:

  1. 选择目标http
  2. 写url(云函数url)
  3. 点击“显示更多”
  4. 选择 Auth 标头 > 添加 OIDC 令牌
  5. 填写服务帐户的完整电子邮件地址

这个新的作业调度程序将发送带有身份验证信息的 http 请求,以成功执行您的云功能。

于 2020-04-29T15:55:18.023 回答