Direct Connect Gatewayと関連付けしているVGWをVPCからデタッチした時の挙動を確認してみた

切り替えのダウンタイムを最小にしたいのであればBGPの操作をしよう
2023.06.03

Direct Connect Gatewayと関連付けしているVGWをVPCからデタッチするとどんな動きをするんだろう

こんにちは、のんピ(@non____97)です。

皆さんはDirect Connect Gatewayと関連付けしているVGWをVPCからデタッチするとどんな動きをするんだろうと思ったことはありますか? 私はあります。

以前、Private VIFとVGWを直接接続している状態からDirect Connect Gatewayを経由するように変更する方法を紹介しました。

CGWが同じであれば特に問題ないですが、別のCGWを使用する場合やSite-to-Site VPNから切り替える場合は、VIFに経路が正しく広告されるか事前に確認したいものです。

上述の記事で紹介している切り替え方法は切り戻しも簡単ですが、ダウンタイムが発生します。そのため、なるべく1回で切り替えを完了させたいところです。

そこで、事前に検証用のVPCとVGWを作成して以下の観点を確認します。

  • 検証用VPCのルートテーブルでルート伝播を有効化した場合にルートテーブルに設定されるルートに不足、誤りがないか
  • 検証用VPC上のEC2インスタンスとオンプレミス上のリソースがDirect Connect Gatewayを経由して通信できるか

テスト用VPCを使ったオンプレミス環境との疎通確認の構成図

ここで、ふと「検証後は、検証用のVGWを直接切り替え対象のVPCにアタッチすれば良いんじゃないか?」と思いました。

検証で使ったVGWを直接切り替え対象のVPCにアタッチすれば良いんじゃないか

こうすることでDirect Connect Gatewayとの関連付けを解除することなく、切り替えができるのではないかと考えました。

特にDirect Connect Gatewayが別アカウントにあり、管理者が異なる場合は、Direct Connect Gatewayの関連付けの度に依頼が必要になるので少し手間です。

VGWをアタッチしているVPCを1ステップで変更するということはできません。VGWをVPCから一度デタッチして、別のVPCにアタッチするという2ステップ必要です。

そこで、Direct Connect Gatewayと関連付けしているVGWをVPCからデタッチした時の挙動を確認してみます。具体的にはVPCからVGWをデタッチしたタイミングで、VGWとDirect Connect Gatewayとの関連付けが解除されるのかを確認します。

いきなりまとめ

  • VPCとアタッチされていないVGWにDirect Connect GatewayやVIFを関連付けすることはできない
  • VPCからVGWをデタッチしたタイミングで、VGWとDirect Connect Gatewayとの関連付けは解除される
  • 検証した限りVGWとDirect Connect Gatewayのアタッチ/デタッチはどちらも10分程度かかる

やってみた

それでは実際にやってみます。

VPCにアタッチしていないVGWを用意しました。

デタッチ状態のVGW

Direct ConnectのコンソールからこちらのVGWを確認すると以下のようになっていました。

Direct Connectのコンソールからデタッチ状態のVGWを確認

この状態でVPCにVGWをアタッチします。

VPCアタッチ

2分ほどでVGWの状態がAttachedに変化しました。

VPCアタッチ後のVGWの確認

Direct ConnectのコンソールからこちらのVGWを確認すると以下のようになっていました。

Direct Connectのコンソールからアタッチ状態のVGWを確認

仮想インターフェイスDirect Connect ゲートウェイの関連付けという2つのタブが追加されていますね。

VPCにアタッチしたタイミングでこちらのタブが追加されたことから、どうやらVPCとアタッチされていないVGWにDirect Connect GatewayやVIFを関連付けすることはできなさそうです。

VGWとDirect Connect Gatewayを関連付けます。

VGWとDXGWのアソシエーション

8分ほどでDirect Connect Gatewayとの関連付けの状態がassociatedに変わりました。

VGWとDXGWのアソシエーションが完了したことを確認

それでは、VGWをVPCからデタッチします。

VPCからVGWをデタッチ

デタッチ後、3分ほど待つとDirect Connect Gatewayとの関連付けの状態がdisassociatingとなりました。デタッチされたVGWはDirect Connect Gatewayとの関連付けを維持することはできず、解除されるようです。

DXGWとVGW間もアソシエーション解除中

VGWをVPCからデタッチするリクエストをして9分後にはDirect Connect Gatewayとの関連付けが完全になくなりました。

DXGWとアソシエーションが解除される

VPCにアタッチしていないVGWをDirect Connect Gatewayにアタッチしてみようとしてみます。

Virtual Gateway vgw-0e5f3edea5ca868fc must have an available attachment to a VPC to be associated to a Direct Connect Gateway

すると、Virtual Gateway vgw-0e5f3edea5ca868fc must have an available attachment to a VPC to be associated to a Direct Connect Gatewayと怒られてしまいました。

やはりVGWとDirect Connect Gatewayの関連付けをする際は、VGWがVPCにアタッチされている必要があるようです。

切り替えのダウンタイムを最小にしたいのであればBGPの操作をしよう

Direct Connect Gatewayと関連付けしているVGWをVPCからデタッチした時の挙動を確認してみました。

なんとなく想像していましたが、VPCからVGWをデタッチしたタイミングでVGWとDirect Connect Gatewayとの関連付けは解除されました。

というよりAWS公式ドキュメントに記載がありました。

  • Direct Connect ゲートウェイに関連付けた仮想プライベートゲートウェイを、VPC にアタッチする必要があります。

. . (中略) . .

  • VPC から仮想プライベートゲートウェイをデタッチすると、仮想プライベートゲートウェイと Direct Connect ゲートウェイの関連付けも解除されます。

仮想プライベートゲートウェイの関連付け - AWS Direct Connect

スムーズに切り替えできたとしても、ダウンタイムは旧VGWのデタッチとVGWのアタッチで15分ぐらいを見ておいた方が良さそうですね。

ダウンタイムを最小にしたいのであれば、Direct Connect GatewayをVGWにアタッチしてBGPで優先経路をDirect Connect GatewayのVIFに寄せることになります。

ちなみにSite-to-Site VPNと関連付けしているVGWはVPCとデタッチしても、Site-to-Site VPNとの関連付けは維持されます。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!