1

AppEngine の「別のアプリにコピー」機能を使用しようとしていますが、エラーが発生し続けます。

Fetch to http://datastore-admin.moo.appspot.com/_ah/remote_api failed with status 302

これは Java アプリ用ですが、デフォルトの Python ランタイムの設定に関する指示に従いました。

認証の問題であり、remote_api への呼び出しが Google ログイン ページにリダイレクトされていることは 95% 確信しています。どちらのアプリも、認証メカニズムとして Google Apps を使用します。また、認証に Google アカウントを使用する 3 番目のアプリとの間でコピーを試みました。

ノート:

  • 私がログインするユーザー アカウントは、3 つのアプリすべての所有者です。これは Google Apps アカウントです (明らかでない場合)。
  • 私はGmailアカウントを持っています。これは3つのアプリすべての所有者でもあります. それを使用して管理コンソールにログインすると、データストア管理コンソールをクリックしてもまったく表示されません。
  • 詳細を入力した後、コマンドラインから remote_api を問題なく使用できます
  • Python remote_api 組み込みと Java 組み込みの両方で試しました。

これに関する同様の質問/ブログ投稿を見つけました。そのうちの 1 つは、ブラウザーからログインし、その後取得した ACSID Cookie を手動で送信する必要がありました。明らかに、ここではできません。

4

1 に答える 1

2

OK、これでうまくいったと思います。

この 2 つの appID を「source」と「dest」と呼びます。

(ご存じのとおり) データストア管理者を有効にするには、ドキュメントに記載されているように、app.yaml および appengine_config.py ファイルを含む Python プロジェクトをアップロードする必要があります。

ドキュメントを読み間違えたか、エラーがあります。.yaml の「appID」は、DS 管理を有効にするためにアップロードするアプリ ID である必要があります。

appengine_config ファイル内の他の appID、具体的には次の行: remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = ( 'HTTP_X_APPENGINE_INBOUND_APPID', ['appID'])

「ソース」の appID である必要があります。ID は、DS コピー操作でのデータの送信元のアプリ ID です。

この行により、ソース appID が「dest」アプリ ID への書き込み権限を持つものとして認証されるようになると思います。

そこで、その .py を変更し、「dest」アプリ ID に再度アップロードしました。確かに、このダミーの python アプリをデフォルトとして作成し、そのままにしておきました。

次に、ソース アプリ ID で DS コピーを再試行したところ、すべてのコピー ジョブが正常に開始されたので、修正されたようです。

于 2012-05-31T14:00:49.253 に答える