【问题标题】:Authorization failure when updating App Engine cron with service account使用服务帐号更新 App Engine cron 时授权失败
【发布时间】:2017-06-14 07:41:49
【问题描述】:

我一直在尝试编写 App Engine Python 应用并通过服务帐户对其进行管理(因为我正在使用我的 Google 帐户凭据不信任的机器进行开发)。

我已成功让应用部署新代码版本(提示:您不仅需要在 IAM 控制台中授予服务帐户 App Engine“部署者”和“服务管理员”权限,还可能还需要“管理员”--I最终给出了所有三个),但您还需要确保它对用于暂存和部署的 GCS 存储桶具有写入权限,名为 myapp.appspot.comstaging.myapp.appspot.com*),但我无法部署新的 cron.yaml。当我尝试时:

$ gcloud app deploy cron.yaml 
You are about to update the following configurations:
 - myapp/cron  (from [.../myapp/cron.yaml])
Do you want to continue (Y/n)?  

Updating config [cron]...failed.                                                                                    
ERROR: (gcloud.app.deploy) Server responded with code [403]:
  Forbidden Unexpected HTTP status 403.
  You do not have permission to modify this app (app_id=u'p~myapp').

如果我运行 gcloud app deploy--verbosity=debug,我可以看到它正在向 https://appengine.google.com/api/cron/update?app_id=myapp 发出请求并返回 403。

我已尝试授予服务帐户项目编辑者或所有者权限,但没有成功。 (虽然如果有必要,我会认为这是一个错误。)

*:在此问题中,我的项目 ID 的所有实例都已替换为 myapp

【问题讨论】:

  • 能不能像gcloud auth login这么简单?
  • 谢谢,但不行:我可以用服务帐号登录并推送应用程序的代码;它只是不推送的 cron 配置。
  • 您似乎发现了一个错误。我们使用旧后端进行配置文件部署([dos、dispatch、queue、index、cron].yaml),它并不总是能很好地与服务帐户配合使用。如果您在Cloud SDK issue tracker 上提交错误,您将获得有关该问题的更新。如果没有,我会确保在我们的私人追踪器上打开一个错误。 /App Engine 谷歌员工

标签: google-app-engine google-cloud-platform


【解决方案1】:

为了部署新的cron.yaml 文件,您要添加到服务帐户的特定角色是 Cloud Scheduler 管理员:

https://cloud.google.com/appengine/docs/standard/python/granting-project-access#deploying_using_iam_roles

【讨论】:

  • 我拥有除以下之外的其余权限。 Cloud Scheduler > Cloud Scheduler 管理员角色:上传 cron.yaml 文件的权限。添加这个对我有用。
【解决方案2】:

尴尬的是,这是用户错误,但其他人可能会遇到它,所以值得我写出来。

在 GCP Console 上的 IAM 用户界面中,您可以通过与下拉菜单交互来添加和删除帐户中的角色。因为这个菜单包含许多类别的角色,所以它很长。您可能没有注意到菜单底部有一个保存按钮,如果您没有看到这个按钮,您将不会看到任何迹象表明,当您通过单击菜单项添加和删除角色时,会看到这些角色会从菜单顶部的当前选定角色列表中添加和删除,实际上并没有将任何内容保存到后端。

添加项目“所有者”权限足以授予所需的 cron-push 权限——如果您保存它!

【讨论】:

  • 我没有看到,但是没有比Project更窄的使用范围吗? -> Owner
  • 我也遇到了这个。我没有看到任何地方提到您需要项目所有者权限。如果将其添加到错误日志中会很好。其他权限错误似乎提供了有关上下文的线索。
  • @David 提供的答案应标记为正确答案。不需要所有者。
猜你喜欢
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
相关资源
最近更新 更多