使った分だけ利用料金が発生するAWS(パブリッククラウド)環境、EC2などをメインで利用されている方は、停止しておけば完全無料!と考えられている方もおられるのではないでしょうか。
VPC内で作成できるリソースには、存在するだけで料金が発生するものもいくつかあります。
私も検証環境でいつの間にか料金が発生し、もったいない!という経験が何度かありました。 今回は停止できずに料金がかかってしまうリソースを整理してみたいと思います。
みなさまの利用料金削減に貢献できれば幸いです。
想定するVPC構成
以下のような構成で環境構築しているとします。
作成されているリソースは以下の通りです。 (対象をVPC1内のみとします。)
- VPC ×1
- サブネット×4
- Internet Gateway ×1
- NAT Gateway ×1
- VPC Endpoint(S3用) ×1
- VPC Peering ×1
- Transit Gateway(アタッチメント)×1
- EC2(+EBS100GB)×2
- Application Load Balancer ×1
PeeringとTransit Gatewayを両方作成する機会はあまり無いかもしれませんが、 その他は割とよく見る構成かと思います。 PeeringとTransit Gatewayは料金整理のため、あえて両方ある構成としています。
発生する利用料金
この構成で、EC2を一度も起動せず停止した状態で1ヵ月(24時間×30日)置いておいた場合、いくら発生するでしょうか? 前提を以下の通りとします。
- リクエストやネットワーク通信は一切発生していない。
- 対象のリソースは「VPC1」内のみのものとする。(話をシンプルにするため)
- リージョンは東京リージョン
結論、約15,000円(約136.5USD)の料金が1ヵ月で発生します。
いかがでしょうか?EC2を停止して実際に使わない環境でもこれだけの料金が発生することになります。
料金詳細
料金の詳細を表で見ていきます。どこに料金が発生しているのでしょうか。
サービス | 料金(1時間) | 料金(1ヵ月) | 備考 |
---|---|---|---|
VPC | 無料 | 無料 | |
サブネット | 無料 | 無料 | |
Internet Gateway | 無料 | 無料 | |
NAT Gateway | 0.062USD | 44.64USD | |
VPC Endpoint(S3用) | 無料 | 無料 | PrivateLinkの場合は0.014USD/時間かかるため注意(※) |
VPC Peering | 無料 | 無料 | |
Transit Gateway(アタッチメント) | 0.07USD | 50.4USD | 接続先のアタッチメントは考慮なし |
EC2 | 無料 | 無料 | 停止状態 |
EBS 100GB×2個 | - | 24USD (0.12USD×100GB×2個) |
1 か月単位で計算される、汎用 SSD (gp2) |
Application Load Balancer | 0.0243USD | 17.496USD | |
合計 | 0.1563USD | 136.536USD | EBSは時間料金に含まず |
※VPC EndpointにはS3やDynamo DBで使用されるゲートウェイエンドポイントと、その他多くのサービスで使用されるインターフェイスエンドポイント(PrivateLink)の2種類あり、後者の場合は料金がかかります。
料金が発生しているのは、NAT Gateway、Transit Gatewayのアタッチメント、EBS、Application LoadBalancerの4つとなります。 ネットワーク料金は考慮していませんので、存在するだけでこの料金が発生することになります。 最初に紹介した図に、料金が発生しているリソースに印をつけると以下のようになります。
対策
発生しているリソースの利用料はどのように削減すれば良いでしょうか。
まずは本当にそのリソースが必要か考慮して、不要であれば削除するのが良いでしょう。
各リソース別で見ていきます。
NAT Gateway
クラスメソッドさんの良記事があるので、これを紹介いたします。
パブリックサブネット、NATインスタンス、S3ならVPCエンドポイントといった検討をすると良いでしょう。
Transit Gatewayのアタッチメント
実はTransit Gateway本体は無料です。 接続する際にアタッチメントというリソースが必要なのですが、このアタッチメントに対して料金が発生します。
Transit GatewayはPeeringに比べて細かなルーティング設定ができて素晴らしいのですが、3VPC程度の接続で、増える予定がないのであれば、料金的なメリットでPeering(無料)でも良いかなと考えてしまいます。 ここは好みの問題もあるかもしれません。AWSさんの値下げを期待しましょう・・
EBS
意外に盲点になりやすいところです。EC2は停止てきでも、データが保存されるEBSには停止という概念はありません。 長期間使用の予定がない場合は、スナップショットやAMIを取得してEBSは削除しておくと良いと思います。スナップショットはデータも圧縮され、EBSに比べてかなり安くなります。
Application LoadBalancer
ここは正直どうしようもない部分もあるのですが、CloudFormationなどでコード化してすぐに再現できるようにしておき、 しばらく使用しないのであれば削除しておく。が良いかなと思います。
まとめ
自分および自分の組織のAWS環境で無駄な料金が発生しないよう、教訓のために書いてみました。 作るときにここで料金が発生している!と理解しておくだけで少し気持ちが変わるかなと思います。
特にNAT GatewayとTransit Gatewayは注意ですね。
こんなリソースもあるよ、とか、計算間違ってるよとかあればご指摘くださいませ。