如何安排已认证云功能的http调用?

时间:2019-10-10 15:26:20

标签: google-cloud-platform google-cloud-functions google-cloud-iam google-cloud-scheduler

我有一种不常用的云功能,它的冷启动延迟很慢。我想通过保持功能温暖来减少此延迟。此功能通常仅由应用引擎应用调用,因此它具有受限的Cloud Invoker权限。 Cloud Scheduler似乎是对函数进行ping操作以使其保持温暖的不错选择。看来直接调用该函数是必要的。即使通常的约定是使用pub / sub来调度函数,但不能同时触发http和pubsub来触发单个功能。

我将Cloud Scheduler作业设置如下,但运行时仍出现PERMISSION_DENIED错误。某些配置是否错误,还是Cloud Scheduler无法直接通过http调用身份验证功能?一种怀疑是,Audience参数实际上不是Cloud Functions期望的“ target_audience”参数,而是标准的“ aud”参数。

enter image description here

1 个答案:

答案 0 :(得分:2)

有几个潜在的问题需要调查:

1)您是否拥有服务帐户的iam.serviceAccounts.actAs权限?

Cloud Scheduler从服务帐户创建令牌时,需要权限iam.serviceAccounts.actAs。这是roles/iam.serviceAccountUser的角色。将此角色添加到Cloud Scheduler Service Agent中(注意单词Agent)。

2)Cloud Run是否允许该服务帐户权限?

除非已启用allUsers,否则需要将服务帐户添加到Cloud Run。 这是在“权限”选项卡下的“显示信息面板”中。您也可以使用--service-account命令行选项通过CLI添加此内容。