メモ程度に書きました
※https通信に対応するための手順は省略してます
本手順セキュリティや本番環境での正常な動作を保証するものではないことをご了承ください。
経験を骨子として書き起こし、それを生成AIに投げて作ってもらった記事になります。
全体像
AWSでアプリケーションを公開する場合、下記の要素を設定します。
-
ALB (Application Load Balancer)
- ALB向けのセキュリティグループ
- ターゲットグループ
- リスナー
- ルール
-
EC2インスタンス
- EC2向けのセキュリティグループ
ALB がクライアントからリクエスト(HTTP/HTTPS)を受け取り、EC2インスタンスへルーティングする仕組みです。
ALB の構成と設定
1. ALB 用セキュリティグループ
-
許可するポート
- 外部(一般ユーザー)のアクセスを受け付けるため、デフォルトでは HTTP(80) と HTTPS(443) をインバウンドで許可します。
- 開発・検証環境の場合、セキュリティ対策としてアクセス元IPを自分のグローバルIPなどに絞ることを推奨します。
2. ターゲットグループ
- EC2インスタンスが存在するサブネットを登録します。
- EC2上のアプリケーションやWebサーバのリスンポートを指定します。たとえば、アプリケーションが 8080 番ポートを使っている場合には、ターゲットグループでも 8080 を設定します。
3. リスナー
-
ALB が受け付けるポートを設定します。
- HTTP(80) や HTTPS(443) を一般的に利用します。
- HTTPS を使用する場合は証明書の設定も必要ですが、ここでは手順を省略しています。
4. ルール
- 特にカスタムルールが不要であれば、デフォルトのルールを利用し、ターゲットグループへ転送させます。
- 複数ドメインやパスベースで振り分けたい場合は、追加ルールを設定します。
EC2 インスタンスの構成と設定
1. EC2 用セキュリティグループ
-
アプリケーション/ Webサーバのポート
- EC2のアプリケーションやWebサーバがリッスンしているポートをインバウンドで許可します。
- 許可元(ソース)は、ALB用のセキュリティグループを指定します(「sg-xxxxxx」などのIDを指定)。
-
SSH 接続 (22番ポート)
- 管理者が接続するために使用するポートです。
- セキュリティ上、アクセス元IPを管理者の固定IPに絞ることを推奨します。
まとめ
- ALB セキュリティグループでは、外部からの HTTP/HTTPS アクセスを許可(または必要に応じて特定IPだけ許可)します。
- ターゲットグループでは、EC2インスタンスが属するサブネットと、アプリケーションがリッスンするポートを設定します。
- ALB リスナーでは、クライアントからの HTTP/HTTPS リクエストを受け取るポートを指定します。
- ルールはデフォルト転送設定を利用し、必要に応じて追加設定を行います。
- EC2 セキュリティグループでは、ALB セキュリティグループからのインバウンドを許可(アプリケーションポート)、また管理者のSSHアクセス用にIP制限を行います。
これらを正しく設定することで、ALB経由でEC2上のアプリケーションに安全かつ適切にアクセスできるようになります。