如何解决从Cloud Tasks触发HTTP Cloud Function时出现PERMISSION_DENIED 403错误
我正在尝试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
。
您的教程中未提及。我想你没有这么做。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。