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