AWSの基礎 〜AWSの主要サービス紹介 part1: ネットワークサービス〜
今回から代表的なAWSサービスの説明を行います。本記事ではネットワークの環境設定を行うための代表的なAWSサービスについて紹介します。
目次
はじめに
今回から個別のサービスについて紹介していきます。本記事ではクラウドの環境にネットワークを構築するためのサービスについてまとめていきます。具体的には、以下の3つのサービスを紹介します。
・ Amazon VPC
・ Amazon Route 53
・ Elastic Load Balancing
各種サービスによって提供されるネットワークの概要
簡単にイメージするために、今回紹介する各種サービスが行っていることが実際の物理機器がある場合にどのようになるのかを考えてみましょう。
AWSのネットワークサービスが行っていることは、ネットワークに接続したい機器がどのような相手とどのような形で通信するのかを決めるという、ルーター(ブリッジ)やDNSが担っている部分に当たります。
例えば、VPCを見てみましょう。詳しくは後述しますがVPCはサブネットワークそのものであり、その内部のさらに小さなサブネットワークをどのように運用するのか、そして外部との通信をどのように行うのかを決めます。これらは、ネットワーク間のやり取りを規定するという点でルーターに似ています(もちろん、両者で異なる機能もありますが)。
大事なのは、図のようにこれらのサービスはサブネットワーク間の通信やサブネットワーク内部の通信をどうやって行い、誰にパケットを送信するのかを決めるということです。この点を踏まえながら、それぞれのサービスについて詳しくみていきましょう。
Amazon VPC
まずはじめに、VPCとはVirtual Private Cloudの略称で、(1)AWSの環境内で作成した仮想ネットワークそのもの、(2)仮想ネットワークやその通信を管理するサービスとして大きく2パターンの文脈で使用されるようです。本記事では両者の混同を避けるため、以後前者をVPC、後者をAmazon VPCと区別して呼ぶことにします。
さて、端的に言えばAmazon VPCはAWS環境内にネットワークを作成して、そのネットワークの性質を決めるサービスになります。ここではネットワークの構築、ネットワーク間の通信、ネットワークのセキュリティの順に説明します。
Amazon VPCの作るネットワーク単位
まず、作成されるネットワークそのものの持つ性質について説明します。
AmazonVPCではVPCと呼ばれるネットワークが作成され、その中に複数のサブネットを作ることが可能です。VPCは複数のアベイラビリティ・ゾーン(AZ)を跨ぐことができますが、サブネットはAZごとに用途に合わせて作られ、外部接続をしないプライベートサブネットにすることも可能です(逆に外部との通信を行うものをパブリック接続という)。
Amazon VPCの定義するネットワーク間の通信
ここまでの説明でネットワーク本体の作成はできていますが、ネットワークとインターネットを繋ぐ部分の設定を行っていないため、このままでは別のVPCやAWSリソース、外部のネットワークなどにはアクセスできません。これを解消するためにはゲートウェイなどのリソースを設置する必要があります。
通信を行うために使用するリソースは次のようです。
- NAT ゲートウェイ (NAT GW)
- インターネットゲートウェイ (Internet GW)
- VPC エンドポイント (VPC Endpoint)
- VPC ピアリング (VPC Peering)
- VPNゲートウェイ (VPN GW)
- トランジットゲートウェイ (Transit GW)
- カスタマーゲートウェイ (Customer GW)
下の写真のように、1はサブネット単位(プライベートサブネットのみ)、2と3はVPC単位、4から6がAWSのリージョンごとに作る必要のあるリソースとなります。また、7はオンプレミス環境などのVPNでAWS内のネットワークに接続を行いたい環境に置きます。以下では、ネットワークの通信形態ごとに説明していきます。
以後、この写真を参考にしながら説明をしていきます。
サブネットとインターネットの通信
サブネットとインターネットの通信は、写真の黄色の部分のような経路を通って行われます。このため、サブネット自体の性質によらずサブネットとインターネットの通信にはInternet GWは必須となり、プライベートサブネットを使う場合はこれに加えてNAT GWが必要ということになります。
この2つのゲートウェイはいずれもプライベートIPアドレスとグローバルIPアドレスを変換するNAT機能を有しています。しかし、Internet GWが1:1のIPアドレス変換を行う一方でNAT GWは多:1の変換を行うため、パブリックサブネットからの通信は双方向で可能ですがNAT GWを通る必要のあるプライベートサブネットの通信はサブネットから出る通信のみしか行えないという違いがあります。これにより、保守性を高めているということです。ユースケースに合わせて区別しましょう。
オンプレミス環境 (別のプライベート環境)とVPCの通信
VPCでは別のプライベート環境との通信方法として図の青色の線のようなVPN接続をサポートしています(ここではVPN接続についての説明は割愛します)。そして、VPN接続を行うために使用するのがVPN GWとCustomer GWになります。前者はAWSの環境に、後者はVPN接続先の環境に配置します。ルーティングについての細かい話も割愛しますが、動的にも静的にもルーティングすることが可能です。
別のVPCとの通信
VPC間の通信についてはプライベートアドレスを使用して相互に通信を行うことができます。この時に必要になるのがVPC Peeringです。同じリージョン内で、かつVPC Peeringさえ置いてあれば別のアカウントでも相互接続可能になります。
VPCと別のAWS内に置かれたリソース間での通信
また別途扱いますが、AWSでは一部のサービスにおいてVPCやサブネット外にリソースが置かれるものがあります(S3, DynamoDBなど)。これらにインターネットを経由することなくアクセスするために設置するのがVPC Endpointです。これにより図中緑のような経路でAWS内のみを通ってアクセスすることができるようになります。
なお、通信の際に必要な設定が違うことから、アクセスするサービスに応じてVPC Endpointは2種類に分けられます。
トランジットゲートウェイについて
トランジットゲートウェイは上記すべての接続を統合したネットワーク管理サービスであり、AWSのデフォルトの上限よりも多くのVPN接続を張ることができるなど、接続の形態が複雑化した場合などで有用になることがあります。ただし、追加の機能はほとんどないのでここでは軽く触れるだけにとどめます。
VPCによるアクセス制御
不正な接続を防ぎ、正しくルーティングを行うためにVPCでは以下の3つのアクセス制御を行なっています。
・ ルートテーブル: 各サブネットがどこにパケットを送信するのかを決めたもの。VPC作成時にメインルートテーブルができ、サブネットごとに新しくルートテーブルを作ることでカスタマイズできる。
・ セキュリティグループ: アクセスを許可する相手とポート番号のセットを記憶。許可しかできないことに注意。
・ ネットワークACL: サブネットごとに、特定の通信相手とポート番号のセットに対してアクセス許可の有無を設定する。設定は送信と受信別々に行われるほか、アクセスの禁止を決めることも可能。
Amazon Route 53
このサービスはサービスの監視を同時に行うことのできる権威DNSサーバーです。Route 53はその利用者が用意した、ドメイン名とAWS内のリソースとの対応関係を保持するようなコンテナ(ホストゾーン)を参照しながら、ドメイン名をIPアドレスに変換します。この際、同時に対象リソースのヘルスチェックを行い、不具合がある場合に別のリソースのIPアドレスを変えることで、サービスの持続性を向上させています。
なお、このIPアドレスへの変換(名前解決)のルールはルーティングポリシーと呼ばれるものを変更することで柔軟に変更させることができます。
Route 53 Resolver
Resolverという名前からもわかるように、権威DNSサーバーであるAmazon Route 53にフォワーディングを行うことで名前解決を行います。ただし、この機能はVPCごとに必ず1つあるものでその内部からの名前解決要求のみ受けて名前解決します。
Elastic Load Balancing (ELB)
文字通り、負荷分散を担うサービスです。同じように動作する複数のリソースに対して、どれにルーティングするかを決定します。ELBにはALB(Application LB)、NLB(Network LB)、CLB(Classic LB)と3種類あります。
CLBについては他2種が登場する以前の技術であり、それらの補助としての利用が推奨されます。
また、ALBとNLBについては負荷分散時に参照する部分がOSI参照モデルのどの層かという違いしかありません。レイヤーが高いALBはNLBと比べて、通信を終端してアプリケーション層の情報を見る必要があるため、負荷が大きく高度な分散が可能です。負荷分散自体の負荷の大きさと負荷分散時に使用する機能というトレードオフを考えて選択しましょう。
終わりに
この記事ではネットワークを構築するためのAWSのサービスについて紹介しました。次回はコンピューティングやストレージ関連のサービスについて紹介します。