AWS EC2 課金について

https://aws.amazon.com/jp/ec2/

Amazon Elastic Compute Cloud (Amazon EC2)は、Amazonが提供する仮想サーバです。
Cloud9を利用するときも、自分でサーバを設置しない場合は、この仮想サーバにインスタンスを立ち上げて利用します。
このサービスの課金額の計算方法と、1年間の無料枠の考え方をまとめたいと思います。

料金について

https://aws.amazon.com/jp/ec2/pricing/

料金については、こちらのURLにまとまっていますが、その中でも本格的に使わない場合は、使った分だけ課金される「オンデマンド」の料金になります。
本格的に本番サーバとして検討されている方は、「リザーブドインスタンス」などの他の項目の料金を見てみて下さい。

オンデマンド料金について

https://aws.amazon.com/jp/ec2/pricing/on-demand/

オンデマンドの料金は、こちらのURLにまとまっています。
様々な用意された性能の中から自分で選んだ性能にすることが出来ます。
低性能(安価) <=> 高性能(高価)になりますので、
必要最小限の構成を選択するようにしましょう。

単価は、1時間単位で表示されているが課金は1秒単位(ただし最小は60秒)

先のURLに表示されている単価は1時間利用した場合の単価になります。
例えば、「t2.micro (1CPU / メモリ 1G)」の場合、 0.0116USD/時間が単価となります。
このインスタンスを15分利用した場合は、
0.0116 USD / 3600秒 = 0.00000322… USD (0.0003866…円) / 秒
0.00000322… USD * (15 * 60) 秒 = 0.0029 USD (約0.35円)
という計算になります。
ただし、最小は60秒のようなので、1秒でも60秒分は課金されます。 (61秒なら61秒分でOK)

課金は、インスタンス毎にされるので複数インスタンス立ち上げる場合は注意

EC2の利用料は1インスタンス当たり利用している時間分課金されるので、複数インスタンス立ち上げると2倍、3倍と料金がかかります。
例えば「 t2.micro」をインスタンスaが1/1-1/20、インスタンスbが1/15-1/30の間立ち上げていたとします。
すると、
インスタンスa 0.0116 USD * (20 * 24) 時間 = 5.568 USD (約669 円)
インスタンスb 0.0116 USD * (15 * 24) 時間 = 4.176 USD (約502 円)
——————————————————————————
合計 9.744 USD (約1170 円)
このようにどちらも別々に課金されるので注意して下さい。
特にCloud9は、Environmentを開くとインスタンスが立ち上がります。
複数ウィンドウで色々なEnvironmentを開いたりすると裏でインスタンスが複数立ち上がっているので、思わぬ課金額になるかも知れません。
また、ブラウザを閉じてもインスタンスがその瞬間落ちるわけではありません。
最短で30分経ったら自動で落とす設定を行うことが出来ますので、その設定を行っておきましょう。

1年間の無料枠 月750時間 (t2.micro) あり

https://aws.amazon.com/jp/ec2/?ft=n

AWS の無料利用枠には毎月 750 時間分の Linux および Windows の t2.micro インスタンスが含まれます(1 年間)。無料利用枠内に抑えるには、EC2 マイクロインスタンスのみを使用してください。

AWSに登録してから1年間は、月750時間の無料枠があります。
31日としても、24 * 31 = 744 時間 なのですが、先程挙げた例のように複数インスタンス立ち上げると一気に2倍、3倍と消費されてしまうので注意して下さい。
先程の例だと20*24=480時間と15*24=360時間の合計840時間から750時間(無料枠)を引いた90時間分がその月の課金対象時間になります。
あと、無料の対象はt2.mircroの構成だけになりますので、他の構成の場合は無料枠は使われず直課金されます。

自動で落とす設定も完璧じゃない?

先程Cloud9で自動で落とす設定があると書きましたが、私が試しているときに2インスタンスが3日程ずーっと立ち上がっていたことがありました。
Cloud9でEnvironmentを作っては壊してを繰り返して、そのうちうまくいったEnvironmentは残しておきました。
その操作の中で、残したEnvironmentのインスタンスが2つ落ちてなく無料枠がごそっと使われてしまいました。(無料枠を気にして見ていたので気がついた。)
無料枠がどの程度使われているか、請求がどの程度になるかを見る方法も合わせて紹介しておきます。

