Загрузка файлов локально с помощью GSUtil
Кто-нибудь знает хороший способ загрузить набор файлов локально в эмулируемом облачном хранилище Java dev_appserver.
Это не сработало:
$ gsutil rsync gs://mybucket http://localhost:8888/mybucket
InvalidUrlError: Unrecognized scheme "http".
Я открыт для предложений по:
- Как загрузить кучу файлов локально (желательно через gsutil)
- Как указать мой локальный 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.