VPCとは
Amazon Virtual Private Cloud(Amazon VPC)は、アマゾンがAWS上で提供している機能の1つで、AWS上に作成できる仮想ネットワークです。このネットワーク空間に、任意のIPアドレスを設定することが可能で、パブリックやプライベートとしてネットワークを分離したり、仮想サーバーを外部のインターネットに接続して、Webサーバーとして機能させたりできます。加えて、ネットワーク環境を活用するための、ルーターやゲートウェイといったネットワーク機器もAmazon VPCの中で仮想化し利用できます。また、Amazon VPCは、1つのリージョンの中に作成し、複数のアベイラビリティゾーン(AZ)に展開します。
VPCを構成する要素
一般的なIPネットワークを構築するには、サブネット、ルートテーブル、IPの指定、固定IPといった機能と、ルーター、ゲートウェイといった機器が必要です。Amazon VPCには、これらに対応するコンポーネントが用意されていて、コンソール上で組み合わせることで目的のネットワーク環境を構築することができます。各コンポーネントを紹介します。
Subnet(サブネット)
IPネットワークを構築するにはIPアドレスが必要ですが、サブネットはVPC内にIPアドレスの範囲を設定できる機能です。1つのVPC内に複数のサブネットを設定できます。仮想サーバーなどのコンピューティングリソースは、このサブネットの中に設置します。また、サブネットには2種類あり、インターネットに接続が出来る・出来ないかで呼び名が変わります。
- パブリックサブネット:インターネットに接続できるサブネット
- プライベートサブネット:インターネットに接続できないサブネット
この二つの呼び方はVPCを学ぶ上で良く出てくるので、覚えておくと便利です。
IGW(インターネットゲートウェイ)
サブネット内にある仮想サーバーなどのリソースを、インターネットと通信できるようにする機能です。VPCを設定すると、デフォルトで含まれていて、VPCにアタッチして利用します。
Route Table(ルートテーブル)
ルートテーブルは、ネットワークトラフィックの経路を判断する際に使用される、ルートと呼ばれる一連のルールで、例えばインターネットを介してVPCに入ってくるデータが、どのような経路で仮想サーバーに到達するかの経路を示します。VPC内部にルートテーブルを用意し、サブネットごとに使うルートテーブルを指定します。
Elastic IP(静的IPアドレス)
Amazon EC2にて作成した仮想サーバーをインターネットと接続するには、インターネットからアクセスできるパブリックなIPアドレスが必要です。IPアドレスには、システムを再起動するたびに変更されるものと、永続的に同じIPアドレスを使える、静的IPアドレスがあります。ファイアウォールやアクセス制限のためにIPアドレスを固定したい場合は、静的IPアドレスを使います。IPアドレスには、IPv4とIPv6という2種がありますが、現在はIPv4のみに対応しています。
NATゲートウェイ
VPC内のサブネットで、インターネットと接続しないリソースは、通常プライベートサブネット内に設定します。しかし時にはソフトウェアの更新などで一時的にVPC内からインターネットに送信したい場合があります。その際には、プライベートサブネットからインターネットに接続できるNATゲートウェイを使うと便利です。NATゲートウェイでは、VPCからインターネットに送信できますが、逆はできないので安心です。NATゲートウェイは、プライベートIPアドレスをパブリックIPアドレスに変換できる機能を有します。
Endpoints for S3(VPCエンドポイント)
サブネット内のインスタンスから他のAWSサービスに接続したいときに使用します。例えば、プライベートサブネット内のEC2からS3やDynamoDBに接続したい時にエンドポイントを使用します。外部のインターネットを経由しなくても接続出来るため、高いセキュリティで接続することが可能です。
VPCのセキュリティ・監視
AWSではセキュリティやコンプライアンスに関して、AWSとユーザーが責任を負う部分を明確にして、両者で責任を負う「責任共有モデル」という考え方を導入しています。Amazon VPCに関しても同様で、AWS側で対応するセキュリティについては、Amazon EC2インスタンスやサブネットへのファイアウォール機能や、NATゲートウェイなどVPCのコンポーネントの監視や問題発生時のレポート機能などがあります。
責任共有モデルとは
AWSにおいて構築されるシステムのセキュリティとコンプライアンスについては、AWSとユーザーの両者がその責任を負うという考え方です。AWSは、AWSのクラウドサービスを実行する、ハードウェア、ソフトウェア、ネットワーキングといったインフラストラクチャの保護について責任を負います。ユーザーの責任は、選択したAWSサービスによって異なります。Amazon EC2を選択した場合は、ゲストOS、インスタンスにインストールしたソフトウェア、ファイアウォールの構成などがユーザーの責任になります。
セキュリティグループ
セキュリティグループとは、VPC内でのAmazon EC2インスタンスに入出力するデータのトラフィックを管理することができる機能です。セキュリティグループにおいて、入力と出力の管理ルールは個別に設定できます。ルールは許可のみサポートされています。インスタンスには最大5つのセキュリティグループを割り当てられ、インスタンスごとに異なるものを割り当てることもできます。インスタンス起動時にセキュリティグループを設定しないと、VPCのデフォルトのセキュリティグループが自動的に割り当てられます。
ネットワークアクセスコントロールリスト(ネットワークACL)
ネットワークACLとはセキュリティに関連した機能で、VPC内のサブネットに入出力するデータのトラフィックを管理することができる機能(オプションレイヤー)です。ネットワークACLにおいて、入力と出力の管理ルールは個別に設定できます。ルールは許可と拒否がサポートされています。明示的にネットワークACLを設定しないと、VPCのデフォルトのネットワークACLが関連づけられます。
VPCフローログ
VPCフローログとは、VPCのデータトラフィックを監視する機能です。VPC内のネットワークインターフェイスとの間のIP トラフィックに関する情報をキャプチャできます。VPCフローログを取るには、ログを作成したいリソース、キャプチャするトラフィックの種類(許可、拒否、もしくはすべてのトラフィック)、フローログデータを発行する送信先(Amazon CloudWatch LogsまたはAmazon S3)を設定します。VPCフローログを参照すると、セキュリティグループのルールの制限が厳しすぎないか、適切かなどの判断が容易になります。
Amazon VPC トラフィックミラーリング
Amazon VPC トラフィックミラーリングとは、Amazon VPC内のAmazon EC2インスタンスからのネットワークトラフィックを複製し、そのトラフィックをセキュリティおよび監視アプライアンスに転送できる機能です。これによってコンテンツ検査、脅威の監視、トラブルシューティングといった作業が容易になります。
Amazon CloudWatch によるNATゲートウェイのモニタリング
Amazon CloudWatchを利用すると、NATゲートウェイを監視することができ、収集した情報からリアルタイムに近い読み取り可能なメトリクスを得ることができます。メトリクスは「NATゲートウェイ経由の同時アクティブTCP接続の合計数(0なら接続がないと判断可能)」「NATゲートウェイによって受信された送信先からのバイト数(データ損失の可能性を判断可能)」など14種あります。
Amazon VPC IP Address Manager
Amazon VPC IP Address Managerは、大規模なネットワークでも、簡単にIPアドレスの整理、割り当て、モニタリング、監査を行える機能です。単一の運用ダッシュボードから、組織のアカウント、Amazon VPC、AWSリージョンにまたがってIPアドレスの割り当てを管理できます。従来スプレッドシートで行っていたIP管理の負荷を大幅に低減できます。
リージョンについてはこちらの記事で詳しく説明しています。
https://envader.plus/article/61
VPCの料金について
Amazon VPCを作成し使用することは無料です。ただし、NATゲートウェイなど、オプションのVPC機能を利用した場合、量ベースで課金されます。東京リージョンでの各オプション料金を紹介します。
NATゲートウェイ
NATゲートウェイを利用した場合、データトラフィックが送信か受信かにかかわらず、データ量で課金されます。処理データ1GBあたり0.062USDです。また接続していた時間に関しても課金されます。1時間あたりのNATゲートウェイ利用料金は0.062USDです。1時間未満は1時間分になります。
トラフィックミラーリング
ネットワークの分析に使えるトラフィックミラーリングも有料です。トラフィックミラーリングが有効になっているEC2インスタンスのElastic Network Interfaceに対して1時間ごとに、0.018USDが課金されます。1時間未満は1時間分になります。
IP Address Manager
IP Address Manager(IPAM)の利用も有料です。IPAMで管理するアクティブなIPアドレスごとに、1時間単位で、0.00027USD課金されます。例えば、1000個のIPアドレスを1ヶ月利用すると、1000 x 30日 x 25時間 x 0.00027USD=194.4USDになります。
VPCの設定例
Amazon VPCを構築してAmazon EC2インスタンスを設置し外部のインターネットと接続するといった流れを、VPC環境のイメージ図を添えて紹介します。Amazon EC2インスタンスを設置した場合、Amazon EC2インスタンス上にデータベースを構築した場合、NATゲートウェイを使った場合などのAmazon VPC環境を紹介します。
Amazon EC2インスタンスの設置
Amazon EC2インスタンスを設置する場合は、
- リージョンを指定
- その中でVPCを作成
- サブネットを作成するAZを指定
- パブリックサブネットの設定
- インターネットゲートウェイをVPCにアタッチする
- ルートテーブルを作成する
- ECインスタンスを設置
という流れで実行します。
イメージ図は、以下のようになります。
データベースの設置
Amazon EC2インスタンスで利用するデータベースを設置します。
- リージョンを指定
- その中でVPCを作成
- サブネットを作成するAZを指定
- パブリックサブネットの設定
- インターネットゲートウェイをVPCにアタッチする
- ルートテーブルを作成する
- ECインスタンスを設置
- プライベートサブネットの設置
- データベースの設置
という8と9の手順が加わります。
プライベートサブネット内のデータベースはパブリックサブネット内のEC2インスタンスとデータのやり取りは行いますが、インターネットとは接続されていません。
イメージ図は、以下のようになります。
NATゲートウェイを利用
プライベートサブネット内に設置されたAmazon EC2上のデータベースは、本来インターネットと接続されていませんが、何らかの理由や任意のタイミングでインターネットとデータをやり取りしたい場合、NATゲートウェイを利用します。その場合は
- NATゲートウェイをパブリックサブネット内に設置
- NATゲートウェイとインターネットゲートウェイを接続
という手順を踏みます。
イメージ図は、以下のようになります。
VPCの設定方法
VPCウィザードというVPCの初期設定を簡単に設定出来る機能を使って、パブリックサブネットとプライベートサブネットを作成していきます。
1.VPC設定画面へ移動
AWSコンソールにログインしたら、左上の検索窓を選択。
検索窓にVPCと入力したら、候補に出て来た「VPC」をクリック。
2.VPCウィザードを起動
VPCダッシュボードに移動したら、左上の「VPCを作成」をクリック。
3.VPCウィザードでの設定
- 今回はパブリックサブネットとプライベートサブネットを作成するので、「VPCなど」を選択
- 任意の名前を入力
- マルチAZ配置にするかどうかを設定
- 任意のアベイラビリティゾーンを選択
- 任意のパブリックサブネットの数を選択
- 任意のプライベートサブネット数を選択
- 任意のパブリックサブネットCIDRブロックを設定
- 任意のプライベートサブネットCIDRブロックを設定
- NATゲートウェイを設置する際はここで設定します。
- VPCエンドポイントを設置する際はここでS3ゲートウェイを設定します。
- 各設定が完了したら、VPCを作成をクリック
4.VPCウィザードでの設定完了
すべて成功になれば作成完了です。
まとめ
AWS VPCについて解説しました。VPCはインターネットとの接続を管理する事が出来るとても大事なAWSサービスです。AWSを触ったことがないという方は、言葉だけで覚えようとしてもなかなか理解するのは難しいので、簡単な構成で良いので実際にVPCを構築してみてはいかがでしょうか。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.04.14
就職・転職に有利!AWS プロフェッショナル SAP取得ガイド
この記事では、そんな「AWSプロフェッショナルSAP」について紹介します。取得するまでの手順やオススメ対策ポイントも解説しているので、ぜひ参考にしてください。
- AWS
- 資格
2024.07.23
【Terraformハンズオン】ECS Fargateでアプリケーションデプロイを実践してみよう
ECSでは、Dockerコンテナが実行されている1つ以上のEC2インスタンスを「クラスタ」と呼ばれる単位で扱います。 そのクラスタは、「EC2起動型」と「Fargate」から選択することができ、今回の記事ではFargateをTerraformで構築する手順を解説します。
- AWS
2023.09.25
【わかりやすく解説】可用性とは?
可用性について解説しました。システムにおける可用性とは一体何なのか?初心者でもわかるように解説しております。
- AWS
- インフラエンジニア