fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

VPCにいるだけで利用料金がかかってしまうリソース

使った分だけ利用料金が発生するAWSパブリッククラウド)環境、EC2などをメインで利用されている方は、停止しておけば完全無料!と考えられている方もおられるのではないでしょうか。

VPC内で作成できるリソースには、存在するだけで料金が発生するものもいくつかあります。

私も検証環境でいつの間にか料金が発生し、もったいない!という経験が何度かありました。 今回は停止できずに料金がかかってしまうリソースを整理してみたいと思います。

みなさまの利用料金削減に貢献できれば幸いです。

想定するVPC構成

以下のような構成で環境構築しているとします。

f:id:fu3ak1:20200702222952p:plain

作成されているリソースは以下の通りです。 (対象を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つとなります。 ネットワーク料金は考慮していませんので、存在するだけでこの料金が発生することになります。 最初に紹介した図に、料金が発生しているリソースに印をつけると以下のようになります。

f:id:fu3ak1:20200702230651p:plain

対策

発生しているリソースの利用料はどのように削減すれば良いでしょうか。

まずは本当にそのリソースが必要か考慮して、不要であれば削除するのが良いでしょう。

各リソース別で見ていきます。

NAT Gateway

クラスメソッドさんの良記事があるので、これを紹介いたします。

dev.classmethod.jp

パブリックサブネット、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は注意ですね。

こんなリソースもあるよ、とか、計算間違ってるよとかあればご指摘くださいませ。