AWS 使ってみようVPC

はじめに

VPC(Virtual Private Cloud)とは、AWS上に仮想ネットワークを作成する事ができるサービスです。

このVPCを使うと、インターネットに接続するパブリックサブネットや、データベースなどインターネットに接続させないプライベートサブネットなど、役割に応じてネットワークを分けて作成したり、インターネットVPNなど、セキュアなネットワークを構築する事が出来るようになっています。

仮想ネットワークの設定となると、敷居が高くなったような感じで、不安になったりしますが案外、要点さえ掴んでしまえば大した事はありません。

本稿では、重要な用語や設定方法などVPCの基本を理解する為の最初の一歩を解説します。

また、作成したサブネットにEC2インスタンスを作成する手順も解説しますので、
ぜひ最後までご覧下さい。

VPCを理解する為の重要キーワード

リージョンとアベイラビリティゾーン

リージョンは世界中に存在するAWSのデータセンターを、各地域ごとに纏めたようなものです。

各データセンターは、AZ(アベイラビリティゾーン)と呼ばれております。各AZの具体的な場所は公表されていないそうです。リージョンは複数のAZにまたがって構成されているので、万が一の災害やテロなどで、1つのAZがダウンしても、その他のAZで稼働できるようになっているため、AWSが障害に強い理由の1つとなっています。

サブネット

VPCの中に作成する事ができるネットワークです。
各用途ごとに、VPC内に複数作成する事ができます。

例えば、インターネットからのアクセスを許可するWebサーバーを配置する為のパブリックサブネットや、データベースなど、VPC内部の通信のみ許可して、インターネットには直接繋がないようにするプライベートサブネットを作成する事ができます。

また、サブネットは各AZに複数個作成する事ができます。

インターネットゲートウェイとルートテーブル

インターネットゲートウェイは、VPCとインターネットをつなぐ仮想的なルータです。

そのためVPC内部のパブリックサブネットに配置された、EC2インスタンスをインターネットに接続するには、インターネットゲートウェイを作成して、VPCにアタッチする必要があります。

ルートテーブル

ルートテーブルはVPC内部のサブネットごとに、通信の通り道を設定するためのものです。

後ほど、設定手順をご紹介します。

新規でVPCを作成してみる

実際に東京リージョンにVPCを作成してみます。

AWSにログイン後、サービスでVPCと検索してVPCのページを表示します。リージョンは東京が選択されている事を確認し、次にVPCの作成ボタンをクリックします。

以下の通り入力し、作成ボタンをクリックします。

  • 名前タグ:vpc−tokyo-test01
  • IPv4 CIRDブロック:10.0.0.0/16
  • IPv6 CIDRブロック:IPv6 CIDRブロック なし

以上でVPCの作成は完了です。

サブネットの作成

VPCを作成したら、そのVPCの中にサブネットを作成します。これも実際にやってみました。

VPCのページで左側のメニューからサブネットを選択します。

すでにデフォルトのサブネットが作成されていますが、今回は使いません。サブネットの作成ボタンをクリックし、以下のように入力して作成ボタンをクリックします。

  • 名前タグ:subnet-public-az1a
  • VPC:ここは、先程作成したVPCを選択します
  • アベイラビリティゾーン:ap-northeast-1a
  • IPv4 CIDR ブロック:10.0.20.0/24

以上でサブネットの作成は完了です。

インターネットゲートウェイの作成

VPCのページで左側のメニューからインターネットゲートウェイを選択します。

インターネットゲートウェイの作成ボタンをクリックし、名前タグを入力して作成ボタンをクリックします。

  • 名前タグ:igw-mygw

次に、作成したゲートウェイを選択し、アクションから、VPCにアタッチを選択します。

先程作成したVPCを選択し、アタッチボタンをクリックします。

以上で、インターネットゲートウェイの作成は完了です。

ルートテーブルの作成

VPCのページで左側のメニューからルートテーブルを選択します。

以下のように入力し作成ボタンをクリックします。

  • 名前タグ:rt-public-01
  • VPC:先程作成したVPCを選択します

