「夜間に結構な量のバッチ処理が動くが、それ以外の時はほぼ使用していない」
そんなインスタンスがあって無駄なので深夜に起動して早朝に停止するようにしました。
(一日約3時間くらいの起動になり、財布にやさしくなりました)
基本的にはGoogle公式のページを確認すれば設定できると思いますが、備忘録として書きます。
公式のはアップデートに追従していないみたいで、そのままでは動きませんでした。
Cloud Functions の設定
起動関数の設定
まずは Cloud Functions ページに移動して、「関数を作成」をクリックします。
いろいろ設定値がありますが、基本的には以下のような形で大丈夫です。
名前 | startInstancePubSub |
メモリ | 128MB |
トリガー | Cloud Pub/Sub |
トピック | 「新しいトピックを作成…」をクリックし、名前に「 start-instance-event 」を入力 |
ソースコード | インライン エディタ |
ランタイム | Node.js 8 |
実行する関数 | startInstancePubSub |
スターターコード は「index.js」「package.json」2つのコードを記述します。
すでに記載されているコードを上書きしてしまって問題ありません。
GitHub – index.js GitHub – package.json
設定完了後、作成ボタンを押すとビルドが始まります。
大体2分~3分くらいかかります。(cloud functionsのココが少し残念)
停止関数の設定
起動関数作成時と同様に Cloud Functions ページに移動して、「関数を作成」をクリックします。
名前 | stopInstancePubSub |
メモリ | 128MB |
トリガー | Cloud Pub/Sub |
トピック | 「新しいトピックを作成…」をクリックし、名前に「 stop-instance-event 」を入力 |
ソースコード | インライン エディタ |
ランタイム | Node.js 8 |
実行する関数 | stopInstancePubSub |
スターター コード は起動関数で入力したものと同じ値で大丈夫です。
念のためもう一度以下にリンク貼っておきます(笑)
GitHub – index.js GitHub – package.json
設定完了後、作成ボタンを押すとビルドが始まります。
動作確認
ビルド完了後、動作確認を行います。
Cloud Functions ページに移動して、先ほど「stopInstancePubSub」をクリックすると以下の画面が表示されます。
タブ「テスト」をクリックし、パラメータの入力画面を表示させたらエンコードした値を入力します。
【入力値】
{“data”:”base64でエンコードした文字列”}
エンコードする場合は以下のツールがおすすめです。
Base64 Decode and Encode – Online
ここに入力する値は{"zone":"asia-northeast1-a","instance":"test","label":"startup=daily"}
を base64 でエンコードした文字列です。
Googleの公式サイト上では記載がありませんが、最新ソースではGCEのラベル「”label”:”startup=daily”」も指定してあげないとエラーで実行できません。

テストを実行し「Successfully stopped instance test」とレスポンスが帰ってくれば成功です。
必要に応じて起動側の動作確認も行ってください。
Cloud Scheduler の設定
起動ジョブを設定
Cloud Scheduler ページに移動して、「ジョブを作成」をクリックします。
※ペイロードはjson形式のままで大丈夫です。
名前 | startup-workday-instance |
頻度 | cron形式で入力 |
タイムゾーン | 日本標準時(JST) |
ターゲット | Pub/Sub |
トピック | start-instance-event |
ペイロード | {“zone”:”asia-northeast1-a”,”instance”:”test”,”label”:”startup=daily”} |
停止ジョブを設定
起動ジョブの設定と同様に Cloud Scheduler ページに移動して、「ジョブを作成」をクリックします。
※こちらもペイロードはjson形式のままで大丈夫です。
名前 | shutdown-workday-instance |
頻度 | cron形式で入力 |
タイムゾーン | 日本標準時(JST) |
ターゲット | Pub/Sub |
トピック | stop-instance-event |
ペイロード | {“zone”:”asia-northeast1-a”,”instance”:”test”,”label”:”startup=daily”} |
動作確認
「Cloud Scheduler」 ページに移動し「今すぐ実行」をクリックします。
クリック後にGCEのVMページに移動して起動しているか確認してください。
起動と停止を行い、どちらも正しく動作しているようであれば設定完了です。
お疲れさまでした。
