【PWA back-end】API Gateway + Cloud functions + Cloud SQL + Cloud Scheduler + Secret Manager + auth0

API Gateway

Swagger

参考・ツール
https://editor.swagger.io/
https://qiita.com/rllllho/items/53a0023b32f4c0f8eabb

Cloud Functions

認証情報をどう受け取るか

access token に email を追加し、cloud functions で受け取る

X-Apigateway-Api-Userinfo に email の情報を付与し、API Gateway から Cloud Functions に送ってみる。

auth0管理画面:Auth Pipeline → Rules → Create → [Add email to access token]

X-Apigateway-Api-Userinfo から auth0 id を受け取る

$auth0_id = json_decode(base64_decode($request->getHeader('X-Apigateway-Api-Userinfo')[0]), true)['sub'];

※Cloud Functions へのアクセスを API Gateway 経由に限定する方法が見つからなかったため少し不安(headerを偽装されながら、直接 Cloud Functions を実行される可能性はない?)

同じ悩みを持った記事
https://qiita.com/chan-p/items/14341e189642aa922e63

参考・ツール
https://jwt.io/

Cloud SQL

コスト

1日で発生したコスト

Cloud SQL for MySQL: Regional – RAM in Japan
624 gibibyte hour
¥1,513

Cloud SQL for MySQL: Regional – vCPU in Japan
96 hour
¥1,373

Cloud SQL for MySQL: Regional – Standard storage in Japan
3.23 gibibyte month
¥190

高すぎるので以下に設定を変更

・マシンタイプ:標準(4 vCPU, メモリ26GB) → 共有コア(1 vCPU、メモリ0.614GB)
・ストレージ:SSD 100GB → HDD 10GB

変更した結果、コストを97%削減

Cloud SQL for MySQL: Regional – Micro instance in Japan
24 hour
¥92

Cloud SQL for MySQL: Regional – Low cost storage in Japan
0.33 gibibyte month
¥11

さらに見直すのであれば

以下あたりを見直せばいいのだと考えています。
・リージョン:東京 → 北米
・ゾーンの可用性:複数のゾーン(高可用性) → シングルゾーン

タイムゾーンの設定

概要→編集→フラグ に以下を追加。
フラグ:default_time_zone
値:+09:00

JSONにしやすいように、効率的にオブジェクトの配列にしたい

MySQLのJSON型を使ってみる。

参考
https://www.wakuwakubank.com/posts/507-mysql-json/
https://qiita.com/kenwatan/items/1fcd545001da4c2d9368
https://qiita.com/2ur1/items/11f349c5efd504ee3a18

Cloud Scheduler

参考
https://dev.classmethod.jp/articles/try-cloud-functions-scheduler-pubsub/


投稿日

カテゴリー:

投稿者:

タグ: