App Engine 上での Cloud Endpoints Frameworks のクイックスタートがこれ通りやってもできたかったので書く
#モチベーション
- FireBaseとかGoogleCloudPlatformとか簡単で便利そうなので使ってみたかった
- Googleの製品だけでいろいろなんとかなるかやってみたかった
- ひとまず簡単にAPIをついくりたいと思って試しにクイックスタートをドキュメント通りやったのにできなかったので手順と共に書き残しておく
#クイックスタート
1. google Clodu SDKをインストールする
Download the SDK for App Engine
gcloudが使えるようになるはずなのでプロジェクトを登録する
❯ gcloud components update
❯ gcloud components install app-engine-python
❯ gcloud config set project [PROJECT-ID]
2. API
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
インストールするパッケージは以下のファイルに記載してある
❯ cat ./requirements.txt
google-endpoints==2.4.5
google-endpoints-api-management==1.3.0
パッケージをインストールする
pip install -t lib -r requirements.txt
公式だと
https://gapi-pypi.appspot.com/admin/nurpc-dev
が死んでるのでだめだった
#ドキュメント通りだと以下でインストールできない
pip install -t lib google-endpoints --extra-index-url=https://gapi-pypi.appspot.com/admin/nurpc-dev --ignore-installed
ローカルで起動してみる
❯ dev_appserver.py app.yaml
curlとか使って試す
http://localhost:8080/_ah/api/echo/v1/echo/
にPOSTしてみて成功してればOK
3. OpenAPIの設定ファイルを生成する
❯ python vender/endpoints/endpointscfg.py get_swagger_spec main.EchoApi --hostname [PROJECT-ID].appspot.com
hostnameの末尾はappspot.comであることに注意
4. OpenAPIの設定ファイルをデプロイする
api-managimentのアップデートがあったらしくて、endpointのdeploy時に従来だとgcloud service-managementだったけどバージョンがあがったため以下で行う
❯ gcloud endpoints services deploy ehov1openapi.json
リストを表示
❯ gcloud endpoints configs list --service=[PROJECT-ID].appspot.com
CONFIG_ID SERVICE_NAME
2017-11-24r0 [PROJECT-ID].appspot.com
ここもhostnameの末尾はappspot.comであることに注意
deployしたCONFIG_IDとSERVICE_NAMEをapp.ymlに指定する
❯ cat env_variables.yaml
env_variables:
ENDPOINTS_SERVICE_NAME: [PROJECT-ID].appspot.com
ENDPOINTS_SERVICE_VERSION: 2017-11-24r0
APIのバックエンドをdeployする
❯ gcloud app deploy
deployされて
[PROJECT-ID].appspot.com/_ah/api/echo/v1/echo/
が叩ければOK
また、エンドポイントのマネジメントコンソールでリクエストが観測できればOK
#さいごに
- なかなかクイックスタートできなかった
- 公式ドキュメント以外に世の中を探してもでてきにくいなと思った
- いろいろ(FireBaseとかも)となにかつくるときに簡単にできそうだから使っていきたいと思っている