我最近启用了AppEngine的数据存储区管理员。我不明白如何将我的数据复制到另一个应用程序的说明。
注意:目标应用程序必须 启用remote_api并且必须包括 这个应用程序的ID在其中 HTTP_X_APPENGINE_INBOUND_APPID列表。
警告此应用程序的数据是 写。我们只能保证一个 数据存在时的一致复制 复制是只读的。注意:Blob (二进制数据)不会被复制。
要启用remote_api,我在app.yaml中包含以下内容:
builtins:
- remote_api: on
我不知道HTTP_X_APPENGINE_INBOUND_APPID是什么,谷歌搜索没有结果......任何想法?
答案 0 :(得分:7)
数据存储区复制功能目前仅适用于Python应用程序。
如果您使用的是GAE for Java,则必须执行以下步骤:
注意:假设您要从应用example1.appspot.com
复制到应用example2.appspot.com
,而您的Java WEB-INF
应用文件夹位于/Users/admin/src/main/webapp/WEB-INF
WEB-INF
文件夹中创建一个新文件:app.yaml
WEB-INF
文件夹中创建一个新文件:appengine_config.py
appcfg.py -A example2 update **/Users/admin/src/main/webapp/WEB-INF
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'])
答案 1 :(得分: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
奇怪但是在我这样做之后它起作用了。
答案 2 :(得分:0)
如果您使用GAE for Java,则必须执行此answer中的步骤。
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
中启用内置版。