あけましておめでとうございます。
本年もよろしくお願いいたします。

本年最初の記事は、今更ではありますがVPCを紹介してみたいと思います。

VPCは、AWS内にプライベートなネットワークを構成することができ、インスタンスレベルではなくネットワークレベルでのセキュリティや経路の制御を行うことができるサービスです。
これにより、今までデータセンターで行っていたようにサブネットの構成やVPNなどを扱うことが可能になります。
VPCのネットワーク空間の中にEC2インスタンスなどを配置することによって、そのインスタンス自身はネットワークのIn/Outをあまり気にすることなく使用できます。

VPCでは用途に応じたネットワーク空間を構成するために、複数のサブネット、Inbound,OutboundのIPとポートの制御、VPNやインターネットへのゲートウェイ、ルーティングテーブル等が用意されています。
今回は、パブリックなサブネットを持つVPCを作成してみたいと思います。

コンソールのVPCタブをクリックすると、VPCのダッシュボードが表示されるので、「Get started creating a VPC」というボタンをクリックします。

そうすると、ダイアログが開き、VPCのタイプが選択できます。
これは、いくつかの典型的なVPCの用途に合わせてゲートウェイやルーティングテーブル等のプリセットを用意できるように対話式で進めていくようになっています。
ここでは一番上の「VPC with a Single Public Subnet Only」を選択してみます。

パブリックサブネットは、インターネットに直面するサブネットになるので、内部に作成したEC2インスタンスはVPCを使用しない時と大きくは変わりませんが、プライベートIPを自由に設定できたり、インスタンスとインターネットの間のルーティングを制御することができる等のメリットがあります。

下記のように、デフォルトの設定が表示され、CIDRは10.0.0.0/16となっています。

各項目の右側の「Edit~」でデフォルト設定を変更できます。
例として、PublicサブネットのAZを指定する場合は、以下のように変更します。

作成が完了すると、ダッシュボードに作成されたVPCの各オブジェクトの個数が表示されます。
今回、SubnetはPublic Subnetが1つなので1つになります。

以上で、VPCの作成が完了しました。
次に、このVPC内にEC2インスタンスを1つ作成してみたいと思います。

EC2タブで「Launch Instance」をクリックすると、AMIの選択画面が表示されます。
今回はAmazon Linux AMIを選択します。

インスタンスパラメータの設定ダイアログが開きます。
VPCでは、t1.smallを使用することができないので、m1.smallを選択します。
そうすると、「Launch Instance」のアコーディオン内の「Launch Into」の項目にVPCのタブが使用できるようになるので、VPCを選択します。
自動的に先程作成したSubnetが選択されています。
この状態で「Continue」をクリックします。

次に、インスタンスの詳細設定を行います。
VPCで特徴的なのは下段の「VPC Advanced Options」という項目です。
これにより、サブネット内でのインスタンスのプライベートIPアドレスを自由に指定することができます。
ここでは、10.0.0.8を指定し、「Continue」をクリックします。

そして、インスタンス名を入力して、「Continue」をクリックします。

キーペアを作成するのですが、ここでは既存のキーペアを指定して「Continue」をクリックします。

セキュリティグループを指定する画面になります。
ここで指定や作成したセキュリティグループは通常のEC2のセキュリティグループではなくVPC内で使用する専用のセキュリティグループになります。
VPC内のセキュリティグループではInboundのみではなく、Outboundも制御することができ、ここでは、public1というグループを作り、特定のIPからSSHを受け入れるようにしました。

「Continue」をクリックすると、すべての設定の確認画面が表示されます。
変更があれば各項目の右側のリンクやBackリンクで修正をします。
問題なければ「Launch」ボタンをクリックして、操作を完了します。

以上でVPC内にEC2インスタンスが起動されました。
インスタンス情報にもVPCの情報が記載されていることがわかります。

次にインスタンスにEIPを割り当てます。
はじめに、EIPを確保するために「Allocate Address」をクリックします。

ここで、VPC用に割り当てるのか通常のEC2用に割り当てるのかを選択するので、VPCを選択して、「Yes,Allocate」をクリックします。

EIPを確保することができたら、次にEIPを選択した状態で、インスタンスに割り当てるために「Associate Address」をクリックします。

そうするとインスタンスに割り当てるか、ネットワークカード(ENI)に割り当てるかを選択することになるので、ここでは、Network Interface(ENI)を選択します。
ENIはEC2インスタンスのネットワークカードで、2枚挿し等もでき、eth1であれば抜き差しも可能です。
Network Interfaceでは、先程立ち上げたEC2インスタンスのeth0が選択できます。
eth0なので抜き差しできないため、インスタンスに直接割り当てているのと変わりないと思いますが、新しい機能なので使ってみます。
ここで、「Yes,Associate」をクリックすると、EC2インスタンス(のENI)にEIPが割り振られます。

以上で、一通りの設定が完了しました。
次にSSHでEC2インスタンスに接続してみます。

$ ssh -i /Users/memorycraft/Development/cloudpack/myfirstcloud/keys/myfirstcloudkey.pem ec2-user@103.4.12.204
The authenticity of host '103.4.12.204 (103.4.12.204)' can't be established.
RSA key fingerprint is 40:cb:40:9d:39:9b:b2:d0:b9:47:43:fb:1d:db:d8:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '103.4.12.204' (RSA) to the list of known hosts.

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

See /usr/share/doc/system-release/ for latest release notes.

無事接続することができました。
それでは、自分のIPの情報を確認してみます。

[ec2-user@ip-10-0-0-8 ~]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 02:3D:4D:9C:4E:4D 
          inet addr:10.0.0.8  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::3d:4dff:fe9c:4e4d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2516 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1961 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2159794 (2.0 MiB)  TX bytes:146611 (143.1 KiB)
          Interrupt:10

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2343 (2.2 KiB)  TX bytes:2343 (2.2 KiB)

上記より、10.0.0.8が割り振られているのがわかります。
このようにプライベートIPを指定できることで、より柔軟な構成を組むことができます。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら