コンテンツへスキップ

GAEを使ったCloud Endpointsについて

2018年12月13日

https://cloud.google.com/endpoints/?hl=ja

CloudEndpointsを使うことで簡単にGAE(GoogleAppEngine)にAPIサーバを作ることが出来る。

Extensible Service Proxyとうなんかすごいやつが、認証やモニタリング、ロギングなどをやってくれ、AppEngineの画面やEndpointの画面でいろいろ見れる

スタンダード環境とフレキシブル環境があり、スタンダードはJavaとPython2.7

フレキシブルは、Go, PHP, node.js, ruby Python3, .NET等がある(β)

ざっくり説明
Swagger(OpenAPI)ベースのAPI定義をCloudEndpointにデプロイ(上の図だとGoogleServiceManagementって部分)して、
それに対応したサーバーサイドを書き、GAEにデプロイする(上の図のAPIContainer)感じになる。

GAEにデプロイするサーバサイドのフレームワークは、PythonだとFlaskとか、PubyだとSinatraとか、NodeだとExpressとかになる。

サンプルコードはチュートリアルからDL出来るので、動かすには困らないし、そのまま拡張しちゃえばいい。

APIキーはGCPのコンソールで発行できる。

しかし、APIキーだけでは認証が弱いので、組み合わせて認証を利用できる

それが

JWT(json web token) ・・・ アプリケーション同士の認証に有効
GoogleIDAuth、FirebaseAuth、Auth0 ・・・ ユーザの認証に有効
となっている。

JWTもまた、GCPコンソールから発行可能なので、キーの発行にコマンドなども必要ないし、管理もGCP上で出来る

認証はAPIキーと、上記2つのどちらかを組み合わせてやる形になる。

この2つの組み合わせが正しくなければ動かない、というふうに作る。

ここまでこなせば、あとはSwaggerのルールにそいながら設定し、実装していけばできていくんだと思う。

Endpointが問題なく動作すれば、モニタリング画面が自動でできる

APIの仕様書もできる

やってて詰まったポイント
プロジェクト外のCloudSQLにつなごうとする場合

IAMの設定
つなぎに行くがわのCloudSQL APIの有効化
が必要となる。

前者は別プロジェクトにアクセスしに行くためににAppEngineのIDを通しておく、ということ

後者はCloudSqlProxyをうごかすためにある

参考:https://cloud.google.com/sql/docs/app-engine-connect?hl=ja

あと、Swaggerをある程度わかったほうがいい。全く知らずに取り組んで少し困った。

チュートリアルはこちら
https://cloud.google.com/endpoints/docs/openapi/tutorials?hl=ja

沿っていけば動く元は作れるはず。別プロジェクトのCloudSQLにつなぐなら前項 を気をつけること

From → iPhone開発

コメントする

コメントを残す