aachyeeのブログ

備忘録的メモ。主にIT(プログラミング、電子工作)、DIY、アウトドアネタ。詳細はaboutを。

GoogleとAmazonの主要なクラウドサービスの小規模プランの料金(2018年8月25日版)

小規模プランの料金のみです.。価格や数値は間違いがあるかもしれませんので使用する場合は各自公式サイトで確認してください。 0.01USD未満は四捨五入してあります。

Google Cloud Platform(GCP)の料金

詳細 https://cloud.google.com/pricing/

Google Cloud Platform 料金計算ツール

Google Compute Engineの料金

GCE インスタンスタイプ毎のリソース

Type vCPU RAM
GCE F1-micro shared 0.60 GB
GCE g1-small shared 1.70 GB
GCE n1-standard-1 1 3.75 GB
GCE n1-standard-2 2 7.50 GB

1アカウントに付きGCE F1-microインスタンス1つが無料。

GCEの時間毎 の料金(一部GCP料金計算機から算出)

Type Tokyo Oregon
GCE F1-micro 0.0092 USD/hour 0.0076 USD/hour
GCE g1-small 0.033 USD/hour 0.027 USD/hour
GCE n1-standard-1 0.0610 USD/hour 0.0475 USD/hour
GCE n1-standard-2 0.1220 USD/hour 0.0950 USD/hour

GCEの月毎の料金(一部GCP料金計算機から算出、730時間、継続利用割引適用済)

Tokyo Oregon
GCE F1-micro 4.70 USD/mon 3.88 USD/mon
GCE g1-small 16.45 USD/mon 13.80 USD/mon
GCE n1-standard-1 31.17 USD/mon 24.27 USD/mon
GCE n1-standard-2 62.34 USD/mon 48.5500 USD/mon

GCE LocalSSDの料金(GCP料金計算機から算出)

Size Tokyo Oregon
375 GB 39 USD/mon 30 USD/mon

GCE Persistent Diskの料金

Size Tokyo Oregon
10 GB 0.52 USD/mon 0.40 USD/mon
100 GB 5.20 USD/mon 4.00 USD/mon

1アカウントに付き30GBまで無料。

Google Kubernetes Engineの料金

詳細 https://cloud.google.com/kubernetes-engine/pricing?hl=ja

Kubernetes Engine では、Google Compute Engine インスタンスクラスタ内のノードとして使用されます。

ノードを削除するまでは、Compute Engine の料金設定に基づいて、これらのインスタンスごとに課金されます。

Compute Engine リソースは秒単位で課金され、最小使用料金は 1 分間分です。

Google Cloud Storageの料金

詳細 https://cloud.google.com/storage/pricing?hl=ja

Type Asia US
Multi-Regional Storage 0.026 USD/GB/mon 0.026 USD/GB/mon
Regional Storage
Nearline Storage 0.01 USD/GB/mon 0.01 USD/GB/mon
Coldline Storage 0.007 USD/GB/mon 0.007 USD/GB/mon

GCP ネットワークの料金

詳細 https://cloud.google.com/compute/pricing?authuser=2&hl=ja#network

上り(イン)はすべて無料。

Google のサービス(YouTube、マップ、ドライブなど)への下り(アウト) は無料。

インターネット下り(アウト)料金
Transfer Tokyo Oregon
0~1 TB 0.14 USD/GB 0.12 USD/GB
1~10 TB 0.14 USD/GB 0.11 USD/GB
10 TB~ 0.12 USD/GB 0.08 USD/GB

1アカウントに付き下り1GB/月まで無料。

GCE継続利用割引

https://cloud.google.com/compute/docs/sustained-use-discounts?authuser=2&hl=ja

GCE確約利用割引

https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts?authuser=2&hl=ja

Amazon Web ServicesAWS)の料金

AWS の料金モデルとクラウドによるコスト削減

クラウドサービスの料金 – アマゾン ウェブ サービス (AWS)

AWS の課金体系と見積もり方法

AWS簡易見積りツール(最新の料金やプランではない可能性あり)

AWSキャンペーン情報

Amazon Elastic Compute Cloud(EC2)の料金

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

Amazon EC2インスタンス毎のリソース
Type vCPU RAM
t3.nano 2 0.5 GiB
t3.micro 2 1.0 GiB
t3.small 2 2.0 GiB
t3.medium 2 4.0 GiB
Amazon EC2 オンデマンドインスタンスの1時間料金
Type Tokyo Oregon
t3.nano 0.0068 USD/hour 0.0052 USD/hour
t3.micro 0.0136 USD/hour 0.0104 USD/hour
t3.small 0.0272 USD/hour 0.0208 USD/hour
t3.medium 0.0544 USD 0.0416 USD/hour
Amazon EC2 オンデマンドインスタンスの一ヶ月(730時間)料金
Type Tokyo Oregon
t3.nano 4.96 USD/mon 3.80 USD/mon
t3.micro 9.93 USD/mon 7.59 USD/mon
t3.small 19.86 USD/mon 15.18 USD/mon
t3.medium 39.71 USD/mon30.37 USD/mon
Amazon EC2 リザーブインスタンス料金表

