概要
NAT Gatewayの費用を抑えようと思ってVPCエンドポイントを使ったら、逆に高くなった話です
結論
- 前提条件
- 外部APIへのリクエストなどすでにNAT Gatewayを使っている
- セキュリティ(インターネットに出てはいけない)のことは考慮不要
- インターネットに出てアクセスするレイテンシは考慮不要
NAT Gatewayを普段使っているのであれば、VPCエンドポイントはS3とDynamoDB(ゲートウェイエンドポイント)だけでいい
と思ってます(個人的見解です)
考察
現状
- NAT Gatewayの費用が高くなっていった
- NAT Gatewayを利用しているリクエストは以下
- S3とかECRとかDynamoDBとかCloudWatchLogsとかAWSのサービスにアクセスしているもの
- 外部APIにアクセスしているもの
AWSのサービスにはVPCエンドポイントを利用することでNAT Gatewayを通さずにアクセスできる
VPCエンドポイント
- 概要:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-endpoints.html
- インターフェイスエンドポイント
- ゲートウェイエンドポイント
インターフェイスエンドポイントは各AZごとにENIが作成され、そこ経由でアクセスする
ゲートウェイエンドポイントはルートテーブルのみ
インターフェイスエンドポイントはENIを作成する関係で使っていなくても時間課金される(AZ単位で)
インターフェイスエンドポイントを作れば作るほど、起動時間で課金されてしまう
https://aws.amazon.com/jp/privatelink/pricing/
損益分岐点
- 東京リージョン、3AZ利用
- VPCエンドポイント費用:($0.014/h24h31day3AZ){VPCエンドポイント数}+$0.01/GB*通信量
- NAT Gateway費用:$0.062/GB*通信量
- 現状NAT Gatewayを使っているという前提なので起動時間課金については考慮しない
通信量\VPCエンドポイント数 | 1 | 2 | 3 | 4 | 5 | NATGW増加費用 |
---|---|---|---|---|---|---|
100GB | 32.248 | 63.496 | 94.744 | 125.992 | 157.24 | 6.2 |
200GB | 33.248 | 64.496 | 95.744 | 126.992 | 158.24 | 12.4 |
300GB | 34.248 | 65.496 | 96.744 | 127.992 | 159.24 | 18.6 |
400GB | 35.248 | 66.496 | 97.744 | 128.992 | 160.24 | 24.8 |
500GB | 36.248 | 67.496 | 98.744 | 129.992 | 161.24 | 31 |
600GB | 37.248 | 68.496 | 99.744 | 130.992 | 162.24 | 37.2 |
1000GB | 41.248 | 72.496 | 103.744 | 134.992 | 166.24 | 62 |
結果、VPCエンドポイント1つでかつ600GB以上の通信をその1つのVPCエンドポイントでする場合に限り、NAT Gatewayを通すよりも安くなる
600GBの通信、CloudWatchLogsとかKinesisとかであれば可能性ありそうでしょうか・・・?
VPCエンドポイントの起動時間課金が安くなるorなくなること、複数AWSサービスに対して1つのVPCエンドポイントでまかなえるようになることを期待しています。
ちなみに、VPCエンドポイントを9個作ったので、費用跳ね上がりました・・・とさ。