デフォルトで、送信先に10.0.0.0/16が指定されたエントリーがあるのですが、これはVPC内部の通信用途ですので、外部に接続する設定を追加します。

先程作成した rt-public-01を選択し、ルートタブ > ルートの編集の順にクリックします。

ルートの編集ページで、ルートの追加ボタンをクリックし、以下のように入力してルートの保存ボタンをクリックします。

  • 送信先:0.0.0.0/0
  • ターゲット:先程作成したインターネットゲートウェイ

作成したルートテーブルを選択し、サブネットの関連付け > サブネットの関連付けの編集の順でクリックします。

今回関連付けを行うのは、パブリックサブネットなので、subnet-public-az1a を選択し保存ボタンをクリックします。

以上で、ルートテーブルの作成は完了です。

パブリックサブネットにEC2インスタンスを作成してみる

上記で作成したVPCとパブリックサブネットを指定してEC2インスタンスを作成してみます。

  • AMIの選択:AmazonLinux2
  • インスタンスタイプ:t2.micro
  • ネットワーク:vpc−tokyo-test01
  • サブネット:subnet-public-az1a
  • 自動割り当てパブリックIP:有効化

また、後ほどpingによる接続確認を行うため、EC2のセキュリティグループ に下記設定を追加します。

  • タイプ:すべてのICMP IPv4
  • プロトコル:すべて
  • ポート範囲:該当なし
  • ソース:ご自身のグローバルIPアドレス

EC2インスタンスにpingで疎通確認してみる

EC2のページからIPv4パブリックIPを確認します。

Windowsならコマンドプロンプト、macならターミナルを立ち上げて、先程作成したEC2インスタンスにpingを飛ばして結果が返ってくるか確認します。

上記の設定がすべて正しく設定できていれば、EC2インスタンスから応答が返ってくるはずです。

AWS CLIで作成してみる

上記手順に慣れてくると、いちいちマネジメントコンソールから実行するのも面倒くさいと感じるかもしれません。

AWS CLIを使うと、手元でご利用されているパソコンから間接的にAWSのAPIを使って、様々な操作を実行出来るようになります。

上記で記載した、VPC、サブネット、インターネットゲートウェイ、ルートテーブル、EC2インスタンスの作成や設定もコマンドで実行できるので、作業スピードは格段に速くなります。

実は、EC2インスタンスには、既にAWS CLIがインストールされていますので、簡単なセットアップだけで使えるようになります。

しかし、いちいちEC2にログインするのも手間ですし、手元でご利用のパソコンからコマンドで直接AWSを操作してみたいと思われる方も多いと思います

そこで、AWS CLIのインストールとセットアップから、本稿で紹介した手順をAWC CLIで実行してみたいと思います。

AWS CLIのインストール

インストールに関しては、AWS公式サイトをご覧頂いたほうが、分かりやすいと思います。

今回は、AWS CLI バージョン2 を選択します。

インストールが完了したら、コマンドラインで aws と入力します。

usage などが表示されたら無事インストール出来ている事になります。

AWS CLIセットアップ

続いて、セットアップを行います。

セットアップには、IAMユーザーのアクセスキーが必要になります。

AWSのマネジメントコンソールから、IAMの画面を開いて、対象のIAMユーザーを選択し、認証情報タブから、アクセスキーの作成ボタンをクリックします。

アクセスキーIDとシークレットアクセスキーが表示されます。また、2つのキー情報が記載されたcsvファイルもダウンロード出来ます。画面を閉じてしまうと、シークレットアクセスキーが確認出来なくなりますので、csvファイルは必ずダウンロードして大切に保管するようにしましょう。

コマンドラインでaws configure と入力後、以下の様に入力していきます。

  • AWS Access Key ID [None] : [IAMユーザーのアクセスキー]
  • AWS Secret Access Key [None] : [IAMユーザーのシークレットアクセスキー]
  • Default region name [None] : [ap-northeast-1] //※東京リージョンの場合
  • Default output format [None] : json

