React×Spring Bootな構成をAWS Fargateで動かす(1)

Pocket

はじめに

我々tdiはお客様社内の業務システムを開発することがほとんどです。
AWSでサーバーレスな構成を組む時に、フロントエンドをS3とCloudFrontで配信し、バックエンドをAPI Gateway経由のLambdaで、データベースはDynamoDBで・・・というのはよくある構成ですね。
しかし、社内の業務システムとなると、

  • インターネット経由でシステムにアクセスしたくない
  • Lambdaのローカル開発に慣れていない
  • データベースはやっぱりRDBMSで構成したい

などといった様々な外的要因も無視できません。
そこで今回は、Reactで動いているフロントエンドとSpring Bootで動いているバックエンドを1つのALBから振り分けるようなAWS Fargateの構成をCDKで構築して動かしていきたいと思います。
分量が非常に多くなってしまうので、何回かに分けて連載していく予定です。
最後までお付き合いください。

構成の概要

最終的に動かしていく構成は以下の通りです。

フロントエンド用とバックエンド用のFargateサービスを分け、パスベースルーティングで1つのALBから振り分けます。
今回は「インターネット経由でシステムにアクセスしたくない」という要件は外しましたが、もしその要件を入れる場合はALBをプライベートサブネットで構成するようにしてください。
また、認証にはCognitoを使用しGoogleとフェデレーションします。
そして、Cognitoで認証されたトークンを持っているユーザのみが、バックエンドのAPIを使用できるように認可制御も実装します。
これらの構成の開発手順とCDKでの構築手順をお届けしていきます!

Google認証のためのCognitoをCDKで構築する

第1回となる今回はGoogleとフェデレーションするCognitoをCDKで構築していきます。
前提として、

  • 開発環境はWindows
  • AWS CLIのインストール
  • Node.jsのインストール
  • CDKのインストール
  • CDKのデプロイ権限を持ったAWSのプロファイル設定
  • VSCodeのインストール
  • Google認証のためのGoogle Cloud側の設定(OAuthクライアント、同意画面)

は完了していることを想定しています。
早速、CDKプロジェクトを作成していきましょう。
適当なフォルダで以下のコマンドを実行して、プロジェクトを作成します。

構築する環境ごとに設定を切り分けたいため、dotenvをインストールします。

.envから設定を読み込みようにmiso-auth.tsを編集します。

とりあえず開発環境ということで、.env.devファイルを作成します。
ステージング環境なら.env.stg、本番環境なら.env.prdのように作成してください。

your-google-client-idおよびyour-google-client-secretの値は、Google Cloud側で設定したOAuthクライアントのクライアントIDとクライアントシークレットの値を設定してください。
また、.envがGitリポジトリに保存されないように忘れずに.gitignoreに追加しておきましょう。

メインとなるCognitoを設定するCDKコードをmiso-auth-stack.tsに記述します。

コードが完成したので、あとはデプロイするだけ!NODE_ENVをセットするのを忘れずに。

デプロイが完了すると、以下のようなメッセージ表示され、UserPoolIdとUserPoolClientIdが表示されているのが分かります。

これでGoogle認証を行うCognitoをCDKで構築することができました。

次回は、構築したCognitoで認証するReactのアプリケーションを作成していこうと思います。
それでは、また次回に👋

お問い合わせ先

執筆者プロフィール

Hayakawa Masafumi
Hayakawa Masafumitdi デジタルイノベーション技術部
昔も今も新しいものが大好き!
インフラからアプリまで縦横無尽にトータルサポートや新技術の探求を行っています。
週末はときどきキャンプ場に出没します。
Pocket

関連記事