cloudformationでEC2インスタンス作成してSSH接続&Webサーバしたいだけなのに、すごく大変だった・・・

cloudformationでEC2インスタンス作成してSSH接続&Webサーバしたいだけなのに、すごく大変だった・・・。

とりあえず、EC2単体で作成
AMI(Amazon Machine Image)とサーバー性能(t2.micro)だけ指定して、ECインスタンスを作ってみる。

AWSコンソールで見てみると、パブリックIP有りで起動している!
ブラウザでIPアドレスを叩いても接続出来ない。Webサーバが起動してないからか~。

AWSコンソールからSSH接続しようとしたら警告が出た。
アクセス可能にするためにはポート 22 を開く必要があるため、このインスタンスに接続できない場合があります。現在のセキュリティグループでは、ポート 22 が開いていません。
インスタンスがキーペアに関連付けられていません。
このインスタンスはキーペアに関連付けられていません。キーペアがなければ、SSH 経由でインスタンスに接続できません。
EC2 Instance Connect を使用すれば、有効なユーザー名のみで接続できます。必要なアクセス許可が付与されている場合は、Session Manager を使用して接続できます

接続方法を「スタンドアロン SSH クライアント」から「EC2 Instance Connect (ブラウザベースの SSH 接続) 」に変更したら接続出来たっぽいけど、コンソールに何も表示されない…。

SSH接続したいなら、セキュリティグループ(ファイアウォール)を作ってポート22番を開放しろって事か。
cloudformationでセキュリティグループを作るには、所属元となるVPCが必要みたいだから、VPCも作成する。
EC2作成時に、自作セキュリティグループを指定する

なんかエラーになった

なんかセキュリティグループには、サブネットが必要なようです・・・。
Security group sg-xxxxxxxxxxxxxxxxx and subnet subnet-yyyyyyyy belong to different networks.

しょうがない、サブネットも追加して、EC2に追加だ!

これでポート22のエラーは消えた。次は公開鍵か。

ローカルで公開鍵を作成して、パラメータ引数で指定する。 –parameter-overrides KeyPair=ローカルで作成した公開鍵ファイルのパス

コンソールから返事が返ってこない・・・。
「すでにリソースにアタッチされているセキュリティグループの削除」かな? 1時間タイムアウトするまで頑張るらしい。

う~ん、どうもaws-cliだと途中で止まってしまうので、ブラウザのAWSコンソールから実行してみたらSSH接続できた。

ステップ・バイ・ステップでやってると、なかなか完成しないので、一気に作ってしまおう。
ec2にnginxインストールも、cloudformationで行う。
これでWebサーバの完成!ブラウザからIPで行けた。

1, VPC(Virtual Private Cloud)を作る
2, IGW(Internet GateWay)を作る
3, VPCにIGWをアタッチする

4, ルートテーブルを作る
5, ルータを作る

6, VPCにサブネットを作る
7, サブネットグループを作って、サブネットを所属させる

8 EC2を作る(nginxもインストール)