GCPのバックエンド一覧取得方法

こんにちは。
GMOアドマーケティングの@zakisanbaimanです。
GCP上のバックエンド一覧を取得するのに少し苦労したため、一度まとめておきます。

やりたかったこと

バックエンドサービス一覧からcapacityScalerが1.0(100%)のバックエンドのみを抽出したい。

▼バックエンド一覧(画面)

どのコマンドを使うべきか?

バックエンド一覧を直接リストで取得できるコマンドはなさそうなので、gcloud compute backend-services listを使います。

まずは何もオプションを付けず実行してみる。

実行はできましたが、解決すべき問題点が3点あります。

ここでの問題点

  1. capacityScalerがない
  2. バックエンドサービス単位でリスト化されている
  3. バックエンド名がURL形式になっている

問題点1: capacityScalerがない

--format=jsonを付けてあげると裏にどんな項目を持っているか確認できます。

capacityScalerの項目はありました。
これでフィルターはできそうです。

問題点2: バックエンドサービス単位でリスト化されている

このままではバックエンドサービス単位で表示されているため、バックエンド単位でflattenをかけます。

flattenはできましたが肝心のBACKENDSが消えてしまったため、formatオプションを使って明示的に表示させましょう。

ちょっとごちゃっとしてますが、バックエンド単位でリスト化できたので、一旦問題点2は解決です。

問題点3: バックエンド名がURL形式になっている

URLの最後の文字列を取得したい場合はbasename関数を使いましょう。

これでバックエンド一覧を取得できました!

おまけ(capacityScalerでフィルターを掛ける)

capacityScalerが1.0のものだけ取得したいので、filter式を使います。

まとめ

何度も諦めかけましたが、なんとかgcloudコマンドだけで完結させることができました。
こんなことせずとも早くバックエンド一覧だけのコマンドができると嬉しいです。

参考

gcloud による出力情報のフィルタと整形
gcloud topic filters