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

Как использовать AppEngine Datastore Admin: копировать в другую функцию приложения

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

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

ПРЕДУПРЕЖДЕНИЕ Данные этих приложений доступен для записи. Мы можем гарантировать согласованной копии, когда данные Скопировано только для чтения. Примечание: Blobs (двоичные данные) не будут скопированы.

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

 builtins:
    - remote_api: on

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

4b9b3361

Ответ 1

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

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

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

  • Загрузить Python SDK https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
  • Запустите SDK Python
  • Создайте новый файл внутри папки WEB-INF: app.yaml
  • Создайте новый файл внутри папки WEB-INF: appengine_config.py
  • Разверните новую версию (запустите в терминале): appcfg.py -A example2 update **/Users/admin/src/main/webapp/WEB-INF
  • Перейдите к своему представлению администратора datastore 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

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

<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 -A appid update/yourappfolder/war/WEB-INF

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

Ответ 3

Если вы используете 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.