Подтвердить что ты не робот

Невозможно выполнить резервное копирование хранилища данных GAE в ведро GS

Я пытаюсь выполнить резервное копирование хранилища данных 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'

Что я делаю неправильно? Возможно ли вообще резервное копирование всех данных (в том числе блочных файлов) на GS без написания специального кода для этого?

4b9b3361

Ответ 1

Я получил его для работы, добавив электронную почту учетной записи службы в качестве привилегированного пользователя с разрешением на запись.

Вот что я сделал:

  • Создайте ведро через веб-интерфейс (STORAGE > CLOUD STORAGE > Storage Browser > New Bucket)
  • Добавить [email protected] в качестве привилегированного пользователя с разрешением на редактирование (Разрешения > Добавить участника)

Даже подумал, что это часть одного и того же проекта, по какой-то причине мне все еще приходилось добавлять электронную почту проекта в качестве привилегированного пользователя.

Ответ 2

Я подозреваю, что ведро не существует, иначе у приложения нет права на запись в ведро.

Убедитесь, что верно следующее:

  • Вы создали BUCKET. Используйте что-то вроде gsutil, чтобы создать ведро, если это необходимо.
    • gsutil mb gs://BUCKET
  • Убедитесь, что учетная запись службы движка вашего приложения имеет WRITE-доступ к BUCKET.
  • Теперь запустите резервную копию, используя форму /gs/BUCKET

Если вы получили сообщение Bucket "/gs/BUCKET" is not accessible, то ваше ведро не существует, или [email protected] не имеет доступа к вашему ведру.

ПРИМЕЧАНИЕ: форма /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>[email protected]</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

Теперь сделанные шаги будут работать.

Ответ 3

Я просто провел время, борясь с этим сам. Спасибо @fejta за вашу помощь.

Я не мог понять этого. Я добавил моего пользователя в проект, подтвердил, что могу писать, вручную обновлял ACL (который не должен был требоваться),...

В конце концов, создав ведро из командной строки с помощью:

gsutil mb gs://BUCKET

вместо веб-пользовательского интерфейса работал у меня. Несколько ковшей, созданных до или после добавления пользователя в команду, приводили к "Недопустимое имя ковша"

Я обратился к нему с помощью:

/gs/BUCKET

Надеюсь, это поможет, Jacob

Ответ 4

Обязательно следуйте инструкциям здесь:

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

Что нужно сделать:

  • добавить ACL-разрешение в целевое приложение
  • Если резервная копия уже создана перед добавлением разрешения на ведро, найдите резервную копию и добавьте разрешение
  • добавить [PROJECT_ID] @appspot.gserviceaccount.com в качестве члена вашего исходного приложения с ролью редактора
  • путь для импорта в исходное приложение:/gs/bucket