以上でセットアップは完了です。

AWS CLIでVPCの作成

VPCを作成するには、以下のコマンドを実行します。

  • aws ec2 create-vpc –cidr-block 10.0.0.0/16

作成されたvpcの情報がjson形式で表示されたらOKです。また、作成済みのvpcを確認するコマンドは以下の通りです。

  • aws ec2 describe-vpcs

このままでも良いのですが、管理しやすいようにVPCにNameタグをつけましょう。

  • aws ec2 create-tags –resources [VPCのID] –tags “Key=Name, Value=[任意の名称]”

AWS CLIでサブネット作成

サブネットを作成するには、以下のコマンドを実行します。

  • aws ec2 create-subnet –vpc-id [VPCのID] –cidr-block [サブネットのCIDRブロック] –availability-zone [サブネットを作成するAZ]

管理上、パブリックサブネットなのかプライベートサブネットなのか判別しやすいようにNameタグを付けましょう。 コマンドは先程と同様です。

  • aws ec2 create-tags –resources [サブネットのID] –tags “Key=Name, Value=[任意の名称]”

作成済みのサブネットを確認するコマンドは以下の通りです。

  • aws ec2 describe-subnets

AWS CLIでインターネットゲートウェイを作成する

作成したサブネットをパブリックサブネットにするために、まずインターネットゲートウェイを作成します。

作成、タグ付け、確認のコマンドは以下の通りです。

  • aws ec2 create-internet-gateway
  • aws ec2 create-tags –resources [IGWのID] –tags “Key=Name, Value=[任意の名称]”
  • aws ec2 describe-internet-gateways

作成後、パブリックサブネットが属するVPCにアタッチが必要です。

デフォルトVPCがアタッチされてしまっている場合は、まずデタッチしてからアタッチします。

  • aws ec2 detach-internet-gateway –internet-gateway-id [IGWのID] –vpc-id [デタッチするVPCのID]
  • aws ec2 attach-internet-gateway –internet-gateway-id [IGWのID] –vpc-id [アタッチするVPCのID]

AWS CLIでルートテーブルを作成する

作成、タグ付け、確認のコマンドは以下の通りです。

  • aws ec2 create-route-table –vpc-id [VPCのID]
  • aws ec2 create-tags –resources [ルートテーブルのID] –tags “Key=Name, Value=[任意の名称]”
  • aws ec2 describe-route-tables

作成したルートテーブルをパブリックサブネットに関連付けます。

  • aws ec2 associate-route-table –subnet-id [サブネットのID] –route-table-id [ルートテーブルのID]

AWS CLIでセキュリティグループを作成する

EC2インスタンスを作成する前にセキュリティグループを作成しておきます。

  • aws ec2 create-security-group –group-name [任意のセキュリティグループ名] –description [グループについての説明]

作成後にICMPとsshを許可するインバウンドルールを追加します。

  • aws ec2 authorize-security-group –group-id [セキュリティグループID] –protocol icmp — -1 –cidr [CIDR ブロック]
  • aws ec2 authorize-security-group –group-id [セキュリティグループID] –protocol tcp — 22 –cidr [CIDR ブロック]

AWS CLIでEC2インスタンスを作成する

AMIはAmazon Linux2 AMI(ami-0f310fced6141e627)、インスタンスタイプは t2.microを選択します。

  • aws ec2 run-instances –image-id [AMIのID] –instance-type t2.micro –key-name [キーペア名] –security-group-ids [セキュリティグループID] –subnet-id [サブネットID] –associate-public-ip-address

作成したEC2インスタンスにNameタグを付けます。

  • aws ec2 create-tags –resources [EC2インスタンスのID] –tags “Key=Name, Value=[任意の名称]”

まとめ

VPCを作成から、プライベートサブネットの構築手順を紹介しました。

まずは、AWSの様々なサービスをマネジメントコンソールから実際に使ってみて、慣れてきたら、AWS CLIで同じ操作をコマンドで実行してみて下さい。

最後までご覧頂き、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です