我有一种不常用的云功能,它的冷启动延迟很慢。我想通过保持功能温暖来减少此延迟。此功能通常仅由应用引擎应用调用,因此它具有受限的Cloud Invoker权限。 Cloud Scheduler似乎是对函数进行ping操作以使其保持温暖的不错选择。看来直接调用该函数是必要的。即使通常的约定是使用pub / sub来调度函数,但不能同时触发http和pubsub来触发单个功能。
我将Cloud Scheduler作业设置如下,但运行时仍出现PERMISSION_DENIED错误。某些配置是否错误,还是Cloud Scheduler无法直接通过http调用身份验证功能?一种怀疑是,Audience参数实际上不是Cloud Functions期望的“ target_audience”参数,而是标准的“ aud”参数。
答案 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添加此内容。