AWS 無料利用枠で何かやってみる Day 6 〜VPC設定とEC2構築

Day 6 で何やる?

【再掲】ようやく、EC2建ててみます。サーバを作りたいというよりは、AWSVPC関連の設定に重きを置いて。(Day 5で言いました。)

nabemerchant.hatenadiary.jp

参考にしたサイト/書籍は以下の通り(感謝)

サイト

※(5)のAWSのサイトは自動翻訳が不十分で「Amazon EC2 Auto Scalingでのインスタンスのテナンシーの設定」が正しいです。

作業自体はほぼ(1)(2)のまんまです。ありがとうございます。

実業務で、既存のインスタンス名などネーミングルールがばらばらで嫌だなと思っていたら、(3)にてかなりいい感じのルールを見つけたので踏襲させて頂きました。標準化って大事ですよね。

書籍

  • 今回もなし

まずVPC周りを構築する

AWSアカウントを作成すると、default VPC及び周辺の設定が用意されているが、とりあえず構成を理解することが目的であるため、一から作ります。

VPC設定

VPCダッシュボードから、

  • ①:「VPC」タグを選択
  • ②:「VPCを作成」ボタンを押す
  • ③:VPCの設定を行う
  • ④:「VPCを作成」ボタンを押す

文章で書くと、「VPCを作成」ボタンが2回出てきて、ちょっと「お、おぅ」ってなりますね。

f:id:nabe_merchant:20210512221721p:plain

前述の通り、名前(Nameタグの値)は、サイト(3)に倣ってます。

CIDRブロックで、VPCに割り当てるネットワーク領域を設定する。CIDR表記については、サイト(4)を参考に。なお、今回設定した「10.0.0.0/16」は、IPアドレス数:65536 (ホストアドレス数:65534)のネットワークとなります。

無料利用枠とか関係なしに、そんなに使いません。※厳密にはこの後サブネット作るので、その範囲だと100ちょいになります。

テナンシーの詳細は以下参照。仮想サーバを物理的にどう配置するかという設定で、defaultだと物理ハードウェアを共有する設定となり、それ以外は専有となり別料金も掛かるようです。

サブネット設定

VPCダッシュボードから、

  • ①:「サブネット」タグを選択
  • ②:「サブネットを作成」ボタンを押す
  • ③:先程作成したVPCを選択する(=VPC内のサブネットを作る)
  • ④:サブネットの設定を行う(サイト(1)に倣い、public用とprivate用を作成)
  • ⑤:「サブネットを作成」ボタンを押す

文章で書くと、「サブネットを作成」ボタンが2回出てきて、ちょっと「お、おぅ」ってなりますね。

f:id:nabe_merchant:20210512224833p:plain

CIDRブロックで「/26」としているので、IPアドレス数:64 (ホストアドレス数:62)のネットワークとなります。

ポイントは、サブネット指定時にAZの指定がある点。

VPCは仮想環境かつ、その範囲は利用者によって規定された仮想的なネットワークとなるが、このネットワークを複数AZに跨って設定することが可能であり、この構成を「マルチAZ構成」と呼ぶ。

AWS 無料利用枠で何かやってみる Day 3 〜AWSキーワード整理 - Reverse[re:verse|re:birth] engineering

とDay 3 で何故か断言しているが、VPCにおけるマルチAZ構成は、サブネットを複数のAZに作成し、そのAZ内に冗長構成を作ることで実現するという事になるはず。

EC2起動

ようやくEC2に取りかかれます。

EC2のダッシュボードから、

  • ①:「インスタンス」タグを選択
  • ②:「インスタンスを起動」ボタンを押す
     ※起動ってイメージ湧きにくいですが、すでにあるマシンイメージを「起動」するからだと思います。
  • ③:Amazon マシンイメージ(AMI)を選択(OS+αのテンプレートですね)
     【重要】無料利用枠ユーザーは「無料利用枠の対象」を選んでくださいね
  • ④:インスタンスタイプを選択(起動するEC2のスペックですね)
     【重要】無料利用枠ユーザーは「無料利用枠の対象」を選んでくださいね
  • ⑤:「確認と作成」ではなく、「次のステップ」ボタンを押す

f:id:nabe_merchant:20210512231139p:plain

