AWS Site-to-Site VPN でのトンネルメンテナンスがコントロール出来るようになりました!

待望のメンテナンスコントロール機能(Tunnel Endpoint Lifecycle Control)!
2023.03.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2024/01/30
弊社メンバーが作成してくれた詳細な記事を追記

AWS Site-to-Site VPN(AWS Site VPN) では、AWS による定期的なトンネルメンテナンスが発生します。理由も明記されており、安全なサービス提供のために必要なメンテナンスです。

ただ Amazon EC2 や RDS におけるメンテナンスのようにユーザー側でのコントロールは出来ず、スケジュールされた時間帯で AWS により実行されていました。またメンテナンス中は冗長化が失われ、運悪く接続が中断されてしまうというリスクも内在していました。

AWS Site-to-Site VPN はマネージド型サービスであり、定期的に VPN トンネルエンドポイントに更新を適用します。これらの更新は、以下のようなさまざまな理由で発生します。

・ パッチ、回復性の向上、その他の機能強化など、一般的なアップグレードを適用するため
・ 基盤となるハードウェアをリタイアするため
・ VPN トンネルエンドポイントが非正常であることが自動モニタリングによって判断された場合

AWS は一度に VPN 接続の 1 つのトンネルにトンネルエンドポイントの更新を適用し、その間、VPN 接続では短時間冗長性が失われる可能性があります。したがって、高可用性を実現するために、VPN 接続で両方のトンネルを設定することが重要です。

引用元: Site-to-Site VPN トンネルエンドポイントの置換

今回 AWS Site VPN におけるメンテナンスに対して、期間内でユーザー側によりメンテナンスを実行する機能がリリースされました!これにより(調整が行えないサービスもあるかと思いますが、、)事前に関係者間で調整し、実行することでサービス影響を軽減・回避することが可能です。

2点、注意が必要な点があります。

1つ目は、ドキュメントに記載がある通り、100% コントロールが可能ではなく、稀にメンテナンスが実行されるケースもあるとのことです。

In rare circumstances, AWS might apply critical updates to tunnel endpoints immediately, even if the tunnel endpoint lifecycle control feature is enabled.

↓↓↓ 機械翻訳 ↓↓↓

まれに、トンネルエンドポイントのライフサイクル制御機能が有効になっていても、AWSがトンネルエンドポイントに重要な更新を即座に適用する場合があります。

引用元: Tunnel endpoint lifecycle control

2つ目は、既存リソースへ本機能の設定変更時に、数分間接続が接続が中断されます。

When you modify a VPN tunnel, connectivity over the tunnel is interrupted for up to several minutes. Ensure that you plan for the expected downtime.

↓↓↓ 機械翻訳 ↓↓↓

VPNトンネルを変更すると、トンネル上の接続が最大で数分間中断されます。予想されるダウンタイムを確実に計画するようにしてください。

引用元: Modifying Site-to-Site VPN tunnel options

今回、都合よく保留中のメンテナンスを持つリソースが存在しなかったため、実行までは行えませんが、下記ドキュメントを参考に有効化設定やメンテナンス実行方法を確認していきます。

トンネルエンドポイントライフサイクル制御の有効化(新規作成編)

新しく AWS Site VPN を作成する際に、有効化する方法を確認していきます。今回はマネジメントコンソールから設定しますが、CLI でも可能です。

Amazon VPC >>> Site-to-Site VPN 接続 >>> VPN 接続を作成する を選択

トンネル1オプション(トンネル2オプション) >>> Tunnel maintenance >>> Turn on を選択

トンネルエンドポイントライフサイクル制御の有効化(既存編)

既存リソースで保留中メンテナンスが存在すると即時実行されるため、事前に保留中メンテナンス(実行可能なアップデート)の有無を確認します。

By default when you turn on the feature for an existing VPN connection, a tunnel endpoint replacement will be initiated at the same time. If you want to turn the feature on, but not initiate an tunnel endpoint replacement immediately, you can use the skip tunnel replacement option.

↓↓↓ 機械翻訳 ↓↓↓

デフォルトでは、既存のVPN接続でこの機能をオンにすると、同時にトンネルのエンドポイントの交換が開始されます。機能をオンにしても、すぐにトンネルの端点の交換を開始しない場合は、トンネルの交換をスキップするオプションを使用することができます。

引用元: Enable tunnel endpoint lifecycle control

対象 VPN を選択 >>> トンネルの詳細 タブを選択 >>> Pending maintenance

用意したリソースは正常な状態ではない(本ブログのために用意したものなので Down 状態)による影響なのか Unavailable と表示されていますが Available の場合や AWS Health Dashboard でメンテナンスがスケジュールされている場合には、注意が必要です。

アクション >>> VPN トンネルオプションを変更する >>> 変更するトンネルを選択

※ 片側だけではなく忘れずに残りも変更しましょう!

既存リソースへの設定の場合には設定項目が2つあります。

1つ目は新規作成時と同様にライフサイクル制御を有効化する項目です。
2つ目は冒頭に記載した本機能は有効化同時に保留メンテナンスが実行される仕様を回避するオプションのようです。

  • Tunnel endpoint lifecycle control
  • Skip tunnel replacement

何も考えず、両方チェックしておけばいいでしょ! と思ったのですが、どうも何かの条件に抵触していて(メンテナンスの有無をチェックしているのか?) Skip tunnel replacement を選択するとエラーが発生します。

Skip tunnel replacement を外して、設定します。 状態が Modifying へ遷移し、数分後に Available へ戻ります。

設定状況は トンネルの詳細 タブで確認できます。

保留されたメンテナンスの実行

アクション >>> Replace VPN tunnel >>> 対象トンネルを選択 >>> Replace VPN tunnel を選択

今回の対象はメンテナンスが存在していないため、エラーメッセージが表示されます。

さいごに

環境が整っていないこともあり、少し疑問が残る部分があり心残りではありますが、機能としてはユーザー側でメンテナンス実行をコントロール出来る手段が提供されることで、サービスへのリスクを軽減・回避することができる素敵な機能ではないかと思います!