我正在尝试使用云任务来触发云函数教程,但当我尝试运行创建的任务时,我遇到了一个错误:
Status code: 7 (PERMISSION_DENIED)
Reason for retrying: PERMISSION_DENIED(7): HTTP status code 403
我已经创建了一个具有Cloud Functions Invoker
角色的新服务帐户。并修改了我的代码,以便使用以下服务帐户创建任务:
const task = {
httpRequest: {
httpMethod: protos.google.cloud.tasks.v2.HttpMethod.POST,
url,
oidcToken: {
serviceAccountEmail: 'cloud-tasks-client@my-actual-project.iam.gserviceaccount.com',
},
该任务是从云函数创建的。
我还修改了目标云功能访问控制,以便角色为Cloud Functions Invoker
的allAuthenticatedUsers
可以访问它。我可以使用云功能控制台测试触发该功能,不会出现任何错误。
我错过了什么?有什么想法吗?
我刚刚想明白了。我使用ingress-settings=internal-only
部署了该功能。认为云任务将被视为一项内部服务。我不得不将其更改为默认的all
,然后它就工作了。internal-and-gclb
也不起作用。
转到IAM页面,找到云任务服务代理服务帐户:service-<projectNumber>@gcp-sa-cloudtasks.iam.gserviceaccount.com
,并在其上授予角色roles/iam.serviceAccountTokenCreator
。
教程中没有提到。我猜你没有这么做。