詳細 https://aws.amazon.com/jp/ec2/pricing/reserved-instances/pricing/

Amazon EC2 リザーブインスタンス スタンダード 1年分全額前払い時の一月分(12分の1)の料金
Type Tokyo Oregon
t3.nano 3.17 USD/mon 2.25 USD/mon
t3.micro 6.33 USD/mon 4.42 USD/mon
t3.small 12.67 USD/mon 8.92 USD/mon
t3.medium 25.33 USD/mon 17.75 USD/mon

Amazon EC2 データ転送料金

詳細 https://aws.amazon.com/jp/ec2/pricing/on-demand/#Data_Transfer

インターネットから Amazon EC2 へのデータ転送受信 (イン) は無料。

Amazon EC2 からインターネットへのデータ転送送信 (アウト)
Out Data Transfer Tokyo Oregon
1 GB /月まで 0.00 USD/GB 0.00 USD/GB
その後 9.999 TB /月まで 0.140 USD/GB 0.09 USD/GB
その後 40 TB /月まで 0.135 USD/GB 0.085 USD/GB
その後 100 TB /月まで 0.130 USD/GB 0.07 USD/GB
150 TB/月を上回る場合 0.120 USD/GB 0.05 USD/GB

Amazon Simple Storage Service(S3)の料金

詳細 https://aws.amazon.com/jp/s3/pricing/

Amazon S3 標準ストレージの料金
Transfer Tokyo US
最初の 50 TB/月 0.025 USD/GB 0.023 USD/GB
次の 450 TB/月 0.024 USD/GB 0.022 USD/GB
500 TB /月を超える分 0.023 USD/GB 0.021 USD/GB
Amazon S3 標準 - 低頻度アクセス (S3 標準 - IA) ストレージ
Type Tokyo US
すべてのストレージ 0.019 USD/GB 0.0125 USD/GB
Amazon S3 1 ゾーン - 低頻度アクセス (S3 1 ゾーン - IA) ストレージ
Type Tokyo US
すべてのストレージ 0.0152U SD/GB 0.01 USD/GB
Amazon S3 Glacier ストレージ
Type Tokyo US
すべてのストレージ 0.005 USD/GB 0.004 USD/GB
Amazon S3 データ転送料金

EC2と同じ

Amazon Elastic Block Store(EBS)の料金

詳細 https://aws.amazon.com/jp/ebs/pricing/

Type Tokyo US
SSD(gp2) 0.12 USD/GB/mon 0.10 USD/GB/mon
HDD(st1) 0.054 USD/GB/mon 0.045 USD/GB/mon

Amazon Lightsail (VPS)の料金

詳細 https://aws.amazon.com/jp/lightsail/pricing/

英語ページを見たほうが良い。日本語ページは最新でない時がある。

Fee Memory Processor Disk Data transfer
3.5 USD/mon 512 MB 1 20 GB SSD 1 TB
5 USD/mon 1 GB 1 30 GB SSD 2 TB
10 USD/mon 2 GB 1 40 GB SSD 3 TB
20 USD/mon 4 GB 2 80 GB SSD 4 TB
40 USD/mon 8 GB 2 160 GB SSD 5 TB
Amazon Lightsail 超過アウトバウンドデータ転送料金

詳細 https://aws.amazon.com/lightsail/faq/ What types of data transfer do I get charged for?

Plan Tokyo US
All 0.14 USD/GB 0.09 USD/GB

記述中…

TwitterへのリンクをクリックするとTwitterアプリが起動する現象をどうにかする

Microsoft StoreにあるTwiterアプリをインストールすると、ブラウザ等でTwitterへのリンクをクリックした際にTwitterアプリが起動してしまう。
便利な人もいるだろうが、現在のTwitterアプリは出来が悪く、当方は使う気になれない(モバイル通知を受け取るためだけ使っている)。

Windows 10の設定の「プロトコルごとの規定のアプリを選ぶ」に、URL:Twitterというのがあるので、これを変更または削除できると思ったのが全然方法がわからない。

 仕方ないのでレジストリをいじった。以降の作業は各自の責任で行ってください。失敗してシステムが壊れても当方は責任を負いかねます。

