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

时间:2012-12-26 10:46:21

标签: google-app-engine google-cloud-storage google-cloud-datastore database-backups

我正在尝试将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而无需为此编写自定义代码?

4 个答案:

答案 0 :(得分:21)

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

这就是我的所作所为:

  1. 通过网络界面创建存储桶(存储>云存储>存储浏览器>新存储桶)
  2. 将APPID@appspot.gserviceaccount.com添加为具有编辑权限的特权用户(权限>添加成员)
  3. 即使认为它是同一个项目的一部分,由于某种原因,我仍然需要将项目电子邮件添加为特权用户。

答案 1 :(得分:7)

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

确保以下内容属实:

  1. 您已创建BUCKET。如有必要,请使用gsutil之类的内容来创建存储桶。
    • gsutil mb gs://BUCKET
  2. 确保您的应用引擎服务帐户具有对BUCKET的WRITE访问权限。
  3. 现在使用表单/gs/BUCKET
  4. 开始备份

    如果您收到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)

请务必严格遵守此处的说明:

https://cloud.google.com/appengine/docs/standard/python/console/datastore-backing-up-restoring#restoring_data_to_another_app

要确保的事情:

  1. 向目标应用程序添加ACL权限
  2. 如果在向存储桶添加权限之前已创建备份,请查找备份并添加权限
  3. [PROJECT_ID] @ appspot.gserviceaccount.com 添加为具有编辑角色的源应用程序的成员
  4. 源应用程序中导入的路径为 / gs / bucket