Cloud Endpoints Frameworks は Endpoints でという名称でした。この 2 つのバージョンを区別するため、このページでは新しいバージョンを Endpoints Frameworks バージョン 2.0 とし、古いバージョンを Endpoints バージョン 1.0 としています。このページでは、Cloud Endpoints バージョン 1.0 アプリケーションを Endpoints Frameworks バージョン 2.0 に移行する方法について説明します。 この移行では、ライブラリを変更し、アプリケーションの構成を変更しますが、コードには変更を行いません。
利点
Endpoints バージョン 2.0 には次のような利点があります。
- リクエスト レイテンシの短縮
- App Engine の機能(カスタム ドメインなど)との統合強化
- 新しい API 管理機能
Endpoints Frameworks バージョン 2.0 に移行しても、API のインターフェースには影響しません。既存のクライアントは、クライアント側コードを変更しなくても、移行後も引き続き動作します。
機能の概要
次の機能は、Endpoints バージョン 1.0 と下位互換性があります。
- すべての Google クライアント ライブラリで使用される JSON-REST プロトコル
- ディスカバリ サービス
- 既存のすべての認証機能(OAuth2/OpenID Connect)
- 生成されたクライアント用のクライアント ライブラリ サポート
- CORS(Google JavaScript クライアント ライブラリを使用しない JavaScript 呼び出し元用)
- API Explorer
トラフィック分割は使用できません。
現時点で除外されている機能
次の機能は利用できません。これらの機能が必要な場合は、機能のリクエストを送信してください。
- JSON-RPC プロトコル。レガシー iOS クライアントで必要になります。Endpoints Frameworks バージョン 2.0 API 用の iOS クライアントを作成する際には、REST API 用の Google API Objective-C クライアント ライブラリを使用することをおすすめします。
- 自動 ETag
- 自動
kind
フィールド - IDE との統合
fields
部分応答- PATCH API メソッドの自動作成
Endpoints バージョン 1.0 からの移行
バージョン 1.0 から移行するには:
アプリケーションのメイン ディレクトリに
/lib
という名前のサブフォルダを作成します。アプリケーションのメイン ディレクトリからライブラリをインストールします。
pip install -t lib google-endpoints --ignore-installed
libraries
セクションで、アプリケーションのapp.yaml
ファイルから- name: endpoints
エントリとversion 1.0
エントリを削除します。次に例を示します。libraries: - name: endpoints #Remove version: 1.0 #Remove
app.yaml
ファイルのlibraries
セクションに、次の記述を追加します。libraries: - name: pycrypto version: 2.6 - name: ssl version: 2.7.11
Endpoints Frameworks には、これらのバージョンの
pycrypto
およびssl
ライブラリが必要です。app.yaml
ファイルのhandlers
セクションで、url
ディレクティブを- url: /_ah/spi/.*
から- url: /_ah/api/.*
に変更します。アプリケーションのルート ディレクトリで、
appengine_config.py
という名前のファイルを作成または変更し、以下の項目を含めます。from google.appengine.ext import vendor vendor.add('lib')
API のバージョン文字列を確認します。
@endpoints.api(version='v1', ...)
デコレータで指定されたバージョン文字列は、API のパスに表示されます。SemVer 標準と互換性のあるバージョン文字列を指定すると、API のデプロイ時にメジャー バージョン番号のみが API のパスに含まれます。たとえば、バージョン2.1.0
のecho
という API のパスは/echo/v2
などになります。echo
API をバージョン2.2.0
に更新し、下位互換性のある変更をデプロイすると、このパスは/echo/v2
のままになります。これにより、下位互換性のある変更を行うときに、クライアントの既存のパスを変更せずに API バージョン番号を更新できます。 しかし、echo
API をバージョン3.0.0
に更新すると(互換性が失われる変更をデプロイするため)、パスは/echo/v3
に変更されます。Endpoints Frameworks アプリケーションを再デプロイします。
新しいデプロイの確認
新しいフレームワークでトラフィックが処理されていることを確認するには:
- 新しいデプロイにいくつかのリクエストを送信します。
- プロジェクトの Cloud Logging ページにアクセスします。
- パスが
/_ah/api
で始まるリクエストがログに含まれている場合は、Endpoints Frameworks バージョン 2.0 が API を処理していることを示しています。パスが/_ah/spi
で始まるリクエストがログに含まれていてはいけません。そのようなリクエストが含まれている場合は、引き続き Endpoints バージョン 1.0 プロキシがリクエストを処理していることを示しています。
API 管理の追加
Endpoints Frameworks バージョン 2.0 には、次の API 管理機能が追加されています。
- API キー管理
- API 共有
- ユーザー認証
- API 指標
- API ログ
まず、Python での Endpoints Frameworks スタートガイドをご覧ください。
トラブルシューティング
このセクションでは、Endpoints Frameworks バージョン 2.0 への移行で発生する一般的なエラーと推奨される解決方法について説明します。
API から 404
エラーが返されるが、API Explorer では API が正しくリストされる
Endpoints Frameworks バージョン 2.0 に移行するときには、古い Endpoints バージョン 1.0 の構成を削除する必要があります。古い構成がアプリケーション構成に残っていると、Endpoints サービスはアプリを引き続きバージョン 1.0 アプリとして扱います。/_ah/spi
に送信されたリクエストが App Engine ログに記録されている場合、これはクライアントに HTTP 404
エラーが返されたことを示します。
このようなエラーが発生した場合は、
app.yaml
ファイルから次の行を削除します。handlers: - url: /_ah/spi/.* script: ...
app.yaml
ファイルのhandlers
セクションのパスが正しいことを確認します。handlers: # The endpoints handler must be mapped to /_ah/api. - url: /_ah/api/.* script: ...
エラー メッセージ: ImportError: cannot import name locked_file
この問題は、依存関係に App Engine と互換性のないバージョンの oauth2client
ライブラリが含まれている場合に発生します。既知の問題をご覧ください。