AWS 色々なGatewayを整理する
皆さん、こんにちは。技術開発グループのn-ozawanです。
過酷な環境で生息するカンガルーなどの一部の有袋類は、十分な食料を得られないなどの状況に陥った場合、着床遅延という妊娠を遅らせる繁殖戦略を持っています。
本題です。
AWSでインフラストラクチャを構築するには適切にGatewayを配置することも重要です。ただ、AWSに登場するGatewayが多すぎて困惑されている人は私だけではないはず。ということで、今回はAWSの主なGatewayを整理したいと思います。
目次
AWSのGateway
Gatewayとは?
そもそもGatewayとは何でしょうか?Gatewayとはプロトコルの異なるネットワークを繋ぐ機器のことです。例えば一般的にご家庭でインターネットをする場合、LANからWANへ接続するために、モデム(もしくはONU)などの機器を設置します。この設置した機器がGatewayです。他にはWifiルーターもGatewayであり、Gatewayは異なるネットワークを繋げることでスムーズな通信を実現します。
Gatewayは「入口」という意味を持ちます。同じプロトコルでも、異なるネットワークを繋ぐ役目もあります。AWSでは少なくとも以下のGatewayがあります。今回はその一部を取り上げます。
- Internet Gateway
- NAT Gateway
- Egress-only Internet Gateway
- Customer Gateway
- Virtual Private Gateway
- Transit Gateway
- API Gateway
- Storage Gateway
Internet Gateway
Internet Gatewayは、VPCとインターネットの間で双方向通信したい際に用いるGatewayです。Internet Gatewayを使用しないと外部への公開は出来ませんし、リクエスト送信も出来ません。なお、IPv6でインターネットに繋がりたい場合はEgress-only Internet Gatewayを使用します。

NAT Gateway
NAT Gatewayは、Private Subnetからインターネットへ通信したい際に用いるGatewayです。
Subnetとは、VPC内におけるIPアドレスの範囲です。IPアドレスでそのネットワークを区分けします。例えば、とあるSubnetのIPアドレスを192.168.1.0/24とした場合、そのSubnetは192.168.1.0~192.168.1.255の範囲を取ります。
Internet Gatewayと直接なルートを持つSubnetを「Public Subnet」と呼びます。Public Subnetはインターネットと双方向の通信が可能となります。一方で、Internet Gatewayと直接なルートを持たないSubnetを「Private Subnet」と呼びます。Private Subnetはインターネットとの通信が行えないため、Public Subnetと比べてより高いセキュリティが確保されています。
NAT Gatewayは、Private Subnetからインターネットへの通信を可能とします。一方で、インターネットからPrivate Subnetへの通信は行えません。高いセキュリティを確保しつつ、インターネットへの通信を可能とします。

API Gateway
API Gatewayは、RESTやHTTP、Websocket APIを作成して公開するためのAWSのサービスです。API Gatewayを利用すれば、インターネットにAPIを公開し、クライアントからのリクエストをAWS Lambdaなどの処理にルーティングしてくれます。
API Gatewayで良く使われる例としては、AWS Lambdaとの連携かと思います。AWS LambdaでAPIの処理を実装し、API Gatewayでルーティングさせることにより、サーバーレスでAPIを構築することが出来ます。
API Gatewayでは、AWS IAMやAmazon Cognitoなどと連携することにより、強力な認証を行うことも可能です。また、CloudWatchとの連携によりAPIに関するログを記録し、CloudTailとの連携によりAPIの使用状況をモニタリングすることも可能です。AWS X-Rayと連携すれば、パフォーマンスやレイテンシーを確認することも出来ます。これらすべてがサーバーレスで構築できるのがAPI Gatewayの強みです。

Transit Gateway
Transit Gatewayは、複数のVPCやオンプレミスを相互接続するための中継ハブです。VPCはリージョンを跨いで作成することは出来ません。よって、システムがグローバルに展開される際、VPCはリージョンごとに作成されるため、それらを効率よく相互接続するためにTransit Gatewayが利用されます。
Transit Gatewayを、AWS Resource Access Managerを使用してAWSアカウント間で共有することにより、異なるAWSアカウントのVPC同士を相互接続することも可能になります。

おわりに
Transit GatewayはAWS Direct Connectと接続することにより、オンプレミスとの相互接続を容易にします。AWSではオンプレミスとの接続に関して、いくつかの方法を提供していますので、別の機会に取り上げたいと思います。
AWSに限った話ではありませんが、システムが大きくなればなるほど、異なるネットワーク間をどう接続するのかも1つの課題になります。AWSが提供するGatewayの特性を理解して、適切にインフラ環境を構築したいですね。
ではまた。