Open sinmetal opened 5 years ago
これから困る人が増えてきそうだから本家の issue の方にも workaround として書いておきました。 また、あとから見ると参考リンクは HTTP Guidelines よりも System Parameters の方が良さそうだった。 https://cloud.google.com/apis/docs/system-parameters?hl=en#definitions
上の issue の続きで API は何も禁止なんかしていないことが判明。弾かれるのは gcloud 特有らしい。 https://cloud.google.com/scheduler/docs/reference/rest/v1/projects.locations.jobs?hl=en#httpmethod
社内の人が、Deployした後、Cloud SchedulerのGUIのEDITでPATCHに変えるってのをやってて、な・・・なるほど!!!みたいな気持ちになった
以下の記事でCloud SchedulerからGCPのAPIを直接操作するというのが出ている。 サンプルとしてはCompute EngineのManaged Instance GroupのSizeを変えている。
https://medium.com/google-cloud/automatic-oauth2-using-cloud-scheduler-and-tasks-to-call-google-apis-55f0a8905baf
Cloud Spannerでもなんとなくやってみようかなという気持ちになったので、やってみた。
NodeCountの変更は https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances/patch を利用して行うので、 https://developers.google.com/apis-explorer/#search/spanner.instances.update/m/spanner/v1/spanner.projects.instances.patch?name=projects%252Fhoge%252Finstances%252Ffuga&_h=3&resource=%257B%250A++%2522instance%2522%253A+%250A++%257B%250A++++%2522nodeCount%2522%253A+3%250A++%257D%252C%250A++%2522fieldMask%2522%253A+%2522nodeCount%2522%250A%257D& みたいなリクエストを送ることになる。
Cloud Scheduler用のService Accountを作成し、以下のようなコマンドを実行すればいいはず。
しかし、このコマンドはエラーになる。 エラーは
Valid choices are [delete, get, head, post, put].
で、Cloud Scheduler HTTPがPATCHに対応してないので、発生するエラー。 PATCH対応については https://issuetracker.google.com/issues/118662028 でリクエストされている。なので、とりあえず
X-HTTP-Method-Override
https://cloud.google.com/apis/docs/http?hl=en#long_request_urls でPATCHに上書きする!これでCloud SchedulerだけでNodeCountを変更できる。 エラーとかのハンドリングが何もできないので、実用的かどうかは何とも言い難い。
以下の内容は @apstndb さんに教えてもらいました!