前説
今週は一旦Railsから離れてAWSの勉強しようかなと思いました。(Railsもちょこちょこやる)
やりたいこと(2つ)
- AWSでExpressの環境構築
- Railsアプリをデプロイ
まず何をすべき?
- AWS VPCでネットワーク整備
- AWS EC2で仮想環境作成
- EC2内で環境構築
実際作った
一回目に作った環境にSSHしたが・・・
ssh: connect to host 184.168.221.104 port 22: Connection refused
認証の問題でもなく、何かがアクセスを弾いてる?ネットワークが完成していないのか?
うーん。。。接続できてない。
パプリックDNSで検索しても同じ結果。DNS逆引きしてみる。
Non-authoritative answer:
Name: ip-10-0-1-8.ap-northeast-1.compute.amazonaws.com
Address: 184.168.212.72
ping 184.168.212.72
64 bytes from 184.168.221.104: icmp_seq=2 ttl=49 time=174.616 ms
64 bytes from 184.168.221.104: icmp_seq=3 ttl=49 time=194.756 ms
上のような感じで出てきました。
グローバルIPでpingを打つとしっかりとパケットが帰ってきます。
つまり、接続はできていると・・・。何らかののファイアウォールが弾いてるのかと予想。
やり直すか
というわけで2回目
VPCでネットワーク整備
VPC構成準備
VPCのウィザード作成をクリック
最初にこういう画面が出てきますよね!

これはネットワークの構成を選択できます。
サブネットは同一IPネットワークで形成された空間を分割する仕組みです。
VPC構築時点でサブネットによってIP空間を分割してくれるよう指定できるわけです。
そのVPC構成をここで選択できます。

今回僕らが選んだのはパブリックサブネットのみを作成する構成。
一応、VPC作成後もパブリックサブネットとプライベートサブネットに分割できるっぽい。
CIDRブロックはVPCのイメージとしては全体「10.0.0.0/16」
サブネットは「10.0.1.0/24」(ここにWebサーバーを設置)
アベイラビリティゾーンでは「ap-northeast-1a」(アジア東京)を指定。
1回目は「ap-northeast-1c」にしてた。
これが原因で弾かれていたのかもしれない・・・
Web系の環境構築だとこんな感じになりそうですね!
- パブリックIPアドレスにおいて、Webサーバーやメールサーバーなどインターネットとの接続の必要があるサーバーを設置します。
- プライベートIPアドレスにおいて、データベースサーバーなどインターネットとは接続しないサーバーを設置します。
VPC作成後
VPC確認

VPC作成により「10.0.0.0/16」のプライベートIPアドレスを取得
サブネット確認
| 送信先 | ターゲット |
|:-----------------|------------------:|:------------------:|
| 10.0.0.0/16 | local | This |
| 0.0.0.0/0 | igw-★★★★★★★ |
今回は「10.0.1.0/24」というプライベートIPアドレスでパブリックIPネットワーク空間を形成。
「0.0.0.0/0」というインターネットゲートウェイが自動で追加されてます。
インターネットゲートウェイの役割としては、VPCからインターネットへのアクセスやプライベートIPアドレスとグローバルIPアドレス変換を行うNATの役割を果たしてくれるらしい。(自信ない)
ルーティングテーブル確認
「サブネット関連づけ」
作成したサブネットが登録されているのを確認!
「10.0.0.0/16」
「0.0.0.0/0」
が揃っていれば問題ないです。
EC2インスタンスを作成
AMI
無料利用枠のLinuxのAMIを選択。
インスタンスタイプ
無料利用枠のインスタンスタイプを選択。
インスタンスの設定
真ん中のネットワーク関連の設定にて
| 項目 | 選択 |
|:-----------------|------------------:|:------------------:|
| ネットワーク | 自分が作成したVPC | This |
| サブネット | VPCに登録済みのサブネット | column |
| 自動割り当てパブリック IP | 有効 | will |
下のネットワークインターフェイスにて
プライマリIPは10.0.1.0/16内に作成するので10.0.1.10とした。
ストレージ
デフォルトでいい。
タグ
特になし
セキュリティグループ
セキュリティグループに以下の設定を行う
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
HTTP | TCP | 80 | 0.0.0.0/0 |
SSH | TCP | 22 | 0.0.0.0/0 |
HTTPを追加する。
しかし、サーバー公開するとなった場合、この「0.0.0.0/0」とデフォルトのポート範囲はセキュリティ上まずいので変更は必須すべきかなと思う。
悪い人にアドレスやポート番号の予測をつけられやすくなるため。
キーペア作成
なんでもいいです。ダウンロードしてローカルPCに配置しましょう。
インスタンス作成
これで作成!!
SSH接続
ターミナルにて
ssh -i keyペアファイル名 ec2-user@パブリックDNS or パブリックIP
結果

原因
リージョンとアベイラビリティゾーンの設定がよろしくなく、外部IPとして認識してセキュリティグループの設定に乗っ取り弾いていた説。
終わり
次回はnode.js環境の構築をするか。
初心者なのでアドバイスや鉞、ドシドシ応募しています!!
参考
https://qiita.com/shunsuke227ono/items/23dbf4f3bc663a2875f0
https://qiita.com/hit/items/336dfa6d1121a09fb4e5