Masayan tech blog.

  1. ブログ記事一覧>
  2. 古いGoogle App Engineのバージョンを定期的に削除する仕組み

古いGoogle App Engineのバージョンを定期的に削除する仕組み

公開日

前提

Google App Engineのバージョン

GAEはデプロイするたびにバージョンを保持しており、特定のバージョンでインスタンスを起動し、トラフィックを分散したりできるようになっている。GAEに関しては以下の記事を参照されたし

Google App Engineのフレキシブル環境にpythonアプリケーションをデプロイする方法

定期削除が必要な理由

厄介な点として、GAEは最大210個までしかデプロイのバージョンを保持できず、それ以上はエラーとなってデプロイできない。バージョンはデプロイの度に増えるので、定期的に削除する必要があるので、今回はその仕組みを構築する手順を紹介

全体像

対象のプロジェクトのバージョン一覧を取得

n行目移行のみのversion.idのデータ群(古いバージョン)を生成

version.idのデータ群を引数として受け取り、そのバージョンをCLIで削除

手順

対象のプロジェクトのバージョン一覧を取得

この際、バージョンIDのみ出力しバージョンIDで降順に並び替えする

gcloud app versions list --project <PROJECT_ID> --format 'value(version.id)' --sort-by '~version'

versions listを実行すると、不要なカラムもついてくるので、これを--formatでversion.idのみにできる

SERVICE  VERSION.ID       TRAFFIC_SPLIT  LAST_DEPLOYED              SERVING_STATUS

default  20230822t150847  0.00           2023-08-22T15:09:01+09:00  STOPPED
default  20230905t174001  0.00           2023-09-05T17:40:26+09:00  STOPPED
default  20230905t174807  0.00           2023-09-05T17:48:18+09:00  STOPPED
default  20230905t175504  1.00           2023-09-05T17:55:16+09:00  STOPPED

↓

20230822t150847
20230905t174807
20230905t174001
20230905t175504

n行目移行のみのversion.idのデータ群を生成

tail -n +n。たとえば100件あり、バージョンが50番目に古いもの以降を取得したければ、+50

gcloud app versions list --project <PROJECT_ID> --format 'value(version.id)' --sort-by '~version' | tail -n +n

バージョン削除

上記手順で生成したversion.idのデータ群を引数として受け取り、そのバージョンを削除

gcloud app versions list --project <PROJECT_ID> --format 'value(version.id)' --sort-by '~version' | tail -n +n | xargs --no-run-if-empty gcloud app versions delete --project <PROJECT_ID> --quiet

現在4つのバージョンが存在するので、最新と次に新しいバージョンのみ残して残りを全て削除する(tail -n +3)

gcloud app versions list --project <PROJECT_ID> --format 'value(version.id)' --sort-by '~version.id' | tail -n +3 | xargs --no-run-if-empty gcloud app versions delete --project <PROJECT_ID> --quiet

無事削除完了。あとはこの処理をcloud buildでビルドする際等に実行するようにすればOK。cloud buildについては以下の記事を参照されたし

Google Cloud Buildを使用してCI/CDパイプラインをサクッと構築する

まとめ

いかがでしたでしょうか。本記事では、古いGoogle App Engine のバージョンを定期的に削除する仕組みを紹介しました。ぜひ参考にしてみて下さい。