我正在尝试将GAE数据存储备份到GS存储区,如下所述:https://developers.google.com/appengine/docs/adminconsole/datastoreadmin#Backup_And_Restore。我试图在表单中提供存储桶名称:
bucket
/gs/bucket
/gs/bucket/path
但不起作用。 每次我收到消息:
There was a problem kicking some off the jobs/tasks:
Invalid bucket name: 'bucket'
我做错了什么?是否有可能将所有数据(包括blob文件)备份到GS而无需为此编写自定义代码?
答案 0 :(得分:21)
我通过添加服务帐户电子邮件作为具有写入权限的特权用户来实现它。
这就是我的所作所为:
即使认为它是同一个项目的一部分,由于某种原因,我仍然需要将项目电子邮件添加为特权用户。
答案 1 :(得分:7)
我怀疑存储桶不存在,否则app引擎无权写入存储桶。
确保以下内容属实:
BUCKET
。如有必要,请使用gsutil之类的内容来创建存储桶。
gsutil mb gs://BUCKET
BUCKET
的WRITE访问权限。
APP_NAME
@ appspot.gserviceaccount.com。can edit
访问权限将服务帐户添加到project team。/gs/BUCKET
如果您收到Bucket "/gs/BUCKET" is not accessible
消息,则您的存储桶不存在,或APP_NAME@appspot.gserviceaccount.com
无法访问您的存储桶。
注意:表单为/gs/BUCKET
。以下是错误的: BUCKET , gs:// BUCKET , gs / BUCKET 等。
使用以下命令检查存储桶是否具有正确的权限:
gsutil getacl gs://BUCKET # Note the URI form here instead of a path.
查找以下条目:
<Entry>
<Scope type="UserByEmail">
<EmailAddress>APP_NAME@appspot.gserviceaccount.com</EmailAddress>
</Scope>
<Permission>WRITE</Permission>
</Entry>
如果您没有看到,可以按以下方式添加一个:
gsutil getacl gs://BUCKET > acl.xml
vim acl.xml # Or your favorite editor
# Add the xml above
gsutil setacl acl.xml gs://BUCKET
现在上述步骤将有效。
答案 2 :(得分:0)
我只是花了一些时间与自己搏斗。感谢@fejta的帮助。
我无法弄清楚这一点。我已经将我的用户添加到项目中,验证我可以编写,手动更新ACL(这不应该是必需的),...
最后,通过命令行创建一个存储桶:
gsutil mb gs://BUCKET
而不是为我工作的Web用户界面。在将用户添加到团队之前或之后创建的多个存储桶都会导致“无效的存储桶名称”
我用:
解决了这个问题/gs/BUCKET
答案 3 :(得分:0)
请务必严格遵守此处的说明:
要确保的事情: