TransitGatewayは複数のVPCを接続するときや、オンプレミスネットワーク、DirectConnectゲートウェイを接続する際に活躍するサービスです。
TransitGatewayは同一アカウント内のVPCだけしか繋げないわけではなく、他のAWSアカウントにあるVPCとの接続が可能なんですよね。プロジェクトによってはADサーバーは別アカウントで管理したい、なんてことがあるかもしれません。
今回の構築では、別のアカウントにあるVPCとの接続を行っていきます。
【この記事はこんな方におすすめ】
- Transit Gatewayについてさらっと知りたい方
- Transit Gatewayのハンズオンをやってみたい方
※記事タイトル通り、アカウント2つ利用します。
Transit Gatewayで、他アカウントのVPCと接続をしてみる
他アカウントとのVPC間接続ハンズオン
【前提条件】
今回の構築は、前回行った「Transit Gatewayを利用して、VPC間を接続してみる」の環境を利用しますので、ぜひ「Transit Gatewayを利用して、VPC間を接続してみる」を一読ください。
【構築図】
構築図にあります“今回はココ”と書かれた部分を構築し、アカウント2からアカウント1にあるEC2インスタンスに疎通確認を行います。
【今回使用するAWSサービス】
- Amazon CloudFormation
- AWS Transit Gateway
- キーペア
- AWS Resource Access Manager
【注意 】
今回の構築はアカウントを2つ利用します。各作業のはじめにどのアカウントで作業するか記載しますが、わかりにくい部分がありましたら申し訳ありません。
それでは構築していきます。
■キーペア作成
アカウント2の作業です。
まずはキーペアを作成します。設定値は以下の通りです。
項目 | 設定値 |
---|---|
名前 | saitou-handson-TGW-keypairs(任意) |
キーペアのタイプ | RSA |
プライベートキーファイル形式 | .pem |
EC2コンソール画面の左ペインから「キーペア」をクリックし、「キーペアを作成」を押します。
↓
↓設定値の入力が完了したら、「キーペアを作成」を押してください。
■CloudFormationテンプレート起動
アカウント2の作業です。
CloudFationテンプレートを使用して、アカウント2に環境を作成します。設定値は以下の通りです。
項目 | 設定値 |
---|---|
テンプレートの準備 | テンプレートの準備完了 |
テンプレートソース | テンプレートファイルのアップロード |
スタックの名前 | saitou-TGW-test-stack2(任意) |
CloudFormationコンソール画面の左ペインから「スタック」をクリックし、「スタックの作成」を押してください。
↓テンプレートファイルはこちらを利用してください。テンプレートファイルのアップロードが完了したら、「次へ」をクリックします。
↓スタックの名前を入力しましたら、パラメータの“wstgwKeyName”の項目で、最初に作成したキーペアを選択してください。選択が完了しましたら、「次へ」をクリックします。
↓“スタックオプションの設定”は何も変更せず、「次へ」をクリックしてください。
↓
↓ステップ4のレビューでは、ページ一番下にあります「AWS CloudFormationによって IAMリソースが作成される場合があることを承認します。」のチェックボックスにチェックを入れてください。
↓設定項目に問題なければ、「送信」を押しましょう。
スタックのステータスが“CREATE_COMPLETE”になれば、環境構築の完了です。
次の作業はアカウント1で行うのですが、アカウント2のアカウントIDが必要になります。メモ帳などにコピーしておきましょう。
■TransitGatewayリソース共有
ここからはアカウント1の作業です。
アカウント間でVPCを接続する際に、AWS ResourceAccessManagerのリソース共有を利用します。TrasitGatewayを作成したアカウント1から、アカウント2に対してリソースの共有を追加申請します。
VPCコンソール画面の左ペインからTransitGatewayをクリックします。
↓前回作成したTransitGatewayの“wstgwTgw”を選択し、「共有タブ」から「TransitGatewayを共有」を押してください。
↓次に「リソース共有を作成」をクリックします。
↓設定値は以下の通りです。
項目 | 設定値 |
---|---|
名前 | saitou-wstgw-RAM(任意) |
リソースタイプ | トランジットゲートウェイ |
選択されたリソース | 名前がwstgwTgwのもの |
外部アカウントの許可 | ☑ |
アカウントID | アカウント2のID |
↓リソースタイプ選択で「トランジットゲートウェイ」を選択してください。
↓プリンシパルの項目で、“外部アカウントの許可”にチェックを入れ、メモしておいたアカウント2のIDを検索窓に入れ、該当のAWSアカウントをクリックし、「追加」を押します。入力が完了しましたら、「リソースの共有の作成」をクリックしてください。
↓リソースの共有が作成されました。
しかし、リソース共有が作成されただけで、実際にはまだリソースを共有できていません。アカウントIDを知っているだけで一方的にリソースを共有出来たら、とても危険ですよね。リソースの共有がなされるためには、もう一方のアカウントの承認が必要です。
■TransitGatewayリソース共有の承認
ここからはアカウント2の作業です。
アカウント2側でリソース共有の承認作業を行っていきます。
AWSサービス検索画面で、「Resource Access Manager」と検索し、
クリックしてください。
↓左ペインから「リソースの共有」を押します。すでに“1招待”という表示がありますね。
↓承認する前に念のため概要画面で申請してきたアカウントに関して確認しましょう。
↓問題なければ、「リソースの共有を承認」をクリックし、「OK」を押してください。
↓
↓
アカウント2側でリソースの共有を承認したことで、アカウント1で作成したTransitGatewayが共有されました。
■TransitGatewayアタッチメント作成
アカウント2の作業です。
アカウント2で作成したVPCをトランジットゲートウェイに関連付けていきましょう。
VPCコンソール画面の左ペインから「TransitGateway」をクリックし、まずはリソースの共有がされているか確認します。
TransitGatewayが共有されていますね。それではアタッチメントを作成します。設定値は以下の通りです。
項目 | 設定値 |
---|---|
名前 | wstgwTgwVpcAttachmentPrivateVpc2(任意) |
TransitgatewayID | wstgwTgw-と名がついたもの |
DNSサポート | ☑ |
IPv6サポート | □ |
VPCID | wstgwPrivateVpc2 |
サブネット | wstgwPrivateVpc2TgwSubnet |
左ペインから「TransitGatewayアタッチメント」をクリックしてください。
↓続いて「Transitgatewayアタッチメントを作成」を押します。
↓アタッチメントの名前を入力し、TransitgatewayIDを選択します。
↓TransitGatewayに関連付けるVPC(wstgwTgw-xxxx)を選択し、アベイラビリティゾーンにチェックを入れ、「wstgwPrivateVpc2TgwSubnet」を選択しましょう。
↓入力が完了しましたら、「TransitGatewayアタッチメントを作成」をクリックしてください。
↓状態が“available”になりましたら、作成完了です。
TransitGatewayアタッチメントの作成は以上です。
■VPCルートテーブル編集
アカウント2の作業です。
アタッチメントの作成が完了しましたら、関連付けやTransitGatewayルートテーブルは自動的に編集されます。しかし、サブネットに紐づいているルートテーブルに関してはそのままです。アカウント2のPrivateSubnetに紐づいたルートテーブルを編集しましょう。
VPCコンソール画面の左ペインから、「ルートテーブル」を押し、「wstgwRtbPrivateVpc2PrivateSubnet」を選択してください。
↓「ルートタブ」から「ルートを編集」をクリックします。
↓以下の送信先を追加してください。
送信先 | ターゲット |
---|---|
0.0.0.0/0 | "tgw-"と付くもの |
↓
↓追加できましたら、「変更を保存」を押します。
↓
今回の構築は以上です。
■疎通確認
アカウント2の作業です。
アカウント2のVPCにありますEC2インスタンスから各VPCとインターネットに疎通確認していきます。
EC2コンソール画面からインスタンス「wstgwEc2Instance10-1-1-100」を選択し、「接続」をクリックしてください。
↓「セッションマネージャー」タブから「接続」を押します。
以下のコマンドを押します。
bash -I
【疎通確認1】
それでは疎通確認していきます。まずはインターネット向きです。以下のコマンドを打ちます。
ping amazon.co.jp
応答が返ってきました。
【疎通確認2】
次にアカウント1のPrivateVPC1にあるEC2インスタンス(10.0.1.100)に疎通確認してみます。以下のコマンドを打ちます。
ping 10.0.1.100
応答が返ってきました。
【疎通確認3】
さいごはBoundary VPCにありますEC2インスタンス(192.168.1.100)に疎通確認してみましょう。以下のコマンドを打ちます。
ping 192.168.1.100
応答が返ってきました。
今回のハンズオンは以上です。
まとめ:Transit Gatewayを利用して、別アカウントのVPCと接続してみる
Transit GatewayはVPCとVPCを簡単につなげることができ、ピアリング接続とは違い、数千のVPC、VPN、DirectConnectGatewayとの接続が可能です。
TransitGatewayとリソース共有を利用すれば、アカウントを分けてAWS運用ができます。用途ごとにアカウントを分けたいと考えている方はぜひ利用してみてください。
今回のハンズオンではCloudFormationを利用して環境構築したので、Transit Gatewayの詳細な設定はしていません。ネクストステップとしてさらに理解を深めたい方は、今回の構築図をもとに一から作成し疎通確認することをおすすめします。
参考リンク:AWS公式ドキュメント、AWS Transit Gateway ハンズオン
↓ほかの協栄情報メンバーもAWS Transit Gatewayやネットワークに関する記事を公開しています。ぜひ参考にしてみてください。
■VPC同士を VPC Peering する構築ハンズオン(INAMURA)
https://cloud5.jp/peering-vpc-to-each-other/
■DirectConnect GWとTransit GWを利用して国に跨るグローバルネットワークを構築(juwei)
https://cloud5.jp/directconnect-transitgw/