
いつも記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!
社内検証環境でEC2環境でWebサーバを実装+認証基盤を実装といった要件があったので、今回実装した内容について簡単にハンズオン化してみました。
初見の方でもサクッと読めるように平易な表現で執筆しておりますので、お気軽に読んでいただければ幸いです。
- 対象読者
- 利用ケース
- 構成イメージ
- ハンズオン
- セキュリティグループ設定
- EC2設定
- ALB設定
- CloudFront設定
- Cognito設定
- 所感
対象読者
次のような課題を抱えている方に本記事を活用いただけますと幸いです。
- Route53などを用いずに簡単にWebブラウザを実装したい
- S3を利用しないで静的Webサイトを実装したい場合
- とりあえず、AWSを用いた楽々実装アーキテクチャを実装したい
利用ケース
次のようなケースだと利用できると考えています。
- サーバーアクセス時に任意のポートで接続する場合
- バックエンド・フロントエンド環境が同一の場合
- 新規ドメインを払い出すのが面倒・難しい場合(ACMへの登録を行いたくない)
商用環境で実装する場合はAWS WAFなどのセキュリティ対策・Auto Scalingなどのアジリティ対策を講じてください。
構成イメージ
次のような構成イメージを想定しています。
ハンズオン
セキュリティグループ設定
EC2サーバ用とALB用にあらかじめ作成しておきます。
- EC2用セキュリティグループ
ALBから来たHTTP・HTTPS通信は許可する設定にしております。また、自環境からはSSH・任意のポートを許可する仕様にしております。
- ALB用セキュリティグループ
HTTP・HTTPSポートに関しては任意の場所でも許可する仕様にしております。
より厳密に設定する場合はCloudFrontからの通信のみに範囲を狭めてみてください
EC2設定
EC2設定に関してはapacheの設定ファイルを変えるだけです。
今回は使用ポートを7000番にしました。(任意の値で大丈夫です)
なお、HTML資材は過去ブログから持ってきています。
実装した結果は以下となります
ALB設定
ALBの設定を行う前にEC2のセキュリティグループを次の通り変更してください。
上記設定を行うことで、ALBから任意のポート宛の通信を行えるようになります。
ALB設定としてターゲットグループとロードバランサーの設定を行います。
先にターゲットグループを設定しないとロードバランサーは作成できません
- ターゲットグループ
ターゲット登録方法としてインスタンスでの登録がありますが、TerraformなどのIaCツールで頻繁にリソースを構築⇒削除する場合、インスタンスIDを固定化できません。そのため、今回は値を固定化できるIPアドレス(プライベートIP)をターゲットに指定しています。
リスナーにつてはHTTPプロトコルの通信は許可するといったルールにしております。
なお、ALB単体でHTTPS設定も可能ですがその場合ACM設定が必須となります。
それでは、ALBから払い出されたDNSドメインでアクセスしましょう。
CloudFront設定
オリジンドメインとして先ほど作成したALBを登録して作成しました。
セキュリティ対策を強化したい場合は、CloudFrontからAWS WAF設定を行うことができます。
ディストリビューションドメインでアクセスしましょう。
無事、HTTPS認証でアクセスが可能になりました。
Cognito設定
Cognito設定に関しては、過去ブログの内容として同じですので割愛いたします。
過去ブログ
所感
CloudFrontから自動生成されるドメインでアクセスできればいいといった条件であれば、Route53を利用してドメイン発行せずともHTTPS接続は実現できます。ただし、商用利用することを考えたらドメイン名を設定するのは必須化と思います。あくまで最低限の実装のみですので、本実装から拡張させることは可能だと思います。
最後まで、記事をお読みいただきありがとうございました
Views: 2