Transit Gatewayを利用して、別アカウントのVPCと接続してみる

TransitGatewayは複数のVPCを接続するときや、オンプレミスネットワーク、DirectConnectゲートウェイを接続する際に活躍するサービスです。

 

TransitGatewayは同一アカウント内のVPCだけしか繋げないわけではなく、他のAWSアカウントにあるVPCとの接続が可能なんですよね。プロジェクトによってはADサーバーは別アカウントで管理したい、なんてことがあるかもしれません。

 

今回の構築では、別のアカウントにあるVPCとの接続を行っていきます。

 

【この記事はこんな方におすすめ】

  • Transit Gatewayについてさらっと知りたい方
  • Transit Gatewayのハンズオンをやってみたい方

 

※記事タイトル通り、アカウント2つ利用します。

 

 

Transit Gatewayで、他アカウントのVPCと接続をしてみる

他アカウントとのVPC間接続ハンズオン

saitou-handson-transitgateway-other構築図

 

前提条件
今回の構築は、前回行った「Transit Gatewayを利用して、VPC間を接続してみる」の環境を利用しますので、ぜひ「Transit Gatewayを利用して、VPC間を接続してみる」を一読ください。

 

 

構築図
saitou-handson-transitgateway-other構築図2

 

構築図にあります“今回はココ”と書かれた部分を構築し、アカウント2からアカウント1にあるEC2インスタンスに疎通確認を行います。

 

 

今回使用するAWSサービス

 

  • Amazon CloudFormation
  • AWS Transit Gateway
  • キーペア
  • AWS Resource Access Manager

 

 

注意
今回の構築はアカウントを2つ利用します。各作業のはじめにどのアカウントで作業するか記載しますが、わかりにくい部分がありましたら申し訳ありません。

 

それでは構築していきます。

 

 

■キーペア作成

アカウント2の作業です。

 

まずはキーペアを作成します。設定値は以下の通りです。

 

項目 設定値
名前 saitou-handson-TGW-keypairs(任意)
キーペアのタイプ RSA
プライベートキーファイル形式 .pem

 

 

EC2コンソール画面の左ペインから「キーペア」をクリックし、「キーペアを作成」を押します。

 

saitou-handson-transitgateway-other-keypair

saitou-handson-transitgateway-other-keypair

 

↓設定値の入力が完了したら、「キーペアを作成」を押してください。

 

saitou-handson-transitgateway-other-keypair

 

 

■CloudFormationテンプレート起動

アカウント2の作業です。

 

CloudFationテンプレートを使用して、アカウント2に環境を作成します。設定値は以下の通りです。

 

項目 設定値
テンプレートの準備 テンプレートの準備完了
テンプレートソース テンプレートファイルのアップロード
スタックの名前 saitou-TGW-test-stack2(任意)

 

 

CloudFormationコンソール画面の左ペインから「スタック」をクリックし、「スタックの作成」を押してください。

 

saitou-handson-transitgateway-other-CloudFormation

 

↓テンプレートファイルはこちらを利用してください。テンプレートファイルのアップロードが完了したら、「次へ」をクリックします。

 

saitou-handson-transitgateway-other-CloudFormation

 

↓スタックの名前を入力しましたら、パラメータの“wstgwKeyName”の項目で、最初に作成したキーペアを選択してください。選択が完了しましたら、「次へ」をクリックします。

 

saitou-handson-transitgateway-other-CloudFormation

 

↓“スタックオプションの設定”は何も変更せず、「次へ」をクリックしてください。

 

saitou-handson-transitgateway-other-CloudFormation

saitou-handson-transitgateway-other-CloudFormation

 

↓ステップ4のレビューでは、ページ一番下にあります「AWS CloudFormationによって IAMリソースが作成される場合があることを承認します。」のチェックボックスにチェックを入れてください。

 

saitou-handson-transitgateway-other-CloudFormation

 

