13

ここで説明されているように、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

4 に答える 4

21

書き込み権限を持つ特権ユーザーとしてサービス アカウントの電子メールを追加することで、機能するようになりました。

これが私がしたことです:

  1. Web インターフェイス経由でバケットを作成します (STORAGE > CLOUD STORAGE > Storage Browser > New Bucket)。
  2. 編集権限を持つ特権ユーザーとして APPID@appspot.gserviceaccount.com を追加します ([権限] > [メンバーの追加])。

同じプロジェクトの一部であるにもかかわらず、何らかの理由でプロジェクトの電子メールを特権ユーザーとして追加する必要がありました。

于 2014-07-19T06:42:19.133 に答える
7

バケットが存在しないか、App Engine にバケットへの書き込み権限がない可能性があります。

以下が正しいことを確認してください。

  1. を作成しましBUCKETた。必要に応じて、 gsutilなどを使用してバケットを作成します。
    • gsutil mb gs://BUCKET
  2. App Engine サービス アカウントに への書き込みアクセス権があることを確認してくださいBUCKET
  3. フォームを使用してバックアップを開始します/gs/BUCKET

Bucket "/gs/BUCKET" is not accessibleメッセージが表示された場合、バケットが存在しないか、APP_NAME@appspot.gserviceaccount.comバケットにアクセスできません。

注: フォームは/gs/BUCKET. 以下は間違っています: BUCKETgs://BUCKETgs/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

これで、上記の手順が機能します。

于 2013-01-09T09:39:17.850 に答える
0

私はこれと格闘するのにしばらく費やしました。@fejta さん、ご協力ありがとうございます。

私はこれを理解できませんでした。ユーザーをプロジェクトに追加し、書き込みができることを確認し、ACL を手動で更新しました (これは必須ではありませんでした)...

最後に、コマンドラインから次の方法でバケットを作成します。

gsutil mb gs://BUCKET

Web ユーザー インターフェイスの代わりに機能しました。ユーザーをチームに追加する前または後に作成された複数のバケットはすべて、「無効なバケット名」という結果になりました

私はそれに対処しました:

/gs/BUCKET
于 2013-01-31T00:34:16.377 に答える