2:00am, Writing code

Roughly coding. Posted from Berlin.

アプリエンジニアのためのAWS入門 VPC編

前回までのあらすじ

今回の教材

作成するもの

本シリーズでは最終的に以下のネットワーク構成を作成する。図は下記の記事を参考にCloud Craftにて作成した。

見たままではあるがざっくりとした構成は以下の通り。

  • AWS内にVPCを構築
  • Gatewayにて外部に公開
  • VPC内に異なるAZ(Available Zone)の2つのサブネットを構築
  • 各サブネット内にEC2インスタンス及びRDSインスタンスを配置
  • ロードバランサで各サブネットに通信を振り分ける

f:id:snishimura0926:20170827204406p:plain

これ以降はAWSアカウント登録済みとして話を進める。ちなみにAWSアカウントの登録には通話の出来る電話番号が必要なので、データ通信のみのMVNO回線しかないと登録できないかも?なお日本国外(筆者の場合はドイツ)のプリペイドSIMでも登録できたので通話さえできれば問題ないようだ。

VPCを作成する

まずはVPCを作成する。AWSコンソールにサインイン後、画面左上のServicesタグをクリックしサービス一覧のNetworking & Content Deliveryの項からVPCを選択する。 f:id:snishimura0926:20170827230426p:plain

個別に手順を進めてもいいが、今回はVPC作成ウィザードを使用した。まずは画面中央上部のStart VPC Wizardをクリックする。 f:id:snishimura0926:20170827203806p:plain

ウィザードが開始されたら以下の画面が表示されるので、とりあえずVPC with a Single Public Subnetを選択しSelectをクリックする。 f:id:snishimura0926:20170827231534p:plain

今回はIPの設定はデフォルトのままにしておく。VPC NameはとりあえずtestVPCとした。サブネットもIPはそのままにしておき、AZ1は任意のゾーンに設定する。Tokyoリージョンだとap-northeast-1aとap-northeast-1cが選べる。ここではap-northeast-1aを選択した。

サブネットにも任意の名前がつけられるので設定しておくとよい(画像ではPublic subnetとなっているが後で変更した)。Enable DNS hostnamesはデフォルトでYesとなっているが、これは後でRoute53を使ってDNS設定をするために必要っぽい?のでそのままにしておく。

最後のHardware tenancyをDedicatedにするとVPCを専用ハードでホストすることができるらしい(追加料金が必要)。高度なセキュリティが要求される場合に必要な設定のようだが、今回は不要なのでDefaultのままにしておく。

以上の設定を終えると以下のようになる。 f:id:snishimura0926:20170827203840p:plain

Create VPCでウィザードを実行後、ダッシュボードからYour VPCsを選択すると以下のようにtestVPCが作成されていることがわかる。なおAWSに登録するとデフォルトでVPCが作成されるので、ここでは2つのVPCが表示されている。 f:id:snishimura0926:20170827233130p:plain

サブネットを作成する

前項のウィザードでVPCを作成するとサブネットが作成されている(ここでもデフォルトのサブネットが定義されている)。VPCの項目を見ると先程作成したtestVPCに紐付いていることがわかる(NameはTest subnetに変更した)。 f:id:snishimura0926:20170827203951p:plain

ここではサブネットを手動でもう一つ追加する。サブネットのダッシュボードでCreate Subnetをクリックすると以下のダイアログが表示される。 f:id:snishimura0926:20170827203925p:plain

Name Tagで名前を付けられるのでTest subnet2としておく。VPCでサブネットを紐付けるVPCを選択する。ここでは先程作成したtestVPCを選択する。Available Zoneはウィザードで作成したサブネットとは異なるap-northeast-1cを選択する。これにより、ap-northeast-1aで生涯が発生してもシステムを稼働させ続けることができるようになる。

以上の設定を行いYes, Createでサブネットを作成すると、サブネットのリストは以下のようになる。 f:id:snishimura0926:20170827225227p:plain

ゲートウェイを作成する

ゲートウェイVPCとインターネットを繋ぐためのコンポーネントである。ゲートウェイと次項のルートテーブルでルールを設定することによって、ネットワーク間のトラフィックをコントロールする。

VPC作成ウィザードでVPCを追加するとゲートウェイも自動的に追加されている。ダッシュボードからInternet Gatewaysを選択するとゲートウェイのリストが表示される。

VPCの欄を確認するとtestVPCに紐付けられていることがわかる。なおいずれかのVPCに紐付けられたゲートウェイはStateがattachedとなり、どのVPCにも紐付いていないものはdettachedになる。 f:id:snishimura0926:20170827204159p:plain

Route tableを設定する

ゲートウェイを追加しただけではインターネットとVPCを接続することはできない。VPCをインターネットに公開するためにはゲートウェイのルートテーブルにデフォルトルート(0.0.0.0/0)を設定する必要がある2

ゲートウェイ同様、VPCウィザードを使うとルートテーブルも自動的に追加されているのでデフォルトルートを追加する。 f:id:snishimura0926:20170827204240p:plain

以上でVPCを作成しインターネットに公開する準備は完了である。


  1. Available Zoneの略。物理的なサーバ本体(データセンター)の設置場所のこと

  2. Networkキーワード - デフォルトルート:ITpro