私はKaggleをする際にGoogleCloudのVMインスタンスを利用しています。
ある日、いつも通り朝にKaggleをして、その後にずっと前から計画していた旅行に行ってきました。いいホテルでリフレッシュできました。
帰ってきた翌日、新たな気分でKaggleをするためにGoogleCloudのコンソールを見た時緑色のチェックボックスを見て絶望しました。
インスタンスの切り忘れ。旅行期間中お金を垂れ流していました。
妻にも優しく怒られ、対策をしなければと思い調査しました。
結論: インスタンススケジュールを設定する
停止だけの自動化はすることができなかったため(PubSubとか組んだらやれるかもしれないが)起動とセットにはなりますがこれが一番簡単でした。
作業
インスタンススケジュールから起動、停止はGoogle Cloudのサービスエージェントから実行されるため、サービスエージェントに必要な権限設定を行います。
Cloud Console
> IAM と管理
> IAM
をクリックし、Google提供のロール付与を含める
にチェック
service-(PROJECT_NUMBER)@compute-system.iam.gserviceaccount.com
の編集をクリックし、Compute インスタンス管理者(v1)(roles/compute.instanceAdmin.v1)
の事前定義ロールを追加し 保存
をクリック
これで権限付与が完了。次にインスタンススケジュールを設定します。
Compute Engine
> VMインスタンス
をクリック
インスタンススケジュール
> インスタンススケジュールの作成
をクリック
フォームに入力していきます。私の場合、平日朝の時間利用をしているので以下のように設定しました。
リージョンはスケジュールを設定したいインスタンスと同じリージョンを設定してください。この後インスタンスを紐づけるのですが同リージョンでないと選択肢に現れません。
作成したスケジュールは変更ができないため、変更ある場合は削除して新規で作成することになります。(変更させてほしい…)
最後に 送信
をクリック
まとめ
インスタンス切り忘れ防止を目的にしたインスタンススケジュール設定を紹介しました。本来の使い方と少し異なりますが、やりたいことはできました。
GoogleCloudのドキュメントを読んでいるとインスタンススケジュールは最大15分遅れることがあるとのことでした。ただ今回のケースでは遅れたとしても停止できればOKなので問題ないと考えてます。
参考文献
VMインスタンスの自動起動・終了をスケジューリングする設定方法 - G-gen Tech Blog
VM インスタンスの起動と停止をスケジュールする | Compute Engine ドキュメント | Google Cloud