Загрузка файлов локально с помощью GSUtil

Кто-нибудь знает хороший способ загрузить набор файлов локально в эмулируемом облачном хранилище Java dev_appserver.

Это не сработало:

$ gsutil rsync gs://mybucket http://localhost:8888/mybucket
InvalidUrlError: Unrecognized scheme "http".

Я открыт для предложений по:

  1. Как загрузить кучу файлов локально (желательно через gsutil)
  2. Как указать мой локальный dev_appserver на неэмулируемое ведро в Google

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

1 ответ

"Как указать мой локальный dev_appserver на неэмулируемое ведро в Google": все это явно не задокументировано, но оно реализовано в dev_appserver а также cloudstorage,

Чтобы проверить, что я говорю, сначала svn checkout http://appengine-gcs-client.googlecode.com/svn/trunk/python gcs-client чтобы получить исходный код cloudtorage на свой компьютер (вам необходимо установить subversion если у вас его еще нет, но это тоже бесплатно:-).

Затем, cd gcs-client/src/cloudstorage/ и посмотри на storage_api.py, В самой первой функции _get_storage_api Строка документации говорит:

On dev appserver, this instance by default will talk to a local stub
unless common.ACCESS_TOKEN is set. That token will be used to talk
to the real GCS.

Итак, посмотрите на common.py и снова в первой функции, set_access_token, вот увидишь:

Аргументы: access_token: вы можете получить его, запустив 'gsutil -d ls' и скопировав str после 'Bearer'.

Так что вы - в каждой записи в вашем приложении (лучший в appengine_config.py в корневой каталог), импорт cloudstorage "s common модуль, тогда **, если и только если вы на dev_appserver[*] вызов

common.set_access_token('whatever_the_token')

используя в качестве аргумента строку, которую вы получите, запустив 'gsutil -d ls', сразу после Bearer то есть среди всего прочего вы заметите что-то вроде (подделка и способ сокращения действительного значения...:-):

Bearer xy15.WKXJQEzXPQQy2dt7qK9\r\n

в этом случае вы будете звонить

common.set_access_token('xy15.WKXJQEzXPQQy2dt7qK9')

[*] много способов узнать, если вы находитесь на dev_appserver Например, см. GAE: код Python, чтобы проверить, нахожусь ли я на dev_appserver или развернут в appspot.

Другие вопросы по тегам