GCPを使ってみました(Compute Engineの作成と課金データの取得)

本当はAWSが好きなのですが、巷ではGCPも結構使われているようなので、

AWSと比較をするために少しGCPを触ってみました。






GCPとは



Google Cloud Platformのことで、
Googleが提供しているパブリッククラウドサービスの総称です。

AWSなどと同様にテクノロジーやインフラが各種サービスとして用意されているため、
このサービスを使用してすばやく開発を行うことができます。

GAE(Google App Engine)、GCE(Google Compute Engine)などのサービスがあります。
また、AWSと同様にリージョン、アベイラベリティーゾーンがあります。





他のクラウドと比べてコストが比較的安い、モニタリングがしやすい、
BigQueryを使った分析をしたいといった場合に適しているようです。






やったこと




  • GCPのアカウント登録


  • プロジェクトの作成


  • Compute Engineのインスタンス作成


  • Compute EngineへのSSH接続


  • GCPの課金データ取得


  • GCPの課金アラート設定








参考



cloud.google.com






GCPのアカウント登録



こちらのサイトを参考にさせて頂きました。

丁寧に手順が記載されていて非常にわかりやすかったです。



blog.apar.jp





GCPは無料トライアルとして、12ヶ月$300分の無料クレジットが用意されているので、
これを利用して無料で色々なサービスを使うことができます。

また、無料期間が終了してもGoogle App Engineなどは常時無料枠が用意されているので、
制限までは無料で使えるサービスもあります。





下記サイトで「無料トライアル」をクリックし、アカウントを登録します。



cloud.google.com






f:id:mtomitomi:20180205192456p:plain






プロジェクトの作成



「空のプロジェクト作成」をクリックし、プロジェクト名に適当な名前を入れます。

今回は「gcp-test」としました。



f:id:mtomitomi:20180205191109p:plain






f:id:mtomitomi:20180205192846p:plain






f:id:mtomitomi:20180205192924p:plain





作成したプロジェクトを選択すると、ダッシュボードが表示されます。



f:id:mtomitomi:20180205192945p:plain






Compute Engineのインスタンス作成



メニューからCompute Engineを選択してVMインスタンスを作成します。



f:id:mtomitomi:20180205193008p:plain






f:id:mtomitomi:20180205193445p:plain





作成するインスタンスの設定をします。

リージョンはus-から始まるものでないと無料になりません。

ちなみに、西海岸のほうが速度が少し速いようです。





また、インスタンスのサイズをmicroにしないと無料になりません。

デフォルトのままだと課金されてしまうので注意してください。



f:id:mtomitomi:20180205193511p:plain





ディスクのサイズは30GBまで無料です。



f:id:mtomitomi:20180205193913p:plain





ファイアフォールの設定では、
HTTPとHTTPSの「トラフィックを許可する」にチェックしておきます。





ネットワーキングで外部IPを新しい静的IPアドレスに設定します。

名前は適当で大丈夫で、今回は「sample-ip」としました。

ここまで設定できたら作成ボタンを押します。





作成したインスタンスSSHのメニューから
「ブラウザウィンドウを開く」を選択すると、
ブラウザが起動され自動的にサーバにログインしてくれます。



f:id:mtomitomi:20180205194956p:plain






f:id:mtomitomi:20180205195124p:plain






Compute EngineへのSSH接続



Cloud Shellから接続してみます。

先ほど作成したインスタンスSSHメニューから「gcloudコマンドを表示」を選択して
「CLOUD SHELLで実行する」をクリックします。



f:id:mtomitomi:20180205195407p:plain





Cloud Shellが起動して画面の下部に表示されます。

SSHログイン用のコマンドが入力されているのでEnterを押して、
質問に対してYを入力してSSH鍵を生成します。

SSH鍵生成時に聞かれる質問は、何も入力しないでEnterでも大丈夫です。



f:id:mtomitomi:20180205195633p:plain





今度はSSHクライアントで接続してみます。

先ほどCloud Shellで接続したときに既にSSH鍵が生成されていますが、
上の手順をやっていない場合は下記コマンドでSSH鍵を生成します。




$ ssh-keygen -t rsa -f ~/.ssh/gce-key -C {ユーザー名}





公開鍵を出力させて中身をコピーします。

��何故だかpbcopyコマンドが使えませんでした)




$ cat /home/maya_tominaga_9/.ssh/gce-key.pub





コピーした公開鍵をSSH認証鍵として登録します。

Compute Engineのメニューから「メタデータ」を選択します。



f:id:mtomitomi:20180205200829p:plain





SSH認証鍵のタブを選択して「編集」のあとに「項目の追加」を選択して
コピーした内容をペーストします。
コンソールからコピーしたときに意図しない改行が入ってしまったので、それは削除しておきました。
保存ボタンを押して登録します。





SSH鍵を登録すると、コンソールからログインできるようになります。

下記コマンドを実行してログインします。




$ ssh {ユーザー名}@{サーバーの外部IPアドレス} -i ~/.ssh/gce-key

[maya_tominaga_9@sample ~]$






GCPの課金データ取得



課金が発生したときに気付けるように、課金データを取得してバケットに出力できるようにしました。
こちらを参考にしました。



qiita.com





まずは出力させるバケットを作成するため、
GCPのメニューから「Strage」を選択して「バケットを作成」をクリックします。

ストレージクラスはRegionalでないと無料になりません。



f:id:mtomitomi:20180205201820p:plain





バケットを作成したら課金データを取得します。

GCPメニューから「お支払い」を選択して「課金データをエクスポート」から
「ファイルのエクスポート」タブをクリックします。



f:id:mtomitomi:20180205202227p:plain





「設定を編集」をクリックしてバケット名とレポート接頭辞を設定します。

レポート接頭辞は適当で大丈夫です。



f:id:mtomitomi:20180205202451p:plain





この設定をすると日本時間の0時頃に、バケットに課金データが作成されます。






GCPの課金アラート設定



課金データを出力だけだと気付けない可能性があるので、アラートの設定をしておきました。
下記の公式ドキュメントを参考にしました。



Set Budgets and Alerts  |  Google Cloud Billing API Documentation  |  Google Cloud Platform





GCPメニューから「お支払い」を選択し、「予算とアラート」から予算の作成をクリックします。



f:id:mtomitomi:20180205203619p:plain





予算名、予算額を設定して保存ボタンを押します。

今回は1円でも課金が発生したらアラートを飛ばしたかったので、予算額を1円にしています。



f:id:mtomitomi:20180205202917p:plain





まだ正常にアラートが飛ぶか確認はできていないのですが、
バケットに作成された課金データと合わせて確認していこうと思います。






GCPを使ってみた所感



AWSと同様に無料枠があるので、簡単に試せるのは良かったです。

今回AWSと異なっていたと感じた点としては、GCPはプロジェクトを作って
その中でインスタンスの作成や設定をしていくということです。

課金データをSlackに飛ばしたかったのですが、やり方がわからなかったので後日もっと調べて実現させたいです。
ちなみに、ログを監視してSlackに飛ばすのは、画面から設定して簡単にできるようでした。

公式ドキュメントはAWSと同様に詳しく書かれていましたが、日本語化されるのがAWSよりも遅いようです。

GCPでは、PythonJava、Node.jsの他にGo、PHPRuby、.NETも使えるようなので、
今度使ってみたいと思います。





まだAWSと比較したGCPの良さを実感できていなく、AWSの方が色々できる感じがしていますが、
GCP特有のBigQueryや機械学習などを試してみたいと思います。