AWSのEC2の無料枠を試したときにお金がかかる事例と対処法

# はじめに
自己学習のために、AWSのEC2を使用して環境構築を行ったところ
一定の期間からお金がかかり始めた。
その事例と解消方法についてまとめる

# 以前EC2でお金がかかった事例
・EC2で無料枠を指定
![ec2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/372c4892-1df4-a8f6-72a3-e9b143443c2e.png)
![ec2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/26732aa4-e449-1c4a-fd76-ccc822b1a798.png)
・環境をセットアップ後 EC2は停止
・停止後一か月ほど放置

# なぜ？
無料枠を設定してEC2を停止していたのにお金がかかるのはなぜか

結論
<font color="red">Amazon EBSを保持していたためストレージを解放するまで課金されていた</font>

EBSはEC2インスタンス(仮想サーバ)ように準備されたストレージであり、EC2のインスタンスを作成した時にデータはすべてEBSに保存されます。
EBSの料金設定を確認してみると、「すべてのEBSボリュームタイプのボリュームストレージはプロビジョニングした容量で課金され、そのストレージを解放するまで料金が発生します。」とあります。
![ebs無料枠_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/84df63a9-a99a-6aef-b257-1f95d71574b4.png)

また、EBSボリュームの無料枠(12ヶ月無料枠)は30GBとなっており、これを超えると1GB単位で課金されます。
![ebs無料枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/640a6891-5517-9a95-8877-b4537aef063c.png)

# 対策と対応
ボリュームを削除することで、料金は発生しなくなるが、後で作業したい場合のためにスナップショットを取って料金を**削減**する方法もある
※スナップショットでも料金が発生するため注意する

EBSのスナップショット取ってボリュームを削除し、使用するときにスナップショットから復元を行う方法
手順1 スナップショット作成からボリューム削除まで
1. 確認のためEC2にアクセスして適当なファイルを作成する
    ```
      ssh -i "~/training/training-dev-keypair.pem" ec2-user@ec2-100-29-41-50.compute
      -1.amazonaws.com
        ,     #_
        ~\_  ####_        Amazon Linux 2023
      aaaaaaaxxxxx
        ~~  \_#####\
        ~~     \###|
        ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
        ~~       V~' '->
          ~~~         /
            ~~._.   _/
              _/ _/
            _/m/'
      [ec2-user@ip-172-31-30-44 ~]$ touch test.txt
      [ec2-user@ip-172-31-30-44 ~]$ vim test.txt
      [ec2-user@ip-172-31-30-44 ~]$ cat test.txt 
      aaaaaaaxxxxx
    ```
1. インスタンスを停止する
  ![インスタンス2停止.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/0dbb97e4-0a07-160c-be60-caf17ecdafe7.png)
1. インスタンスにアタッチしているボリュームのページを開き、アクション -> ボリュームのデタッチを行う
   ![ボリュームデタッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/4207660a-3655-3d10-54c1-17d8992867ca.png)
1. スナップショットの作成を行う
   ![スナップショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/4d50e426-ff2c-63e0-6f37-8f50d76d1cd0.png)
1. ボリュームを削除、削除することでEBSの課金は発生しなくなる

手順2 スナップショットからEC2復元まで
1. 先ほど作成したスナップショットを指定してボリュームの作成を行う
   - ※注意 アベイラビリティゾーンをEC2インスタンスに合わせる
   ![スナップショット指定ボリューム作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/49b90028-e50d-18d3-6a80-a206aede7e33.png)
1. 作成したボリュームをEC2インスタンスにアタッチ
   ![ボリュームアタッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/62a57e46-882c-ec87-4a2d-2318f2ef58e2.png)
1. インスタンスを起動
   ![インスタンス4起動.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/f1f27437-b696-751c-3816-26786e467483.png)
   - ボリュームがない状態で起動すると失敗する
     ![インスタンス3ボリュームがない状態で起動.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895022/697d705f-5485-7588-0036-f427ff989017.png)
1. EC2にアクセスするとボリューム削除前に作成したファイルの存在を確認できる
    ```
    ssh -i "~/training/training-dev-keypair.pem" ec2-user@ec2-54-242-18-183.comput
    e-1.amazonaws.com
    The authenticity of host 'ec2-54-242-18-183.compute-1.amazonaws.com 
    ...初回フィンガープリントの部分は省略
    (ED25519) to the list of known hosts.
      ,     #_
      ~\_  ####_        Amazon Linux 2023
      ~~  \_#####\
      ~~     \###|
      ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
        ~~~         /
          ~~._.   _/
            _/ _/
          _/m/'
    Last login: Wed Oct 16 04:44:05 2024 from 126.144.6.148
    [ec2-user@ip-172-31-30-44 ~]$ ls
    test.txt
    [ec2-user@ip-172-31-30-44 ~]$ cat test.txt 
    aaaaaaaxxxxx
    ```
# まとめ
無料枠で課金されないと考えていたが、請求で課金されていることに気づいた
課金が発生するか不安な場合はBudgetsなどを使ってアラートを設定する

# 参考ページ
https://qiita.com/Yuji-Ishibashi/items/bb1c0042fd16a9350c5a