Firebase Hosting を使わず、サードパーティのストレージアクセスをブロックするブラウザで Firebase Authentication の signInWithRedirect を使用するための対応を行ったのでメモする。
AWS Fargate で Go 製の API サーバーを動かしており、費用節約のために Fargate Spot を使おうと思った。そのために行った内容について。
Cloudflare DNS を使用して AWS Certificate Manager で証明書発行して ALB に設定してみたが、巷には Route53 を使用した記事ばかりあるのでメモしておく。
CDK で AWS Parameters and Secrets Lambda Extension を使ってパラメータを取得する Lambda を作成する。
AWS CDK で Amazon ECR の特定のリポジトリに Docker イメージを push して Amazon ECS のタスク定義に使う。
Firebase Authentication のサーバーサイドでサービスアカウントキーが含まれる JSON ファイルのパスを環境変数 GOOGLE_APPLICATION_CREDENTIALS に設定しなければならないが、そもそも JSON ファイル自体の置き場に困ったので JSON ファイルの中身を環境変数で渡して JSON ファイルを動的生成する。
Go で作った Lambda 関数(パラメータストアから値を読む)を EventBridge を使って Cron 実行する環境を CDK で書く。
rubenv/sql-migrate でマイグレーションツールを実装する。
Redis を使ってセッション管理していた部分を JWT 形式のアクセストークン認証に置き換えるための実装をした。
Dockerfile のマルチステージビルドを使い、Go アプリケーションの本番環境用の Dockerfile を作る。