问题描述
我正在尝试Using Cloud Tasks to trigger Cloud Functions教程,但是当我尝试运行创建的任务时出现错误:
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 Function访问控制,因此allAuthenticatedUsers
可以以角色Cloud Functions Invoker
对其进行访问。
我可以使用云功能控制台测试触发该功能,而没有任何错误。
我想念什么?有什么想法吗?
解决方法
我刚刚弄清楚了。我使用ingress-settings=internal-only
部署了该功能。认为云任务将被视为内部服务。我必须将其更改为默认的all
,然后它才起作用。 internal-and-gclb
也不起作用。
转到IAM页面,找到Cloud Task Service代理服务帐户:service-<projectNumber>@gcp-sa-cloudtasks.iam.gserviceaccount.com
并为其授予角色roles/iam.serviceAccountTokenCreator
。
您的教程中未提及。我想你没有这么做。