GCPインスタンスのスナップショットを定期的に取得する

GCPインスタンスのスナップショットを定期取得・削除してみる

GCPで動作するインスタンスのスナップショットはGCPのコンソールからポチポチやると 簡単に取れたり不要なものを削除したりできるのだけれど、毎日コンソールを開けて手でポチポチやるのは大変なので自動化する。 その時のメモ。

ServerlessFrameworkでは、GoogleCloudFunctionも対応してるのでこれでいけるんじゃないかと思ったのだがeventがhttpしか選択できず cron的な使い方ができないので断念。。。

楽に実装できそうなLambdaに逃げることに。

GCPを操作するライブラリはNodeJSで書かれたgoogle-cloud-nodeを使用しました。

下記のドキュメントにサンプルコードがあるのでそれを利用してます。

スナップショットの作成

スナップショットの削除

実際に書いたコード

1つのプロジェクトだけで利用するのではなく、複数のプロジェクトにも使い回しができるよう プロジェクト情報やインスタンス名は全て環境変数(serverless.yml)に記載するように気を使ってます。

インスタンスのスナップショットはポンポン消しちゃって大丈夫なのかなって疑問に思ってたんですが、 削除時に依存関係のあるデータは全て次のスナップショットに移動されるそうです。