AWSのネットワーク設定(VPC+IGW+サブネット+ルートテーブル)を1つずつ作成して、ec2+apacheでWebサーバ構築! ネットワーク設定から作ると、超面倒だな・・・。

AWSのネットワーク設定(VPC+IGW+サブネット+ルートテーブル)を1つずつ作成して、ec2+apacheでWebサーバ構築! ネットワーク設定から作ると、超面倒だな・・・。

参考URL
https://qiita.com/minato-naka/items/c21e4d53db7a720f8fdd

1, VPC(Virtual Private Cloud)を生成する。
いつもec2作る時はデフォルトVPCしか使ってないので、イチから作るのは初めてだな・・・。
いつものサービス検索窓からVPCダッシュボードへ行ける。
VPC作成ボタンから、独自VPCを作る。
タグで適当な名前を付ける。laravel-sample-vpcとか
IPv4 CIDR blockは、サンプルの10.0.0.0/16 で十分やな。
VPC生成されると、VPCのIDが割り振られる

2, インターネットゲートウェイ作成・アタッチ
このままだと「閉じたLAN」なので、IGW(インターネットゲートウェイ)作成&付与して、インターネット接続できるようにする。こうやって自分でイチから設定すると、確かにゲート(門)っぽいな。
VPCダッシュボードのサイドバーから「インターネットゲートウェイの作成」ボタンで生成。
タグで適当な名前を付ける。laravel-sample-igwとか
作成しただけだとデタッチ状態なので、「インターネットゲートウェイの作成」ボタンの横のアクションから、さっき作ったVPC(laravel-sample-vpc)にアタッチする。

3, VPCにPublicサブネットを作る
VPCダッシュボードのサイドバーから「サブネットの作成」ボタンで生成。
3-1, タグで適当な名前を付ける。laravel-sample-subnet-public-aとか
3-2, 所属するVPC(laravel-sample-vpc)を選択
3-3, このサブネットが作られるAZ(アベイラビリティーゾーン)を選択。
ap-northeast-1a
ap-northeast-1c
ap-northeast-1d
なぜかbが歯抜け。まあ素直にaを選んでおこう。この選択に意味はあるのか?
3-4, IPv4 CIDR ブロックは、サブネットなんて数個しか作らないと思うけど、サンプルの10.0.0.0/24で8bit確保しておく。

4, ルートテーブル作成して、サブネットのパケット制御を行う。
(igwとサブネットを結びつけて、インターネット接続できるようにする)

4-1, VPCダッシュボードのサイドバーから「ルートテーブルの作成」ボタンで生成。
タグで適当な名前を付ける。laravel-sample-route-table-publicとか
作ったVPC(laravel-sample-vpc)を選択
4-2, 作成しただけだと何もしないので、「ルートテーブルの作成」ボタンの横のアクションから「ルートの編集」→「ルートの追加」ボタンで、新しいルーティング設定を追加する
送信先は、0.0.0.0/0(すべてのパケット)
ターゲットは、自分で作ったlaravel-sample-igwを選択(最初にinternet gatewayをプルダウンで選択して、同じプルダウンから選択するのが独特の動き!)
4-3, サブネットの方から、アクション→ルートテーブルの関連付け
デフォルトのルートテーブルから、新しく作ったルートテーブル(laravel-sample-route-table-public)に変更する。
これで、このサブネットはインターネット接続が出来るようになったはず!

5, ここまで来て、ようやくEC2をセットアップ
Amazon Linux 2 AMIで作成。基本的にデフォルトのままでOKだけど、これだけは設定する。
5-1, ネットワークは自作VPC(laravel-sample-vpc)に変更。
5-2, サブネットは1つしかないので自動的に、laravel-sample-subnet-public-aがセットされた
5-3, Webサーバなので、ネット側からアクセスできるように「自動割り当てパブリック IP」を有効にする。
5-4, タグを追加(キー = Name, 値 = laravel-sample-ec2-web-a)して識別できるようにする。
5-5, セキュリティグループの設定は、設定名をlaravel-sample-sg-webに変更して、HTTPを追加する(デフォはsshだけ)

インスタンスのセキュリティを強化してください。 セキュリティグループ laravel-sample-sg-web は世界に向けて開かれています。と警告が出るので、SSHだけでもIP制限した方がいいのかな?
まあ、公開鍵暗号SSHだから良いか。
キーペアは、laravel-sample-key-pairとか適当なファイル名で設定する。
laravel-sample-key-pair.pemという秘密鍵をダウンロードしたら、インスタンス作成が開始する(数分かかる)

6, ec2が起動したら、SSH接続してapacheをインストール
macでsshするなら、以下の設定で接続でターミナルから接続できる。

Apacheインストール

これで、ようやくブラウザから見れるようになった〜。
ネットワーク設定から作ると、超面倒だな・・・。