AWSのEC2を無料利用枠で使う際の注意点

f:id:ryoutaku_jo:20190312155856p:plain

【結論】

AWSでは初年度(12ヶ月間)だけ、
 EC2のt2.microインスタンス
 「750 時間/月」
無料で使用できる

複数インスタンスを起動している場合
 それらの合計時間で計算される

インスタンスを停止させても
 ElasticIPを割り当てたまま
にしていると
 課金対象になってしまう


【目次】


【本題】

無料枠に収めたつもりが請求が発生した

先月からAWSのEC2を使ってアプリのデプロイをやっているのですが、
先月分で謎の請求がありました。

f:id:ryoutaku_jo:20190312162830p:plain

微々たる金額ですが、無料枠に収めたつもりだったので、
何が原因なのか調査したところ、注意しておく必要がありそうな箇所が
いくつかあったので、今回はそれをまとめます。

無料利用枠の概要

まず、AWSの無料利用枠についてですが、
下記サイトに適用されるサービスの範囲が掲載されています。

aws.amazon.com

なお、今回調査したEC2については、下記のような内容になっています。

f:id:ryoutaku_jo:20190312163440p:plain

t2.microインスタンスに限り、
「750 時間/月」無料
で使用できるというものです。

「31日間×24時間=744時間/月」となるので、
一月フルで利用しても無料枠に収まる計算です。

注意1:複数のインスタンスを稼働させている場合

先ほどの時間について注意しなければならないのは、
複数インスタンスを稼働させている場合は、
それぞれの稼働時間の合計で計算されるという点です。

二つのインスタンスを稼働させている場合、
「31日間×24時間×2=1488時間/月」となり、
750時間を超過した「738時間分」は、別途請求されてしまいます。

実際に、今月私はインスタンスを二つ稼働させていましたが、
使用状況を見ると、3/12時点で「584.20時間」使用したという事になっていました。
「584.20時間÷24時間÷2=12.16日間」となるので、
確かに合計の稼働時間で計算されているのは間違い無いようです。

↓今月の使用状況
f:id:ryoutaku_jo:20190312165535p:plain

なお先月も750時間を超過していたようで、
1時間あたり$0.0152 課金されていました。

↓先月の請求書(一部)
f:id:ryoutaku_jo:20190312173230p:plain

※$0.0152 per On Demand Linux t2.micro Instance Hour
訳:オンデマンドLinux t2.microインスタンス時間あたり$ 0.0152

注意2:ElasticIPを割り当てたままインスタンスを停止させた場合

上記の合計時間を考慮して、先月はインスタンスを停止させていた筈なのですが、
それにも関わらず請求が発生していました。

その原因を探ったところ、どうやらElasticIPを割り当てたまま
インスタンスを停止させていたことが原因で
した。

下記は先月の請求書の一部です。

f:id:ryoutaku_jo:20190312172636p:plainf:id:ryoutaku_jo:20190312172636p:plain

※$0.005 per Elastic IP address not attached to a running instance per hour (prorated)
訳:1時間あたり実行中のインスタンスに関連付けられていないElastic IPアドレスあたり0.005ドル(比例配分)

なお、公式のユーザーガイドにも下記のように記述されていました。

Elastic IP アドレス
終了したインスタンスにアタッチされたすべての Elastic IP アドレスは
アタッチを解除されますが、割り当ては続行されます。
その IP アドレスが不要になった場合は、追加料金が発生しないように解放してください。
詳細については、Linux インスタンスAmazon EC2 ユーザーガイド の「Elastic IP アドレスを解放する」を参照してください。

予想外の料金の回避 - AWS 請求情報とコスト管理

IPアドレスは貴重な資源なので、無駄な使い方をしているのであれば
課金するぞ!という考え方なのでしょうね。

通知メールの設定方法

こういった予期せぬ請求は、サービス内容を細かく把握すれば防げるのでしょうが、
全てを網羅するのは中々難しいので、まずは請求が発生している事を
速やかに把握して、被害を最小限に防ぐところから初めていきたいと考えています。

そこで、使用量が一定額を超えたら、
通知メールが飛ぶように設定をする方法をまとめます。

1:コンソールへログイン

まず、下記サイトからAWSマネジメントコンソールにログインします。

aws.amazon.com


2:請求ダッシュボードを開く

画面右上の自身のユーザー名が表記されている部分をクリックし、
「請求ダッシュボード」を選択します。

f:id:ryoutaku_jo:20190312175640p:plain

f:id:ryoutaku_jo:20190312175656p:plain


3:Billing の設定

サイドメニューの「Billing の設定」をクリックします。
f:id:ryoutaku_jo:20190312183929p:plain

下記の三つの項目にチェックマークを入れて、「設定の保存」をクリックします。
・電子メールで PDF 版請求書を受け取る
・無料利用枠のアラートの受信 ※通知を受け取りたいメールアドレスも入力
・請求アラートを受け取る

f:id:ryoutaku_jo:20190312184112p:plain


4:アラームの作成

「請求アラートを受け取る」の文章中にある
「請求アラートを管理する」という青文字のリンクをクリックします。

飛んだ先のページのサイドメニューの「請求」をクリックします。

f:id:ryoutaku_jo:20190312184725p:plain

「アラームの作成」をクリックします。

f:id:ryoutaku_jo:20190312184817p:plain

超過のラインと通知メールの送信先を設定して、
「アラームの作成」をクリックします。
なお、今回は超過ラインを2USDとしています。

f:id:ryoutaku_jo:20190312184905p:plain


アラーム作成後、認証メールが届くので、リンクをクリックします。

f:id:ryoutaku_jo:20190312185513p:plain

下記の画面が表示されれば、認証完了です。

f:id:ryoutaku_jo:20190312185536p:plain

《今日の学習進捗(3年以内に10000時間に向けて)》

就活、個人アプリ開発

学習開始からの期間 :95日
今日までの合計時間:916h
一日あたりの平均学習時間:9.7h
今日までに到達すべき目標時間:868h
目標との解離:48h
「10,000時間」まで、

残り・・・「9084時間!」