Google cloud functions 权限被拒绝403从云任务触发HTTP云功能时出错

Google cloud functions 权限被拒绝403从云任务触发HTTP云功能时出错,google-cloud-functions,service-accounts,google-cloud-tasks,Google Cloud Functions,Service Accounts,Google Cloud Tasks,我正在尝试教程,但当我尝试运行创建的任务时,出现了一个错误: Status code: 7 (PERMISSION_DENIED) Reason for retrying: PERMISSION_DENIED(7): HTTP status code 403 我已经使用云函数调用者角色创建了一个新的服务帐户。 并修改了我的代码,以便使用此服务帐户创建任务: const任务={ httpRequest:{ httpMethod:protos.google.cloud.tasks.v2.httpM

我正在尝试教程,但当我尝试运行创建的任务时,出现了一个错误:

Status code: 7 (PERMISSION_DENIED)
Reason for retrying: PERMISSION_DENIED(7): HTTP status code 403
我已经使用
云函数调用者
角色创建了一个新的服务帐户。 并修改了我的代码,以便使用此服务帐户创建任务:

const任务={
httpRequest:{
httpMethod:protos.google.cloud.tasks.v2.httpMethod.POST,
网址,
奥德克特肯:{
serviceAccountEmail:'云任务-client@my-实际project.iam.gserviceaccount.com',
},
任务是从云函数创建的

我还修改了目标云函数访问控制,这样就可以通过
allAuthenticatedUsers
角色
Cloud Functions Invoker
访问它。 我可以使用CloudFunctions控制台测试并触发该函数,不会出现任何错误


我错过了什么?有什么想法吗?

转到IAM页面,找到云任务服务代理服务帐户:
服务-@gcp sa cloudtasks.IAM.gserviceaccount.com
并在上面授予角色
角色/IAM.serviceCountTokenCreator


你的教程中没有提到这一点。我猜你没有这么做。

我刚刚找到了它。我使用
ingres settings=internal only
部署了该功能。我认为云任务将被视为一项内部服务。我不得不将其更改为默认的
all
,然后它就工作了。
internal和gclb
也没有工作。

感谢您的回复,但我刚刚找到了真正的原因。因此,我不需要对IAM进行此更改。我将此问题推送到云运行终结点。我在多层prod canary etc设置中部署了多个相同的应用程序,并且仅将一个入口设置为“仅内部”。重申导入您的答案f或者其他旅行者,首先检查您的服务入口!显然,不言而喻,这样做也会使服务向公众公开。