Direct Connect Gateway へ接続変更を行った際の手順概要

## はじめに
AWS パートナーが提供する 共有型 Direct Connect 接続サービスを利用して VPC ごとの
仮想プライベートゲートウエイ (VGW) と接続していた環境を Direct Connecat Gateway (DXGW)
経由の接続につなぎ替える機会がありました。
その際の手順および流れをメモ程度ですが残しておきます。
Direct Connect Gateway 自体の作成方法は本記事では触れません。

### 変更前の構成
複数のプライベート VIF によるマルチ VPC 接続 を行っていました。
接続サービスを提供するキャリアから VGW 毎に仮想インターフェースの払い出しをうけて
VPC と接続します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/294b3680-93fd-d657-6f22-61e5e26ed751.png)


### 変更後の構成
利用していたサービスが Direct Connect Gateway タイプのプライベート接続もサポートしていたため、DXGW 経由で複数の VPC に接続する方式へ切り替えました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/21268ab1-b88f-3804-e29c-2c642db1bedf.png)
1つの DXGW で リージョンを問わず 10 VPC まで接続することが可能です。
DXGW と接続先の VPC は別アカウントでも問題ありません。
ただし、Private VIF と DXGW は同一アカウントである必要があります。
以降の手順も、DXGW と接続先 VPC が別アカウントである前提で記載しています。

## 公式ドキュメントで案内されている手順
公式ドキュメントでは 既存のアタッチ済み VGW に DXGW を関連付けたあとに
VGW に関連付けられている仮想インターフェースを削除する手順が案内されています。

>　3. 仮想プライベートゲートウェイを Direct Connect ゲートウェイに関連付けます。
> 　4. 仮想プライベートゲートウェイに関連付けられた仮想インターフェイスを削除します。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/direct-connect-gateways-intro.html#migrate-to-direct-connect-gateway

キャリアの接続サービスを利用しているため、仮想インターフェースもキャリアにて作成されたものです。自身で再作成ができないため、切り戻しも考慮して新規の VGW を付け替える手順で実施することにしました。

## 実際に実施した手順
おおよそ以下のような流れで実施しました。

接続先アカウント: DXGW で接続する VPC が存在するアカウント
DXGW 管理アカウント: Private VIF および DXGW が存在するアカウント

1. 接続先アカウントで新規 VGW の作成
2. 接続先アカウントで VPC から既存 VGW をデタッチする
3. 接続先アカウントで VPC に新規 VGW をアタッチする
4. 接続先アカウントで DXGW への関連付け提案を作成する
5. DXGW 管理アカウントで関連付け提案を承諾する
6. ルートテーブルの変更

接続断が発生するのは 2 - 6 の間です。実際にかかる時間は環境に依存すると思いますが
参考までにある 1 つの VPC をつなぎ替えた際にかかった時間はおおよそ 30 分でした。
そのうち VGW のデタッチに 10 分程度、 DXGW と VGW の関連付けに 10 分程度かかっています。

以降は各手順の補足です。

### 1. 接続先アカウントで新規 VGW の作成
特筆すべき点はありません。
VGW に対して、DXGW の関連付けを行う必要があるため、新規の VGW を作成します。

### 2. 接続先アカウントで VPC から既存 VGW をデタッチする
前述のとおり、デタッチが完了するまで少し時間がかかります。

### 3. 接続先アカウントで新規 VGW を VPC にアタッチする
アタッチは瞬時に完了します。
2 および 3 の手順を DXGW の関連付け完了後に実施することで、接続断の時間を減らせるようにも見えます。しかし DXGW の関連付けリクエストを設定するには VGW が VPC にアタッチされている必要があるためこのタイミングで実施します。

### 4. 接続先アカウントで DXGW への関連付け提案を作成する
DirectConnect コンソールの仮想プライベートゲートウェイから
新規作成した VGW の詳細に進みます。
Direct Connect ゲートウェイの関連付けタブを選択し、Direct Conenct ゲートウェイを関連付ける を
クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/e7bafbe2-9bdd-d1bc-5adf-6f512f8931df.png)

関連付けアカウントのタイプのアカウント所有者で 別のアカウント を選択し
関連付けの設定で下記の情報を入力し、Direct Conect ゲートウェイに
関連付けるをクリックします。

• DirectConnectゲートウェイ ID 
• DirectConnectゲートウェイ所有者アカウント ID
• 許可されたプレフィックス (オプション)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6aed5e62-5c1f-b1b1-f2dc-d70ef0ac20e2.png)

これにより、DXGW を管理するアカウントに関連付けの提案が送られます。

### 5. DXGW 管理アカウントで関連付けの提案を承認する
Direct Connect コンソールの Direct Connect ゲートウエイから対象の DXGW を選択して
詳細を表示します。
Pending proposals (保留中の提案) タブで提案を選択し、提案を許可 を選びます。
許可後、関連付けのステータスが、`associated` となることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/a69b56db-e3ab-df3e-9ecd-57d0e3a78b83.png)

### 6. ルートテーブルの変更
各サブネットに関連付けられたルートテーブルを変更します。
Blackhole になっている既存の VGW への経路を削除し、新規 VGW への経路を設定し直します。
手順的には 3 の後であれば問題ありません。
実際は DXGW の関連付けが完了するまでに時間を要すため、その間に実施しておくのがよいかと思います。

## 留意点など
DXGW に接続しているオンプレミス同士、VPC 同士の折返し通信はできません。
(Transit Gateway に接続している場合を除く)
> Direct Connect ゲートウェイでは、同じ Direct Connect ゲートウェイ上にあるゲートウェイの関連付けが相互にトラフィックを送信することはできません (たとえば、仮想プライベートゲートウェイから別の仮想プライベートゲートウェイへ)。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/direct-connect-gateways-intro.html


キャリアが提供する接続サービスで 複数のプライベート VIF によるマルチ VPC 接続を行っている場合、キャリア網内での折返しによってVPC 同士での通信が行えるケースがありますが、同一 DXGW に接続する場合は折返し通信が不可となります。
通信が必要な場合は VPC Peering 等で代替する必要があります。

以上です。
参考になれば幸いです。