↓設定項目に問題なければ、「送信」を押しましょう。

 

saitou-handson-transitgateway-other-CloudFormation

 

 

スタックのステータスが“CREATE_COMPLETE”になれば、環境構築の完了です。

 

 

次の作業はアカウント1で行うのですが、アカウント2のアカウントIDが必要になります。メモ帳などにコピーしておきましょう。

 

saitou-handson-transitgateway-other-account

 

 

■TransitGatewayリソース共有

ここからはアカウント1の作業です。

 

アカウント間でVPCを接続する際に、AWS ResourceAccessManagerのリソース共有を利用します。TrasitGatewayを作成したアカウント1から、アカウント2に対してリソースの共有を追加申請します。

 

 

VPCコンソール画面の左ペインからTransitGatewayをクリックします。

 

saitou-handson-transitgateway-other-RAM

 

↓前回作成したTransitGatewayの“wstgwTgw”を選択し、「共有タブ」から「TransitGatewayを共有」を押してください。

 

saitou-handson-transitgateway-other-RAM

 

↓次に「リソース共有を作成」をクリックします。

 

saitou-handson-transitgateway-other-RAM

 

↓設定値は以下の通りです。

 

項目 設定値
名前 saitou-wstgw-RAM(任意)
リソースタイプ トランジットゲートウェイ
選択されたリソース 名前がwstgwTgwのもの
外部アカウントの許可
アカウントID アカウント2のID

 

 

saitou-handson-transitgateway-other-RAM

 

↓リソースタイプ選択で「トランジットゲートウェイ」を選択してください。

 

saitou-handson-transitgateway-other-RAM

 

↓プリンシパルの項目で、“外部アカウントの許可”にチェックを入れ、メモしておいたアカウント2のIDを検索窓に入れ、該当のAWSアカウントをクリックし、「追加」を押します。入力が完了しましたら、「リソースの共有の作成」をクリックしてください。

 

saitou-handson-transitgateway-other-RAM

 

↓リソースの共有が作成されました。

 

saitou-handson-transitgateway-other-RAM

 

 

しかし、リソース共有が作成されただけで、実際にはまだリソースを共有できていません。アカウントIDを知っているだけで一方的にリソースを共有出来たら、とても危険ですよね。リソースの共有がなされるためには、もう一方のアカウントの承認が必要です。

 

■TransitGatewayリソース共有の承認

ここからはアカウント2の作業です。

 

アカウント2側でリソース共有の承認作業を行っていきます。

 

 

AWSサービス検索画面で、「Resource Access Manager」と検索し、
クリックしてください。

 

saitou-handson-transitgateway-other-RAM

 

↓左ペインから「リソースの共有」を押します。すでに“1招待”という表示がありますね。

 

saitou-handson-transitgateway-other-RAM

 

↓承認する前に念のため概要画面で申請してきたアカウントに関して確認しましょう。

 

saitou-handson-transitgateway-other-RAM

 

↓問題なければ、「リソースの共有を承認」をクリックし、「OK」を押してください。

 

saitou-handson-transitgateway-other-RAM

saitou-handson-transitgateway-other-RAM

 

 

アカウント2側でリソースの共有を承認したことで、アカウント1で作成したTransitGatewayが共有されました。

 

■TransitGatewayアタッチメント作成

アカウント2の作業です。

 

アカウント2で作成したVPCをトランジットゲートウェイに関連付けていきましょう。

 

 

VPCコンソール画面の左ペインから「TransitGateway」をクリックし、まずはリソースの共有がされているか確認します。

 

saitou-handson-transitgateway-other-attachment

 

TransitGatewayが共有されていますね。それではアタッチメントを作成します。設定値は以下の通りです。

 

項目 設定値
名前 wstgwTgwVpcAttachmentPrivateVpc2(任意)
TransitgatewayID wstgwTgw-と名がついたもの
DNSサポート
IPv6サポート
VPCID wstgwPrivateVpc2
サブネット wstgwPrivateVpc2TgwSubnet

 

 