まず下記のレジストリ(9E2F88E3やwgeqdkkx372wmの部分は場合によって変わるかもしれない)を必ずバックアップしてから、配下の"twitter.com"を含むキー をすべて削除します。

HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\9E2F88E3.Twitter_wgeqdkkx372wm\AppUriHandlers

削除したら、ブラウザ等でTwitterへのリンクをクリックしてTwitterアプリが起動しないか確認してください。

下記のレジストリにも同じキーがあるのですが、こちらは影響していないようです。

HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Extensions\windows.appUriHandler

 以上です。関係のないレジストリを削除したり、変更しないよう気をつけて行ってください。

追記

最近、アプリ側で対策されてしまったようで、レジストリを消しても復活してくるようになってる。レジストリ内のAllowedPathsの値を*から適用な文字列に変えることで抑止はできるようだが、いつまで持つか不明。

WindowsのERRORLEVELにハマった

 以下のようなコードを含んだバッチファイルが期待どおりに動かなくて悩んだ。

DIR /0 2>NUL

IF %ERRORLEVEL% NEQ 0 (ECHO Error) ELSE (ECHO Ok)

 DIR /0は必ずエラーになりERRORLEVELが1になり"Error"と出力されるはずであるが、テストしていたコマンドプロンプトでこのバッチファイルを実行するとはなぜか必ず"Ok"と出力されてしまう。

色々ネットを徘徊するとERRORLEVELという環境変数が上書きで設定されていて、本来のERRORLEVELが見えなくなっていることがわかった。コンソールで色々コマンドをテストしていたときに"SET ERRORLEVEL=0"としていたので、それがずっとが悪さをしていた。

テストしていたコマンドプロンプトで"SET ERRORLEVEL="してから、バッチファイルを実行したら正常に動いた。

SET コマンドのヘルプ より

コマンド拡張機能が有効な場合、SET によって表示される変数の一覧には
現れないいくつかの動的な環境変数があります。
これらの変数の値は、変数の値が展開されるときに
動的に計算されます。
ユーザーがこれらの名前の変数を明示的に定義する場合、
その定義は下記の動的な定義を無効にします。

%CD% - 現在のディレクトリ文字列に展開します。

%DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。

%TIME% - TIME コマンドと同じフォーマットで現在の時刻に展開します。

%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します。

%ERRORLEVEL% - 現在の ERRORLEVEL の値に展開します。

%CMDEXTVERSION% - 現在のコマンド プロセッサ拡張機能のバージョン番号に
展開します。

%CMDCMDLINE% - コマンド プロセッサを起動したオリジナル コマンド ライン
に展開します。

%HIGHESTNUMANODENUMBER%
- このコンピューター上の最大の NUMA ノード番号に展開します。

Windowsのバッチファイルやコマンドプロンプトでは、これらの特殊な環境変数はSETで変更してはいけない。

過去に書いた記事(batファイルで多重起動(二重起動)を防止する )のコードも修正しました。

 

参考にしたページ

終了コード errorlevel の考え方について -こんばんは。OSはWindowsXP - その他(プログラミング・Web制作) | 教えて!goo

ERRORLEVELは、一般の環境変数と異なり、SET で値を代入してはいけません。(参考: set /? で表示される最終ページ)
SET を使うと一般の環境変数となってしまい、次にSETするまで値は変わりません。コマンドの実行結果と切り離されると言うことです。

ERRORLEVELについてのメモ (1) - とあるソフトウェア開発者のブログ

ERRORLEVELについてのメモ (2) - とあるソフトウェア開発者のブログ

 

X-Frame-Optionsによるページ内フレームの制限を回避して一定間隔でリロードするBookmarklet

はじめに書いておきますが、このページはX-Frame-Options制限を回避してクリックジャッキングを可能にするものではありません。X-Frame-Options制限がかかったページでBookmarkletからフレームを操作して一定間隔でページのリロードを行うものです。
また、ここで紹介するリロードするBookmarkletはリロードに時間がかるので同様の機能を持ったアドオンの利用をおすすめします。
試行錯誤の末、以下のような奇っ怪なBookmarkletになりました。1時間の間、1分おきにリロードします。おそらくFirefoxでしか動きません。

javascript:(function(){I=60,T=3600,M=T/I;D=document;D.write('<html><script>C='+M+';X=new%20XMLHttpRequest();X.onreadystatechange=function(){if(X.readyState==4&&(X.status==200||X.status==304)){G=frames[1].document;G.open();G.write(X.responseText);G.close()};};function%20R(){X.open("GET",location,false);X.send();X.abort();if(C<=0)clearInterval(T);F=frames[0].document;F.open();F.write("<html><body%20style=\\"margin:0;\\">Auto%20reload%20at%20'+I+'%20seconds%20interval.%20"+(C--)+"%20times%20left.</body></html>");F.close();};T=setInterval("R()",'+I*1000+');setTimeout("R()",50);</script><frameset%20rows="20,*"><frame><frame></frameset></html>');D.close();})();

 


