AWS
S3

AWSを使い始めて2日目に無料枠限度アラームがきた話

AWSのアカウントを作成してから3日後の休日、以下のメールが届いた。

Subject: AWS Free Tier limit alert

Dear AWS Customer, 

Your AWS account xxxxxxxxxx has exceeded 85% of the usage limit for one or more AWS Free Tier-eligible services for the month of November. 

AWS Free Tier Usage as of 11/04/2018 
AWS Free Tier Usage Limit 
1,829 Requests 
2,000 Put Requests of Amazon S3 

受け取ってからした行動

請求コンソールの確認

AWS マネジメントコンソールにログインし上部メニューから[サービス]>[請求]へ。この表を見て「S3 = Simple Storage Service」ということに気づいた。

「使用状況別の上位無料利用枠サービス」を見ると「Amazon Simple Storage Service」の使用状況が無料枠の「91.45%」になっていた。まだEC2の利用すらしていない私がいつS3を利用したというのだろうか。

2018-11-04-16-10-32.png

S3サービス利用状況の確認

[サービス]>[S3]を開く。
そこには見覚えのある「バケット」が1つ。

取り急ぎ該当のバケットを削除して対処は終了(たぶん)。

バケットが作られた理由

AWSを開始するにあたりネット上には様々な情報が流れていて、AWS入門生として気になるのは「料金」と「セキュリティ」だろう。今回、バケットを作る理由となったのは「セキュリティ」について参考した記事をまるっと参考にしたためだった。

具体的には「CloudTrail」というサービスを利用したためだった。AWSのAPI呼出しの履歴を残してくれ、AWS内のリソースの作成/変更/削除をログに残すものだ。CloudTrailの設定の中で「新しいS3バケットを作成しますか?」のラジオボタンに対して解説サイトの指示どおり「YES」を選んでしまったのが原因だった。

結局バケットとは何か

AWSドキュメント:Amazon S3 バケットの使用

S3の名前のとおりCloud Storageであり、利用者は自由に区分 = バケットを作成(最大100個)して自由にデータを格納できる。今回はCloudTrailを利用するにあたってS3に専用のバケットを1つ作成し、そこにログを溜めていたらしい。

その利用頻度が無料枠の上限を超えそうだったということだ。無料枠の上限は1月あたり2,000 Put & 20,000 Getらしく、AWSの頻繁な操作ログが2,000 Putの方にカウントされて1,892 Putに至ったようだ。

S3 の料金

AWSドキュメント:Amazon S3 Pricing

ぶっちゃけ言うとよくわからない。メニューに「ストレージ料金表」「リクエスト料金表」があるので、この2つを気にする必要があったのは間違いない。ただS3のコンソールを開いてリージョン(場所)を選択しようとすると「S3では、リージョンを選択する必要はありません」って出てくるのに、料金表はリージョン毎に設けられている。やっぱりよくわからない。

※ 2018/11/05 11:37追記
コメントいただきましたが、Amazon S3コンソールで選択する「リージョン」はコンソール画面に対してのものでした。S3はバケット毎にリージョンを選ぶことができます(リージョンにより値段も違う)。しかしコンソール画面ではリージョンの区別なくバケットを一覧表示できるようになっているため「リージョンを選択する必要はありません」となるわけです。実際にバケットを新規作成するとリージョン選択が現れますね。なるほどなるほど。

S3 の無料枠

AWSドキュメント:AWS無料利用枠

パッと見でAmazon S3は「5 GBの標準ストレージ」としか書いていない。しかし下部の「詳細を展開」を押下すると

  • 5 GBの標準ストレージ
  • 20,000件のGetリクエスト
  • 2,000件のPutリクエスト

と出てくる。なるほどね。気づくか!

気づかなかった場合の料金

もう一度S3の料金表に戻り確認してみる。

  • Put, Copy, Post, またはListリクエスト --- 1,000件あたり0.0047USD

これは2018/11/04 17:19現在のレート(113.21円/USD)に照らし合わせると「0.53円」である。

まとめ

なーんだ、大した金額じゃなかったじゃん…では済まされない。今回は偶然にも安いサービスで、また料金発生前に気づけたから良かっただけである。ネットでは不正利用されて高額請求が~→救ってもらえた!なんてあるけど、これは不正ではなく自分の操作だ。高額サービスであった場合も返金はされないだろう。

拙者絶対無料枠に収めるでござる候な方は、最低限無料枠についてのページは隠されている部分も含めて一度全部目を通しておくべき。数もそんなに多くないしね。言葉さえ耳に通しておけば、いざ操作するときに「あれこれどこかで見た」って思える。

サポートからの回答(2018.11.15.追記)

サポート様から回答きたので一部抜粋

S3 の課金体系について下記 3 つの課金体系より構成されております。

  • リクエスト料金(GET/PUT/POST/LIST/COPYなどのリクエスト数に対しての課金)
  • ストレージ料金(S3 バケットへの保存容量に対して課金)
  • データ転送(なお、S3へのアップロードは無料です)

参考: S3 料金表

上記のうち「リクエスト料金」は実際にバケットがなくとも発生いたします。
しかしながら、本アカウントでは既に S3 バケットを削除いただいておりますので、
CloudTrail のログによる S3 への PUTの料金は停止しているかと存じます。

しかしながら、CloudTrail によるログの保存を停止した場合や、
この度のように S3 バケット自体を削除いただいた場合でもあっても コンソール画面上にて S3 コンソール等にアクセスに伴い、少量ながらリクエストが発生する場合がございます。

また AWS の各アカウントの、ご利用料金等に関するデータを米国東部(バージニア北部)に格納している都合上、 CloudTrail や CloudWatch などの監視・通知サービスをご利用いただきますと、バージニア北部にて、リクエストが発生いたします。
そのため、バージニア北部のバケットをお持ちでいらっしゃらない場合でも、上記のようなサービスをご利用いただいた際に リクエストが発生いたしますこと併せてご容赦くださいませ。


以下、「使用状況レポート」を利用したリクエスト"量"の確認方法についても丁寧に教えていただけました。

というか心配になって何度もコスト確認してた私の操作が影響してたんかいっ!!