GoogleAppEngine
GoogleCloudEndpoints

GoogleAppEngine上でのCloudEndpointsFrameworksクイックスタートできなかった

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

サンプルコードは以下
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/endpoints-frameworks-v2/echo

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とかも)となにかつくるときに簡単にできそうだから使っていきたいと思っている