AWS Site to Site VPN のトンネルアクティビティログを CloudWatch Logs へ送信出来るようになりました

2022.08.20

いわさです。

本日のアップデートで、AWS Site to Site VPN のトンネルアクティビティログを Amazon CloudWatch Logs へ送信出来るようになりました。

トンネルオプションで有効化するだけ

まず、このログ送信オプションはトンネルオプションの一部ですのでトンネルごとに設定が必要です。

設定方法は簡単で、「トンネルアクティビティログ」を有効化し、送信先の CloudWatch Logs グループと出力形式(JSON or Text)を選択するだけです。
この画面でロググループは作成出来ないので、事前にロググループは作成しておきましょう。

また、本日時点では CloudWatch Logs のみしか選択出来ない状態で非活性になっていますが送信先を選択するオプションも用意されているようです。

やってみる

設定方法上記だけなので、実際に設定してみてどういう感じでログを確認出来るのかを試してみました。
今回は以下の記事を参考に静的構成で Azure と AWS 間での Site to Site VPN を構築します。

設定方法は、ログの有効化部分以外は上記記事に従う形で構築出来ます。
AWS 側ではトンネル詳細からログが有効化されていることが確認出来ます。

今回は正常なものと異常なものを確認してみたかったのでトンネル1が正しい構成で、トンネル2は Pre-Shared Key を不正なものにしてみました。IKEv2を使っています。
この時点で以下のようにトンネル2だけ Down している状態になっています。

正常

ロググループを確認してみましょう。
以下のような命名でログストリームが自動出力されています。
設定内に指定するところは見当たらなかったので命名ルールは固定のようです。

ストリーム名は VPN ID と トンネルごとの外部 IP アドレスを組み合わせた形式のようですね。
今回はロググループをトンネルごとに分けたのですが、この形式であればロググループは共通化しても良さそうですね。

ログをいくつか確認してみます。
まず、接続の初期フェーズのIKE_SA_INITIKE_AUTHのログが出力されています。

その後は一定間隔で DPD パケットが送受信されていることが確認出来ます。

なお、ログ形式の情報は以下に記載があります。

また、以下 FAQ によるとこのログは 5 分間隔で定期的にエクスポートされ、ベストエフォートベースでの配信となるそうです。(私が確認した際には割とリアルタイムな感じで配信されていた印象でした)

AWS VPN | FAQs | Amazon Web Services (AWS)

異常

Down しているトンネルのログストリームも確認してみましょう。

こちらでは以下のように pre-shared key mismatch を確認することが出来ています。
良いですね

変更

トンネルオプションなので既存 VPN に対しても有効化ができます。
ただし、トンネルオプションの変更時に数分間のダウンタイムが発生します。
試してみましょう。

ここではトンネル1に対してアクティビティログの無効化を行ってみました。

Up トンネルに対する変更なので、上部の「UP トンネルの変更を確認」を選択する必要があります。
変更中のトンネルの一時停止について言及されています。

変更後、以下のようにトンネルが Down しました

私の環境では 5 分後くらいに自動でまた Up ステータスに戻しました。

ダウンタイムは発生しますが、通常複数トンネルで冗長化されていますので片側ずつ変更かければ問題にはならなそうです。

料金について

以下の料金ページに追記がありました。

There are no additional Site-to-Site VPN service-specific charges for enabling Site-to-Site VPN logs. You will incur standard charges for using Amazon CloudWatch service (publishing Site-to-Site VPN logs to CloudWatch).

この機能自体は追加料金は発生しませんが、CloudWatch Logs の料金だけ必要ということです。
ログサイズどんなものか見てみたかったのですがログストリームのサイズ反映はタイムラグがあるので今はわかりませんでした。たしか数時間かかるはずです。

% aws logs describe-log-groups --log-group-name hoge0820vpnlog --profile hoge
{
    "logGroups": [
        {
            "logGroupName": "hoge0820vpnlog",
            "creationTime": 1660950646089,
            "metricFilterCount": 0,
            "arn": "arn:aws:logs:ap-northeast-1:123456789012:log-group:hoge0820vpnlog:*",
            "storedBytes": 0
        }
    ]
}

追記: 2022.08.22

VPN を半日くらいプロビジョニングし削除。その 2 日後くらいにロググループを確認したところ保存バイト数が確認できました。

% aws logs describe-log-groups --log-group-name hoge0820vpnlog --profile hoge
{
    "logGroups": [
        {
            "logGroupName": "hoge0820vpnlog",
            "creationTime": 1660950646089,
            "metricFilterCount": 0,
            "arn": "arn:aws:logs:ap-northeast-1:123456789012:log-group:hoge0820vpnlog:*",
            "storedBytes": 1421776
        }
    ]
}

対抗機器や DPD の設定などによって変わりそうな気もしますが、AWS のデフォルト設定 + Azure VPN の構成で半日放置しただけの状態という前提での参考までに。
1 トンネルの半日分なので 30 日分だと 81MB くらいでしょうか。

さいごに

本日は、AWS Site to Site VPN のトンネルアクティビティログを有効化してみました。

有効化自体は簡単ですね。
ただし、ダウンタイムが発生するので複数トンネルを同時に変更しないように有効化タイミングだけ気をつけておくと良さそうです。

CloudWatch Logs ということで料金だけ気になりますが、将来的に CloudWatch Logs 以外の送信先も増えそうなので期待したいところですね。