AWS Client VPNの料金体系と費用低減のポイント【2022年2月時点】


AWSには幾つかの接続方法があります。
普通に接続するのはインターネット接続になります。
ただAWSにセキュアに接続したい場合は幾つかの方法があります。
AWS社の資料[「複数拠点からセキュアにVPCに接続」](https://d1.awsstatic.com/webinars/jp/pdf/services/201910_AWSInnovate_Network.pdf#page=16)を参照して頂ければ解りやすいのですが、代表的な接続方法として以下の3パターンがあります。

|#|方法|回線|内容|
|:------|:------|:------|:-----------------------------------------------|
|1|[Direct Connect](https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html)|専用線|お客様のデータセンターやオフィスを専用線を介してAWSへプライベートに接続するサービス。|
|2|[Site-to-Site VPN](https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPC_VPN.html)|インターネット回線|お客様のデータセンターやオフィスをIPsec VPNを介してAWSへプライベートに接続するサービス。|
|3|[Client VPN](https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/how-it-works.html)|インターネット回線|お客様のクライアントをOpen VPNベースのVPNを介してAWSへプライベートに接続するサービス。|

今回の記事では、誰でも簡易に利用できる「Client VPN」の料金体系と節約ポイントを説明したいと思います。なお、構築方法については、前回投稿した「[初心者向けAWS Client VPN入門](https://qiita.com/Masayuki-Goto/items/6f7f2bc100a2945d1292)」という記事をご確認ください。

なお、記載内容は個人的なものであり、所属する企業や組織、団体を代表する見解その他ではありませんので、ご承知おきください。

# ■ClientVPN接続の料金体系について
ClientVPN接続の料金体系は[AWS VPN の料金(https://aws.amazon.com/jp/vpn/pricing/)]に記載されています。
例えば東京リージョンですと、以下の通りの料金となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/3046ffd7-974a-f9cd-9829-588baf41ef6d.png)

そして料金説明には以下の記載があります。

>AWS Client VPN では、アクティブなクライアント接続の数に対して、および Client VPN に関連付けられているサブネットの数に対してそれぞれ 1 時間単位の料金が発生します。まず、Client VPN エンドポイントを作成し、そのエンドポイントにサブネットを関連付けます。Client VPN エンドポイントには、Amazon Virtual Public Cloud (Amazon VPC) にある複数のサブネットを関連付けることができます。サブネットは同じ AWS アカウント内のものである必要があります。Client VPN エンドポイントに関連付けるサブネットは、別々のアベイラビリティーゾーンに属している必要があり、請求は Amazon VPC のアカウント所有者に発生します。サブネットの関連付けが完了すると請求が開始され、1 時間に満たない時間は 1 時間に対して比例計算されます。次のステップとして、Client VPN エンドポイントにユーザーを接続します。ユーザーがサービスを使用しようとすると、このステップが動的に処理されます。Client VPC エンドポイントに接続されているアクティブなクライアントの数に応じて 1 時間単位の料金 (上記の 2 番目のもの) が発生します。また、1 時間に満たないクライアント接続は、1 時間に対して比例配分されます。

ClientVPNは2つの利用料が発生します。
１つは「AWS Client VPN エンドポイントアソシエーション」となります。これはClient VPN エンドポイントとサブネットが関連付けられている場合に利用料が発生します。そして「AWS Client VPN 接続」は実際にクライアントPCからVPN接続した時間帯だけ発生する利用料となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/e1c97c66-d676-467d-b876-f0091f605027.png)

「AWS Client VPN 接続」は接続している期間だけな課金なのでEC2のオンデマンドインスタンスと同じイメージで非常に解り易いです。ただ、「AWS Client VPN エンドポイントアソシエーション」は課金の組み合わせがあるので、そこを認識しておく必要があります。

「AWS Client VPN エンドポイントアソシエーション」はエンドポイントの数と、それに関連付けされるサブネットの数がポイントになります。

|パターン|料金(1時間/USD)|サブネット数|利用時間|日数|月額料金(USD)|
|:------|:------|:------|:------|:------|:------|
|1|0.15|1|24|30|108|
|2|0.15|2|24|30|216|

通常接続したままになると思いますが、1か月で108USDとかなりの金額になる事が解ります。

# ■費用低減のポイント
「AWS Client VPN 接続」は必要な時間だけ接続する為、費用低減のポイントはあまりありません。費用低減可能なのは「AWS Client VPN エンドポイントアソシエーション」の費用になります。その前提として、どのような運用で利用しているかがポイントになります。例えば24時間365日利用することが前提になっているのなら、費用低減はできません。例えば必要な時間帯だけ接続出来ればよい、との要件であれば、その際に毎回設定変更をすることで料金を抑える事ができます。

以下の通り状態が「使用可能」になっている状態が課金される前提となります。
最初に説明した通り「サブネットとの関連付け」がされていることが課金条件になり、下の画面では関連付けの状態も「関連付け済み」となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/f79a0996-f509-7a87-7657-ab61c5100d38.png)

その関連付けを「関連付けの解除」で解除した以下の画面は課金されない状態となります。「AWS Client VPN エンドポイントアソシエーション」の課金はこの設定を実施することで制御できる訳です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/67f305ff-9eab-daab-bd3c-0d97ade6ac48.png)

なお、関連付けするための設定は「関連付け」を選択してサブネットを指定するだけなので非常に簡単です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4b6fe3d9-3bbd-073b-bac0-57ceebd808d9.png)

ただし関連付け設定をしてから利用できるまでは10分程度の時間が必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/c23fed40-2ecd-e09c-eab0-c21efc3abbba.png)

ただ、この設定を運用で対応することで、「AWS Client VPN エンドポイントアソシエーション」の課金は大きく低減することが可能です。例えば、運用的に月に1回、5時間のVPN接続で良い場合は、以下の金額となります。

|パターン|料金(1時間/USD)|サブネット数|利用時間|日数|月額料金|
|:------|:------|:------|:------|:------|:------|
|1|0.15|1|5|1|0.75|

もし運用面で不要にも関わらず、接続したままになっている場合は、見直してみては如何でしょうか。

# ■まとめ
このようにClientVPNの利用前提に合わせて運用で対応することで課金を大きく抑える事が可能です。AWSでは課金の条件を理解することで、費用低減できるポイントが多々あります。そういったポイントをしっかり押さえて効果的に利用することが重要かと思います。