左ペインから「TransitGatewayアタッチメント」をクリックしてください。

 

saitou-handson-transitgateway-other-attachment

 

↓続いて「Transitgatewayアタッチメントを作成」を押します。

 

saitou-handson-transitgateway-other-attachment

 

↓アタッチメントの名前を入力し、TransitgatewayIDを選択します。

 

saitou-handson-transitgateway-other-attachment

 

↓TransitGatewayに関連付けるVPC(wstgwTgw-xxxx)を選択し、アベイラビリティゾーンにチェックを入れ、「wstgwPrivateVpc2TgwSubnet」を選択しましょう。

 

saitou-handson-transitgateway-other-attachment

 

↓入力が完了しましたら、「TransitGatewayアタッチメントを作成」をクリックしてください。

 

saitou-handson-transitgateway-other-attachment

 

↓状態が“available”になりましたら、作成完了です。

 

saitou-handson-transitgateway-other-attachment

 

TransitGatewayアタッチメントの作成は以上です。

 

 

■VPCルートテーブル編集

アカウント2の作業です。

 

アタッチメントの作成が完了しましたら、関連付けやTransitGatewayルートテーブルは自動的に編集されます。しかし、サブネットに紐づいているルートテーブルに関してはそのままです。アカウント2のPrivateSubnetに紐づいたルートテーブルを編集しましょう。

 

 

VPCコンソール画面の左ペインから、「ルートテーブル」を押し、「wstgwRtbPrivateVpc2PrivateSubnet」を選択してください。

 

saitou-handson-transitgateway-other-routetable

 

↓「ルートタブ」から「ルートを編集」をクリックします。

 

saitou-handson-transitgateway-other-routetable

↓以下の送信先を追加してください。

 

送信先 ターゲット
0.0.0.0/0 "tgw-"と付くもの

 

 

saitou-handson-transitgateway-other-routetable

saitou-handson-transitgateway-other-routetable

 

↓追加できましたら、「変更を保存」を押します。

 

saitou-handson-transitgateway-other-routetable

saitou-handson-transitgateway-other-routetable

 

 

今回の構築は以上です。

 

 

■疎通確認

アカウント2の作業です。

 

アカウント2のVPCにありますEC2インスタンスから各VPCとインターネットに疎通確認していきます。

 

EC2コンソール画面からインスタンス「wstgwEc2Instance10-1-1-100」を選択し、「接続」をクリックしてください。

 

saitou-handson-transitgateway-other-communication

 

↓「セッションマネージャー」タブから「接続」を押します。

 

saitou-handson-transitgateway-other-communication

 

以下のコマンドを押します。

bash -I

 

saitou-handson-transitgateway-other-communication

 

 

【疎通確認1】
saitou-handson-transitgateway-other-communication

 

それでは疎通確認していきます。まずはインターネット向きです。以下のコマンドを打ちます。

ping amazon.co.jp

 

saitou-handson-transitgateway-other-communication

 

応答が返ってきました。

 

 

【疎通確認2】
saitou-handson-transitgateway-other-communication

 

次にアカウント1のPrivateVPC1にあるEC2インスタンス(10.0.1.100)に疎通確認してみます。以下のコマンドを打ちます。

ping 10.0.1.100

 

saitou-handson-transitgateway-other-communication

 

応答が返ってきました。

 

 

【疎通確認3】
saitou-handson-transitgateway-other-communication

 

さいごはBoundary VPCにありますEC2インスタンス(192.168.1.100)に疎通確認してみましょう。以下のコマンドを打ちます。

ping 192.168.1.100

 

saitou-handson-transitgateway-other-communication

 

応答が返ってきました。

 

 

今回のハンズオンは以上です。

 

 

まとめ: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/

 

Last modified: 2022-12-30

Author