如何使用AppEngine的数据存储区管理员:复制到另一个应用程序功能

时间:2010-12-17 05:26:36

标签: google-app-engine

我最近启用了AppEngine的数据存储区管理员。我不明白如何将我的数据复制到另一个应用程序的说明。

  

注意:目标应用程序必须   启用remote_api并且必须包括   这个应用程序的ID在其中   HTTP_X_APPENGINE_INBOUND_APPID列表。

     

警告此应用程序的数据是   写。我们只能保证一个   数据存在时的一致复制   复制是只读的。注意:Blob   (二进制数据)不会被复制。

要启用remote_api,我在app.yaml中包含以下内容:

 builtins:
    - remote_api: on

我不知道HTTP_X_APPENGINE_INBOUND_APPID是什么,谷歌搜索没有结果......任何想法? alt text alt text

3 个答案:

答案 0 :(得分:7)

数据存储区复制功能目前仅适用于Python应用程序。

如果您使用的是GAE for 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
  7. 的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中启用内置版。