追記
一番大事な、「インスタンス詳細の設定」のキャプチャが漏れています。
ここでは、ネットワーク(つまりVPC)とサブネットの指定が必要になります!!
追記終わり

  • ⑥:ストレージサイズはデフォルト8Gですが、無料利用枠は30Gまであるので必要に応じ増やします → 「次のステップ」ボタンを押す
  • ⑦:インスタンス名をNameタグでつけて、「次のステップ」ボタンを押す
  • ⑧:セキュリティグループを設定しますが、既存では未作成なので新規で作成します。ここは用途によって異なりますが、SSH/HTTP/HTTPSの設定を行います。(インバウンドルールのみ設定)
    • SSH:ソースに「マイIP」を設定すると、現在AWSコンソールに接続している環境のグローバルIPアドレスが割当られます。ただ、このグローバルIPは固定じゃないはずなので、今後不便になりそうです。(後述)
    • HTTP/HTTPSはどこからでも。
  • 「確認と作成」を押します。

f:id:nabe_merchant:20210512233127p:plain

  • ⑨:確認画面で設定確認後、「起動」を押します。 ※「起動」出てきましたね!!
  • ⑩:ただ、まだ起動はせずキーペアの選択or作成を要求されます。EC2に接続するための、公開鍵(EC2に自動配置)と秘密鍵SSH接続元のローカルに配置)となるので、新規で作成します
  • ⑪:キーペア(秘密鍵、.pemファイル)をダウンロードします。 ※ssh接続に必要となります
  • ⑫:「インスタンスの作成」ボタンを押す → EC2構築done!!

f:id:nabe_merchant:20210512234821p:plain

EC2にSSH接続するための設定(インターネットゲートウェイ/ルートテーブル)

SSH接続するには、通常インターネットを介する必要があります。一方で、VPCはあくまでAWS上の仮想ネットワークであるため、その橋渡し役の仮想ルーターであるインターネットゲートウェイを設定します。

VPCダッシュボードから、

f:id:nabe_merchant:20210513001055p:plain

次に、作成したEC2がインターネット接続=ローカルIP以外はインターネットゲートウェイを通してインターネットに接続するために設定を行います。そのためには、ルートテーブルを設定する必要があります。

VPCダッシュボードから、

  • ⑥:「ルートテーブル」タグを選択
  • ⑦:「ルートテーブルの作成」ボタンを押す
  • ⑧:ルートテーブルの設定(名前と紐づくVPC)を行い、「作成」ボタンを押す
  • ⑨:一覧から作成したルートテーブルを選択肢し、「ルートの編集」を選択
  • ⑩:送信先:「0.0.0.0/0」、ターゲット:上記で設定したインターネットゲートウェイを指定し、「ルートの保存」を押す

f:id:nabe_merchant:20210513003708p:plain

ようやく終わりかと思いましたが、ルートテーブルはサブネットにも関連付ける必要があります。これはサブネット単位で、セキュリティ面からルーティングを変えるためと思われます。(あまり詳しくないです。)

VPCダッシュボードから、

  • ⑪:「サブネット」タグを選択
  • ⑫:EC2を構築したサブネットを指定し、「ルートテーブルの関連付けを編集」を押す
  • ⑬:作成したルートテーブルを指定し、「保存」を押す

f:id:nabe_merchant:20210513004805p:plain

EC2にSSH接続

.pemを配置の上、SSH接続すると、

chmod 400 trial-dev-ec2.pem
$ ssh -i "trial-dev-ec2.pem" ec2-user@[*EC2のパブリック IPv4 アドレス(インスタンス概要で確認できます)*]
The authenticity of host '[*上記のIPアドレス*]' can't be established.
ECDSA key fingerprint is SHA256:**********************************
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[*上記のIPアドレス*]' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-193-21 ~]$

お疲れ様でした!!

後述

いやー、AWS触るよりブログ用の画像作ったり、理解を確認しながら文章書くのが大変でしたね。

そう考えると、 Qiitaさん(https://qiita.com/) とか、 クラスメソッドさん(https://dev.classmethod.jp/)、及び執筆者の皆さんにはマジで感謝だなとしみじみ思いました。

感謝

なお、今回の投稿内で述べた自宅PCのIP変わる問題について、Lambda使ってマイIPの変更を反映している方がいらしゃったので、紹介しておきます。面白いこと考えるな〜。

confrage.jp