本日も乙

ただの自己満足な備忘録。

GCPリソースに関するプログラムを書くときはリージョンかゾーンかを意識しよう

GCPリソースを操作するツールを書いているときにハマったので共有します。

Auto Scalerメソッドがふたつある!

やりたかったことは AutoScalerに関する情報の取得でした。

ドキュメントには必要パラメータや返却値、サンプルコードがあるのでよく見ています。
APIs and Reference  |  Compute Engine  |  Google Cloud

今回もドキュメントを見ながら実装していたのですが、 autoscaler.get を見るとゾーンの指定のみでリージョン指定がないではありませんか!
Method: autoscalers.get  |  Compute Engine  |  Google Cloud

私が使っていたAuto Scalerはリージョナル(ゾーン指定なし)のものなので、このメソッドではつかえません。試しにゾーンをすべて入れたのですが正常に動きませんでした。

ドキュメント一覧をよく見ていくと、 regionAutoscalers.get というメソッドがありました。
Method: regionAutoscalers.get  |  Compute Engine  |  Google Cloud

こちらのメソッドではリージョン指定ができたので今回はこちらを使いました。

リージョンかゾーンかによってメソッドが別れている!

autoscaler.get メソッドはゾーン指定、regionAutoscalers.get メソッドはリージョン指定となっていました。このことから regionXxxxxx というメソッド郡はリージョナルで使うものということがわかりました。
他に調べてみたところ、以下のメソッド郡も同様でした。

  • regionAutoScalers
  • regionBackendServices
  • regionCommitments
  • regionDiskTypes
  • regionDisks
  • regionInstanceGroupManagers
  • regionInstanceGroups
  • regionOperations

これらを使うときには注意が必要です。

最後に

GCPリソースに関する情報が少ないのでこれに行き着くまでに少々時間がかかりました。。。
GCPのドキュメントはGCSやBigQueryに関するサンプルコードがメインで、GCEやAutoScalerに関してはドキュメント内では皆無でした。

ちなみに今回で得た知見はこちらのコードに反映させています。
https://github.com/ohsawa0515/manual_gcp_autoscaler/blob/master/main.go#L43-L68