SREディレクター の @ntakaaki です。フォトクリエイトではAWS・社内両方のインフラを担当してるチームのリーダーをしています。
この記事は Photocreate Advent Calendar 2018 の 24日目 の記事です。
#はじめに
これまでVPC間のPeeringをごく限定的にはやっていたのですが、増えたときの管理が
面倒そうということで積極的には手を出してませんでした。
re:Invent2018でTransit Gatewayの発表があり、それが急遽東京リージョンでも使えるようになったので、触ってみました。
Transit Gatewayとは
従来VPC間の接続はVPC Peeringをピアツーピアで張ることで確立していました。
ただ、接続する対象のVPCが増えてくるとこのピア接続がフルメッシュになってしまい、管理が大変になるという問題がありました。
re:Invent2018で発表されたTransit Gateway(以下TGW)はTransitの名の通り
VPCやVPN接続の中心に位置して、それぞれの接続の相互の接続を管理してくれます。
具体的には接続したいそれぞれのVPCのサブネットをTGWにアタッチし、各VPC内のルーティングテーブルを設定します。
するとアタッチされたVPC間の通信をTGW経由で行うことができます。
TGWには複数のVPCやVPNをアタッチできるので、ここのVPC・VPN間同士を接続する必要がなくなり、ネットワーク設計を簡素化することができます。
基本的な設定
TGWはVPCの一機能という扱いのようです。
AWSのサービス一覧からVPCを選択し、左メニューの下段にTGWの項目があります。
TGWの作成
メニューのTransit Gatewaysをクリックします。
Create Transit Gatewayをクリックします。
名前は適宜設定し、その他の設定はすべてデフォルトのままにしておきます。
Create Transit Gatewayをクリックして作成します。
完了するまでに数分かかります。
Transit Gateway Attachmentsの作成
TGWと接続したいVPCやVPNの接続の設定をします。
ルートテーブルの設定
疎通を取りたい各VPCで、Destinationに相手のVPCのアドレスを指定しTargetに先程設定したTGWを指定します。
事前にTransit Gateway AttachmentでVPCをアタッチしておくことで、TargetのプルダウンでTGWを選択できるようになります。
t
SecurityGroupの設定
最終的に疎通を取りたいEC2などのリソースのSecurityGroupにアクセス元のIPを許可する設定をします。
今の所TGWにはアクセスを制限する機能などは無いので、疎通は通ったものの
HTTPしか許可したくないなどの個別の制御はSecurityGroupやNACLで対応することになります。
以上でごく単純なケースの設定はで来ました。
以降は接続したいVPC毎に上記の作業を繰り返していくことになります。
#他のアカウントのVPCとも通信したい
他のAWSアカウントのVPCをTGWにアタッチして通信することもできます。
事前にリソースアクセスマネージャでアカウント間の共有設定を済ませておく必要があります。
リソースアクセスマネージャの設定は長くなるので割愛しますが、下記の記事が参考になると思います。
[新サービス]でた!AWS Resource Access Manager(RAM)でクロスアカウントのリソース共有が可能に #reinvent
まとめ
TransitGatewayの登場で複数VPC、VPNの接続の管理を簡素化することが期待できそうです。
今後AWSアカウントをサービスや環境別に分割することを考えているので、そうなると
必然的にVPCも複数できることになるため、リソースアクセスマネージャと合わせて活用していきたいサービスと考えてます。
フォトクリエイトではAWSなど、世の中で進化しているサービスを取り込みながら、ともにプロダクト・エンジニアとして進化していきたい方からの ご応募をお待ちしております。