ページの文字コードUTF-8でない場合は文字化けするので以下ようにしてみて下さい。

javascript:(function(){I=60,T=3600,M=T/I;D=document;D.write('<html><script>C='+M+';X=new%20XMLHttpRequest();X.overrideMimeType("text/html;%20charset='+document.characterSet+'");X.onreadystatechange=function(){if(X.readyState==4&&(X.status==200||X.status==304)){G=frames[1].document;G.open();G.write(X.responseText);G.close()};};function%20R(){X.open("GET",location,false);X.send();X.abort();if(C<=0)clearInterval(T);F=frames[0].document;F.open();F.write("<html><body%20style=\\"margin:0;\\">Auto%20reload%20at%20'+I+'%20seconds%20interval.%20"+(C--)+"%20times%20left.</body></html>");F.close();};T=setInterval("R()",'+I*1000+');setTimeout("R()",50);</script><frameset%20rows="20,*"><frame><frame></frameset></html>');D.close();})();

以上、あくまでお遊び&実験です。実用にはなりません。



現在のページを1時間の間、一定間隔でリロードするBookmarklet

それだけですが、実はこれをBookmarkletでやろうとするとちょっと難しいのです。リロードさせること自体は簡単ですが、ページをリロードするとそのページで動いているBookmarkletスクリプトが止まってしまうため、2回目以降のリロードができません。なのでフレームを作って行うことになります。完成したBookmarkletは以下のようになります。1時間の間、1分おきにリロードします。おそらくFirefoxでしか動きません。

javascript:(function(){I=60,T=3600,M=T/I;document.write('<html><script>C='+M+';function%20R(){if(C=='+M+'){frames[1].location="'+location+'"}else{frames[1].location.reload()}if(C<=0)clearInterval(T);var%20D=frames[0].document;D.write("<html><body%20style=\\"margin:0;\\">Auto%20reload%20at%20'+I+'%20seconds%20interval.%20"+(C--)+"%20times%20left.</body></html>");D.close();};setTimeout("R()",50);T=setInterval("R()",'+I*1000+');</script><frameset%20rows="20,*"><frame><frame></frameset></html>');document.close();})();

 


ページが更新されないときは frames[1].location.reload(true) としてみて下さい。なお、スクリプトでフレームを操作している関係上、X-Frame-Options制限がかかったページはまったく表示ができません。同様の機能を持ったアドオンがあるのでそちらの利用をおすすめします。

Shift_JISでエンコードされたウェブページをUTF-8に変換して開くbookmarklet

はじめに

それ何が嬉しいの?なんでそんな無駄なことをするんだ?と言われそうなネタですが、FirefoxMozilla Archive Format(MAFF)アドオンでShift_JISなページを保存するとiframe内の文字が化けるので作ってみました。本当にニッチですね。MAFFアドオンを直せればいいんですが、それはまたの機会に。

同然ですが、Firefox専用です。

 

どうやって文字コードを変換するか

javascriptで文字コード変換 - Qiita

はじめは、上記のページで紹介されているようなライブラリを使って変換してdocument.write()しようかと考えていましたが、XMLHttpRequestだけでなんとかなったので使わずに済みました。具体的にはXMLHttpRequestのoverrideMimeTypeメソッドを使って文字コードを指定するとUTF-8に変換できました。正しく変換できたかはalert()で確認しました。

 

変換できたがdocument.write()すると文字化けけする

ところが変換した文字をdocument.write()しようとすると何故か文字化けします。どうも、ページのエンコードShift_JISのままだからのようですが、Firefoxのdocument.characterSetはリードオンリーで変更できません。どうにもならないので新しくウィンドウ(タブ)を開き、そこに書き出しました。

 

完成したBookmarklet

以下のようになりました。

 

javascript:(function(){D=document;W=window.open("","").document;X=new XMLHttpRequest();X.overrideMimeType("text/html;charset="+D.characterSet);X.onreadystatechange=function(){if(X.readyState==4&&(X.status==200||X.status==304)){W.write(X.responseText);W.close()};};X.open('GET',location,false);X.send();X.abort();})();

 

最初にdocument;D.write()を使ってスクリプト自体を書き出しているのはオマジナイです。これをしないと何故かoverrideMimeTypeを設定しても正しく変換できませんでした。

オマジナイは 不要でした。