ルートアカウントでAWSマネジメントコンソールにログイン

https://aws.amazon.com/jp/console/

請求は、ルートアカウントでしか見ることが出来ないようですので、ルートアカウントでログインして下さい。
ASW マネジメントコンソールのサービス検索ボックスに「請求」と入れて、表示されるポップアップをクリックします。

請求情報とコスト管理ダッシュボードの下の方に使用状況別の上位無料利用枠サービスという表示があるので、そこにある「Amazon Elastic Compute Cloud」の「750 hours of Amazon EC2 Linux t2.micro instance usage」の欄がそれにあたります。
下記の場合、25.54% (191.52時間利用済み)ということになります。

また、「すべて表示」のボタンを押せば使用率TOP5以降も見ることが出来ますし、「
今月の終わりまでの予想使用状況」という、そのままのペースで使うとどれだけ消費されるかも見ることが出来ます。
ここが100%を超えている場合は、月末までそのまま使うと課金される可能性が高いということになりますので、無料で使いたい場合は消費を抑えるようにして下さい。

以上が、EC2の簡単な課金の仕組みになります。
Cloud9だけを使うのであれば、そこまで高額の課金になることは無いと思いますが
一応課金される可能性がある以上、少しは仕組みを理解しておく方が良いかなと思います。

AWS Cloud9 前提編

もう早くも2月ですね。
1月は色々調査していました。
開発環境としては、AWS Cloud9を使ってみることにしました。

AWS Cloud9とは?

https://aws.amazon.com/jp/cloud9/

AMAZONが提供しているクラウド(インターネット上)に構築する統合開発環境(IDE)です。自分のパソコンにはブラウザがあればOK。
インターネット上に構築されるので、パソコンが故障したり、Windows等のOS再インストールしたり、パソコンを買い換えたりしても大丈夫。
開発環境の構築しなおしは発生しません。
あとは、2台以上のパソコン間でも開発環境を共有できますし、開発途中の状態を保持したままスリープしておく事が出来ます。
(すっごい便利そう・・・)

サポートしているブラウザは?

https://aws.amazon.com/jp/cloud9/faqs/

Google Chrome、Safari、Firefox、Microsoft Edgeの最新バージョンでサポートされているようです。
主要なブラウザでサポートされているので、マイナーなブラウザを使っている方以外は、新たにインストールする必要もなさそうですね。

サポートされているプログラミング言語は?

https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/language-support.html

Node.js (JavaScript)、Python、PHP、Ruby、Go、C++ など、40 以上のプログラミング言語をサポートしていると謳っています。
ただ、開発が出来ることと実用に耐えうることは別ということは気をつけて下さい。
AMAZON側も特に隠しているわけではなく
リンク先にあるようにどこまでサポートしているかは明記されています。
実用に耐えうるためには、「コードヒントとlinting」や「デバッグ」などまで対応している方が良いと思います。
メインの開発環境が別にあり、サブマシンで外出先で少し直す程度の使い方であれば、
そこまでサポートされていない言語の開発も可能だと思います。
なので、基本的には1行目に例が挙げられた言語の開発者向けと思っていただく方が良いと思います。
当サイトでも、上記言語をメインに開発環境の構築や実際に簡単な開発をしてみようと思います。

お金はかかるの?

https://aws.amazon.com/jp/cloud9/pricing/

https://aws.amazon.com/jp/ec2/pricing/on-demand/

一番大事な事はここですね。AWS Cloud9自体にはお金はかからないとのことですが、これは、自分でサーバなどを立てることが出来る方の話。
ブラウザだけで利用しようとすると、EC2(仮想サーバ)の利用にお金がかかります。
初期費用などはかかりませんが、1つ目のリンクにあるように
EC2利用料 0.0116 USD(1.3円程度) / h (※構成がt2.microの場合)
ストレージ使用量 0.10 USD (12円程度) / GB / 月
(他の構成別単価は、2つめのリンク参照)
がかかってきます。

