Networking Costs Calculatorってなんだ？

# はじめに
こんにちは、ひびきです。
本記事はANGEL Dojo参加者によるアドベントカレンダー26日目の記事です｡
よかったら他の記事もチェックしてみてください!

https://qiita.com/organizations/2024-angel-dojo


今回は2024年9月12日に発表された[AWS Networking Costs Calculator](https://aws.amazon.com/jp/blogs/networking-and-content-delivery/estimate-aws-networking-costs-with-a-self-hosted-calculator/)について検証とその感想を共有いたします。

# 先に結論
AWS Networking Costs Calculator：
- 学習のためや簡単な調査のために利用してみるのは良いかも
- 実際の構成図に合わせた試算は現状難しい

# AWS Networking Costs Calculatorとは？

2024年9月12日に発表されたネットワーキングコストの見積もりを簡単に視覚的に行えるオープンソースのツールです。

詳細は下記をご覧ください。
[AWS Networking Costs Calculator](https://aws.amazon.com/jp/blogs/networking-and-content-delivery/estimate-aws-networking-costs-with-a-self-hosted-calculator/)

# 検証
では、さっそく検証してみようと思います。
まず前提として、CDKのデプロイができるように以下を実施しておきます。
## 前提条件
- Linuxベースのコマンドが実行できる
- NPM, NodeJS(バージョン18以降)がインストール済み
  - 以下コマンドで確認可能
  - `$ npm -v && node -v`
- AWS CDKがインストールされている
  - 以下コマンドで確認可能
  - `$ cdk --version`
  - インストールされていない場合以下コマンドでインストール
  - `$ npm install -g aws-cdk`
- 使用するアカウント、リージョンで既にAWS CDKを実行済み
  - 実行したことがない場合、以下のコマンドを実行
  - `$ npx cdk bootstrap aws://[アカウントID]/[リージョン(例：ap-northeast-1)]`
- AWS CLI(v2)がインストールされていること

## 実装
[こちらのGitHubのコード](https://github.com/aws-samples/networking-costs-calculator)を以下の手順でクローンし、実行します。
```
git clone https://github.com/aws-samples/networking-costs-calculator.git
cd networking-costs-calculator
cd ./deploy.sh
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/2b187f60-d3b3-20cb-c4b5-c3c5d5129e26.png)



実行されると、以下のようにターミナル上にURLが出力されます。
![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/20a015d4-0b12-9b78-0273-237a0fa5657a.png)

こちらのURLにブラウザからアクセスしたところ、
以下のような画面が出力されました！
![image-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/a856e732-a716-64f5-6a57-4dc7a05ba5c6.png)



こちらが、Networking Costs Calculatorの画面になります。
では、以下の2パターンで試算してみようと思います。
1. NAT Gatewayを利用
2. Direct Connectを利用

### NAT Gatewayを利用

画面右側のチェックボックスからNAT Gatewayを選択します。
EC2とNAT Gateway、Internetのアイコンと各リソースを繋ぐ通信経路を表す矢印が自動で生成されました。
![image-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/45743bae-b36f-2438-65a9-535672b14f14.png)


本サービスはあくまでネットワークの通信にかかる料金を見るものだからか、左側の図はいじれないようです。(EC2インスタンスの数や配置、サブネットやリソース同士の接続は修正できない)

では、以下の条件で試算します。
- NAT Gatewayの数：2
- データ転送量：100GB

画面右側に、試算条件を入力する項目があるので、上記条件を入力してみると以下のようになりました。
![image-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/3aff3c59-f8f3-0e74-b957-3a16e5828dbb.png)

発表されていた記事だと構成図中の矢印付近に通信で発生する料金が表示されていましたが、特に記載は見当たりません。

少しわかりにくいですが、それぞれ
- Recurring Costs: 固定で発生する料金
- Data Processing Costs: 転送量によって発生する料金

となっていまして、画面右側の内容を確認すると、
毎月固定で\\$90.52とデータ転送料金で\\$6.2かかるみたいですね。
念のため[pricing calculator](https://calculator.aws/#/)で試算してみましたが、同じ金額になりました。(NAT Gatewayごとのデータなので転送量100GBを2で割って50GBとしています)
![image-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/2100477e-0034-67b3-77a0-427d13f4ce77.png)

### Direct Connectを利用

NAT Gatewayのときと同様、右側のチェックボックスからDirect Connectを選択します。
すると、自動的にTransit Gatewayも選択され、図のような構成図が生成されました。
(Direct Connectを選択している限りTransit Gatewayはチェックが外せなくなっているためDirect Connectを選択する場合Transit Gatewayは必須となるようです)

![image-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/5c18bf0b-c7e9-3fb4-9dae-cbb834f5ad54.png)
![image-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/914f106f-00a7-439f-7a30-337597165808.png)


では、今回は以下の前提で試算していきます。
- Direct Connectのロケーション：AT Tokyo Chuo Data Center
- Direct ConnectのPort Capaciry:10G
- Direct ConnectのPort数:2
- Transit Gatewayのアタッチメント数:3(変更不可)
- データ転送量:1TB

入力した結果がこちらになります！

![image-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/624fb79d-921d-d22e-cd3a-1b46b427cdb2.png)
![image-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/698f2c3c-173b-8b39-849b-dcf892032c72.png)


今回は紹介されていたサイトにある通り、構成図の矢印状に1GBあたりの転送料金が記載されていますね！

内容を確認すると、毎月の固定料金については、

- TGW Attachment: $55.10
- Direct Connect: $3127.32

転送料金については、
- Direct Connect Gateway→Networking AccountのTransit Gatway: $0.02/GB
- Account A→Networking AccountのTransit Gatway: $0.02/GB
- Direct Connect Gateway→On PremisesのCustomer Gateway: $0.041/GB

の料金がかかっていることが分かります。
インバウンドとアウトバウンドの通信がそれぞれどこの通信で料金が発生するのか、視覚的に分かりやすいので学習や調査にはよいかもしれないですね。

# まとめ
以下、検証してみた感想とまとめです。

- 試算したい実環境の構成図通りの構成図を作成することはできないので、業務への直接的な活用は現状難しそう
- 様々なネットワーク関連サービスを使用する際どこの通信で料金が発生するのか視覚的にわかりやすいので、学習用だったり調査だったりには便利

AWS　CDKを利用できる環境であれば、簡単にデプロイし試すことができるのでぜひお手元で実施されてみてはいかがでしょうか。
ここまでありがとうございました！