Как использовать администратор хранилища данных AppEngine: копировать в другое приложение - PullRequest
20 голосов
/ 17 декабря 2010

Я недавно включил Администратор хранилища данных AppEngine.Я не понимаю инструкции о том, как скопировать мои данные в другое приложение.

Примечание: целевое приложение должно включить remote_api и включить идентификатор этого приложения в свой список HTTP_X_APPENGINE_INBOUND_APPID.

ВНИМАНИЕ! Данные этого приложения доступны для записи.Мы можем гарантировать постоянное копирование, только когда копируемые данные доступны только для чтения.Примечание: BLOB-объекты (двоичные данные) копироваться не будут.

Чтобы включить remote_api, я включил в app.yaml следующее:

 builtins:
    - remote_api: on

Я понятия не имею, что HTTP_X_APPENGINE_INBOUND_APPIDесть, а поиск в Google не дает результатов .... есть идеи?alt text alt text

Ответы [ 3 ]

7 голосов
/ 03 сентября 2012

Функция копирования хранилища данных в настоящее время доступна только для приложений Python.

Если вы используете GAE для Java, вы должны выполнить следующие шаги:

Примечания. Предполагается, что вы копируете из приложения example1.appspot.com в приложение example2.appspot.com, а папка приложения Java WEB-INF находится в /Users/admin/src/main/webapp/WEB-INF

  1. Загрузить Python SDK https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
  2. Запустите Python SDK
  3. Создайте новый файл в папке WEB-INF: app.yaml
  4. Создайте новый файл в папке WEB-INF: appengine_config.py
  5. Разверните новую версию (запустите в терминале): appcfg.py -A example2 update **/Users/admin/src/main/webapp/WEB-INF
  6. Перейдите в example1 представление администратора хранилища данных и введите: datastore-admin.example2.appspot.com/_ah/remote_api

app.yaml:

application: example2
version: datastore-admin
runtime: python
api_version: 1


builtins:
- remote_api: on
- datastore_admin: on

appengine_config.py:

remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = (
    'HTTP_X_APPENGINE_INBOUND_APPID', ['example1'])
2 голосов
/ 16 июня 2014

Если вы используете Java и уже попробовали это и оно не работает (у меня возникла такая же проблема), я добавил:

<servlet>
    <display-name>Remote API Servlet</display-name>
    <servlet-name>RemoteApiServlet</servlet-name>
    <servletclass>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>RemoteApiServlet</servlet-name>
    <url-pattern>/remote_api</url-pattern>
</servlet-mapping>

в web.xml и обновился с помощью этой команды: appcfg.py -Appid update / yourappfolder / war / WEB-INF

Странно, но после того, как я это сделал, все заработало.

0 голосов
/ 23 октября 2014

Если вы используете GAE для Java, вы должны выполнить действия, описанные в этом ответе .

GAE теперь использует Python 2.7.Поэтому вам нужно создать app.yaml, как показано ниже.

application: example2
version: datastore-admin
runtime: python27
api_version: 1
threadsafe: true


builtins:
- remote_api: on

Инструмент datastore_admin должен включаться через консоль администратора, а не включаться встроенным в ваш app.yaml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...