私のように週末だけ使うようであれば、リンク先の例にあるように
例にあるメモリ1GBのt2.micro構成にして
月90時間、ストレージ8GBを使うとして
EC2利用料 0.0116 USD × 90 時間 = 1.05 USD (120円程度)
ストレージ使用量 0.10 USD x 8 GB = 0.80 USD (90円程度)
———————————————————————————
合計 1.85 USD (210円程度)
となります。安っ!この程度なら出しても良いかなと思えます。

もし、フリーランス的な使い方をするのであれば、
メモリが2GBのt2.small構成にして
月300時間(12時間*25日)、ストレージ 50GBを使うとして
EC2利用料 0.023USD × 300 時間 = 6.9 USD (760円程度)
ストレージ使用量 0.10 USD x 50 GB = 5 USD (560円程度)
———————————————————————————
合計 11.9 USD (1310円程度)

ちなみにストレージに関しては、環境自体はやむを得ないが
アクティブでないプロジェクトをGitHubに逃がすなどすれば圧縮出来るかも。

1年間は無料利用枠あり!?

https://aws.amazon.com/jp/free/?awsf.Free%20Tier%20Types=categories%2312monthsfree

Amazon EC2 750 Hours / 月
Amazon Elastic Block Storage 30GB
初期登録から12ヶ月間は、Cloud9だと上記無料枠が自動的に適用になります。
つまり、
EC2利用料 0.0116 USD × 750 時間 = 8.7 USD (960円程度)
ストレージ使用量 0.10 USD × 30 GB = 3 (340円程度)
———————————————————————————-
合計 11.7 USD (1300円程度)
が無料になります。

750時間ということは、
24時間 × 31日 = 744時間 より多いので普通に使う分には、超える事はありません。
なので、ストレージの容量を注意して気にしていれば12ヶ月は安心して無料で使う事が出来ます。
IDEの使い勝手はどうか、EC2のスペックは足りるか、無料期間終了後は大体どの程度課金されるかなどがじっくり試せそうです。

課金される罠はないの?

https://aws.amazon.com/jp/ec2/?ft=n

あります。といっても、AMAZONも騙そうとしているわけではなくて、ちゃんと明記されています。

① EC2の設定に気をつけよう
AWS の無料利用枠には毎月 750 時間分の Linux および Windows の t2.micro インスタンスが含まれます(1 年間)。
無料利用枠内に抑えるには、EC2 マイクロインスタンスのみを使用してください。」
と明記されています。
別記事でその設定箇所を出しますが、構成を間違えると1h目から有料となるので注意して下さい。
多分t2.microより小さい構成のt2.nanoを使っても無料枠対象外だと思います。

② EC2のインスタンスが複数立ち上がらないように注意しよう

EC2の課金について別記事にまとめました。

③ 怖い怖いパスワード漏洩での高額請求
パスワードが漏洩してしまった場合に勝手にEC2のインスタンスを立ち上げられてしまう事があります。
そうすると、超高額の課金がされてしまいます。
下記URLの例は、シークレットキーの流出が原因ですが、パスワード漏洩でも同じ事になるので注意して下さい。

参考にさせて頂いたサイト様、ありがとうございました。

https://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694
https://qiita.com/AkiyoshiOkano/items/72002409e3be9215ae7e
https://note.mu/ooga04/n/n7f8d17aafc7c

ダメでした…

AMAZONやっぱりだめでした。

どうやら、しっかりコンテンツができている状態でないとダメってことみたいで門前払いされました。

まぁ、しょうがないので楽天でやってみることにしました。

楽天については、IDが即時発行されたのでこれを使って作成出来そうです。


開発スタート!

何か開発したいなぁと準備してから、だいぶ時間が経ちました。

ようやく、開発をやっていきます。

まずは、AMAZONの情報を取得できるようにして、商品検索ツールを開発したいと思います。

ただ、いきなり躓く…

AMAZONのAPIを使うためにアソシエイトに登録しようとしたら、

既に開発済のサイトのURLを教えてと言われました。

コンテンツがある程度存在するWebサイトが開発済みなことが条件になって、その審査がされるそうです。

これって、鶏が先か卵が先かみたいになりません?

だって、APIを使ったサイトの開発のためにはIDが必要なのでは…

まぁ、このブログだけでコンテンツがある程度ということでOKとなってくれたら良いんですが

ってことで試しに申請

結果は後ほど