
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/