无法将GAE应用程序数据存储备份到GS存储桶

tux*_*yer 13 google-app-engine database-backups google-cloud-storage google-cloud-datastore

:这里所描述我想备份数据存储GAE对GS桶https://developers.google.com/appengine/docs/adminconsole/datastoreadmin#Backup_And_Restore.我试图在表单中提供存储桶名称:

bucket 
/gs/bucket
/gs/bucket/path
Run Code Online (Sandbox Code Playgroud)

但不是它的工作.每次收到消息时:

There was a problem kicking some off the jobs/tasks:
Invalid bucket name: 'bucket'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?是否有可能将所有数据(包括blob文件)备份到GS而无需为此编写自定义代码?

And*_*ter 21

我通过添加服务帐户电子邮件作为具有写入权限的特权用户来实现它.

这是我做的:

  1. 通过Web界面创建存储桶(存储>云存储>存储浏览器>新存储桶)
  2. 将APPID@appspot.gserviceaccount.com添加为具有编辑权限的特权用户(权限>添加成员)

即使认为它是同一个项目的一部分,由于某种原因,我仍然必须将项目电子邮件添加为特权用户.


fej*_*jta 7

我怀疑存储桶不存在,否则app引擎无权写入存储桶.

确保以下内容属实:

  1. 你创造了BUCKET.如有必要,可以使用gsutil之类的东西来创建存储桶.
    • gsutil mb gs://BUCKET
  2. 确保您的应用引擎服务帐户具有WRITE访问权限BUCKET.
  3. 现在使用表单开始备份 /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.
Run Code Online (Sandbox Code Playgroud)

查找如下条目:

<Entry>
  <Scope type="UserByEmail">
    <EmailAddress>APP_NAME@appspot.gserviceaccount.com</EmailAddress>
  </Scope>
  <Permission>WRITE</Permission>
</Entry>
Run Code Online (Sandbox Code Playgroud)

如果您没有看到,可以按以下方式添加一个:

gsutil getacl gs://BUCKET > acl.xml
vim acl.xml  # Or your favorite editor
# Add the xml above
gsutil setacl acl.xml gs://BUCKET
Run Code Online (Sandbox Code Playgroud)

现在上面的步骤将起作用.