谷歌云应用引擎部署失败

8

我按照谷歌云控制台右侧的教程部署了一个 Ruby 项目,在克隆演示源代码后,尝试使用命令 gcloud app deploy --project fireflywytwyt 进行部署,但是它向我抛出以下错误(省略了不必要的日志):

...
8820c09c846d: Image already exists
64fc2a97cff9: Image already exists
43f58141118b: Image already exists
575d6bde5efe: Image already exists
272ffca85019: Image already exists
90a62e26e551: Image already exists
a51047f764d0: Image already exists
2c8496abe349: Image already exists
6e04b82f3d6e: Image already exists
latest: digest: sha256:406115ccfa93d7cef120b2683f75c9f5b3821d8a11b8afbca7781240c293313e size: 72372
DONE
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Updating service [default]...failed.                                                                                                                                             
ERROR: (gcloud.app.deploy) Error Response: [7] The user fireflywytwyt@appspot.gserviceaccount.com must have permission to read the image at us.gcr.io/fireflywytwyt/appengine/def
ault.20161124t144728:latest

请注意以下错误:
用户fireflywytwyt@appspot.gserviceaccount.com必须有权限读取us.gcr.io/fireflywytwyt/appengine/def中的图像。
看起来我的帐户无法访问Docker注册表,如何解决?
2个回答

7
您需要为服务用户(在您的情况下是fireflywytwyt@appspot.gserviceaccount.com)授予编辑器角色。操作步骤如下:
  • 打开Cloud平台控制台中的IAM和管理页面。

  • 选择您的项目并点击“继续”。

  • 点击“添加成员”按钮。
  • 输入服务账户的电子邮件地址,选择编辑器角色并点击“添加”。

谢谢您的回复,但仍然不起作用。我将fireflywytwyt@appspot.gserviceaccount.com添加为项目所有者(可能是最高权限),但问题仍然存在。 - TangMonk
尝试使用编辑器角色,权限存在错误。 - husayt
对我来说,编辑角色已经被分配了,但是账户缺少一个关键部分。在服务账户页面生成后,它就可以正常工作了。 - Joe Dreimann
可以确认这个答案对我们有效。请确保将服务账户添加到 IAM 中,分配项目编辑器权限作为用户。 - jotaen
5
这种方法会给服务账号用户授予比所需权限更多的权限。 - Grey Vugrin

-4

为您的服务账户授予适当的权限:

gcloud 项目 add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:codelab@${PROJECT_ID}.iam.gserviceaccount.com \ --role roles/owner


6
因为这会使服务账户拥有项目的权限,可能会造成很大的损失,所以被投了反对票。 - Martin Seeler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接