sucher

sucher(ズーハー)はエンジニアを応援します。

「Cloud Functions」を使って「GCE」を自動起動・停止する

94 views
約 5 分

「夜間に結構な量のバッチ処理が動くが、それ以外の時はほぼ使用していない」
そんなインスタンスがあって無駄なので深夜に起動して早朝に停止するようにしました。
(一日約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ページに移動して起動しているか確認してください。

起動と停止を行い、どちらも正しく動作しているようであれば設定完了です。
お疲れさまでした。

参考URL

スポンサーリンク





コメント

*
*
* (公開されません)

Share / Subscribe
Facebook Likes
Tweets
Hatena Bookmarks
Pinterest
Pocket
Evernote
Feedly
Send to LINE