小编Mar*_*rko的帖子

无法从 GCP 调度程序调用 Google Cloud Function

我一直在尝试--runtime nodejs8 --trigger-http从 GCP 调度程序调用 GCP 函数 ( ),两者都位于同一个项目中。我只能使它工作,如果我通过将allUsers成员添加到函数权限来授予未经身份验证的访问权限,并将Cloud Functions-Invoker角色应用于它。但是,当我仅将调度程序的服务帐户用作 时Cloud Functions-Invoker,我会收到 PERMISSION DENIED 错误。

我创建了一个 hello world 示例,以详细展示我的设置的样子。

  1. 我设置了一个服务帐户:

gcloud iam service-accounts create scheduler --display-name="Task Schedule Runner"

  1. 设置角色:
svc_policy.json:
{
    "bindings": [
      {
        "members": [
          "serviceAccount:scheduler@mwsdata-1544225920485.iam.gserviceaccount.com"
        ],
        "role": "roles/cloudscheduler.serviceAgent"
      }    
    ]
  }

gcloud iam service-accounts set-iam-policy scheduler@mwsdata-1544225920485.iam.gserviceaccount.com svc_policy.json  -q
Run Code Online (Sandbox Code Playgroud)
  1. 部署云功能:

gcloud functions deploy helloworld --runtime nodejs8 --trigger-http --entry-point=helloWorld

  1. 将服务帐户作为成员添加到函数中:

gcloud functions add-iam-policy-binding helloworld --member serviceAccount:scheduler@mwsdata-1544225920485.iam.gserviceaccount.com --role roles/cloudfunctions.invoker

  1. 创建调度程序作业:

gcloud beta scheduler …

node.js google-cloud-platform google-cloud-functions google-cloud-scheduler

9
推荐指数
3
解决办法
7618
查看次数