TransitGatewayを使用するとAWSのアカウント間で通信することができます。
今回はアカウントを2つ用意して実際に通信してみました。
各アカウントのVPCは事前に下記のアドレスで作成しております。
【アカウントA】
10.0.0.0/16
【アカウントB】
10.1.0.0/16
アカウント間通信までのながれ
TransitGateway・・・TGW、Resource Access Manager・・・RAM
- 【アカウントA】TGW作成
- 【アカウントA】TGWアタッチメント作成
- 【アカウントA】RAMによりTGWを共有化
- 【アカウントB】共有されたTGWを承認
- 【アカウントB】TGWアタッチメント作成
- 【アカウントA】アカウントB向けのルーティング追加
- 【アカウントB】アカウントA向けのルーティング追加
- 【アカウントA】アカウントBからのICMP許可設定
- 【アカウントB】アカウントAからのICMP許可設定
- 【アカウントA、B】相互にping疎通
1.【アカウントA】TGW作成
アカウントAでTGWを作成します。

名前タグ、説明は任意の名前を入力します。
その他の設定は今回はデフォルトに設定のままでTransit Gatewayを作成します。
※デフォルトルートテーブルの関連付けやデフォルトルートテーブル伝播のチェックを外した場合、
TGWアタッチメントの関連付け等を手動で実施する必要があります。


2.【アカウントA】TGWアタッチメント作成
アカウントAのVPCと紐づけるためにTGWアタッチメントをアカウントAで作成します。

名前タグは任意で入力。
Transit Gateway IDにはアカウントAのTGWを指定。
アタッチメントタイプはVPCを指定。

VPC IDにはアカウントAのVPCを指定。
サブネットはVPC内のサブネットを指定してTransit Gatewayアタッチメントを作成します。

3.【アカウントA】RAMによりTGWを共有化
Resource Access ManagerによりアカウントAのTGWをアカウントBと共有できるようにします。

Nameは任意で入力。
リソースタイプは「トランジットゲートウェイ」を指定し、アカウントAのTGWをチェック。
「Next」を押下して次へ。

外部のプリンシパルとの共有を許可にチェック。
プリンシパルには「AWSアカウント」を選択し、アカウントBのアカウントIDを入力後追加する。

「Next」を押下して「リソース共有を作成」する。

4.【アカウントB】共有されたTGWを承認
共有化されたTGWをアカウントBで承認します。
アカウントBのResource Access Managerから「自分と共有:リソースの共有」画面を見ると
アカウントAで共有したリソース(TGW)が表示されます。
※まだ承認していないのでステータスはPending状態です。

「リソースの共有を承認」を実施して承認します。

承認後、ステータスがActiveに変わります。

5.【アカウントB】TGWアタッチメント作成
アカウントBのVPCもTGWに紐づけるためにTGWアタッチメントを作成します。

以下、アカウントAと同様にTGWアタッチメントを作成します。


TGWアタッチメント作成後、スタータスがPending Acceptance状態のままとなります。

これはアカウントAでTGWを作成した際に「共有アタッチメントの自動承諾」が無効になっているためです。
※有効になっていると自動で承諾されます。

今回は無効に設定しているため、アカウントAで承諾します。
アカウントAのTGWアタッチメント画面でアカウントBのTGWアタッチメントを選択し、
「アクション」 ⇒ 「Transit Gatewayアタッチメントを承諾」を選択します。


「承諾」押下後、ステータスがAvailableになっていることを確認します。


6.【アカウントA】アカウントB向けのルーティング追加
アカウントAのルートテーブルにアカウントB向けのルーティング追加を追加します。
※対象のルートテーブルは通信を行いたいサブネットに関連付けてください。
アカウントAのルートテーブルを編集し、それぞれ指定します。
送信先:アカウントBのVPCアドレス「10.1.0.0/16」
ターゲット:アカウントAのTGWアタッチメント

7.【アカウントB】アカウントA向けのルーティング追加
アカウントBのルートテーブルにもアカウントA向けのルーティング追加を追加します。
※対象のルートテーブルは通信を行いたいサブネットに関連付けてください。
アカウントBのルートテーブルを編集し、それぞれ指定します。
送信先:アカウントAのVPCアドレス「10.0.0.0/16」
ターゲット:アカウントBのTGWアタッチメント

8.【アカウントA】アカウントBからのICMP許可設定
アカウントAのセキュリティグループのインバウンドルールでアカウントB(10.1.0.0/16)からのICMPを許可します。

9.【アカウントB】アカウントAからのICMP許可設定
アカウントBのセキュリティグループのインバウンドルールでアカウントA (10.0.0.0/16) からのICMPを許可します。

10.【アカウントA、B】相互にping疎通
アカウントA、BのそれぞれのEC2インスタンスから疎通確認を実施してみます。
アカウントAのサーバー ⇒ アカウントBのサーバー

アカウントBのサーバー ⇒ アカウントAのサーバー

上記の通り通信できましたので完了です。
コメント