GCPの割り当て(クオータ・Quotas)をAPIから変更する情報見つけたのでやってみる

BigQueryの割り当て(クオータ・Quotas)をAPIから変更する方法を探していましたが、GCP公式ドキュメント見てもコンソールでの作業ばかりしか記載が見つかりません。

cloud.google.com

GCPの公式ドキュメントはほとんどの項目でgcloud等で設定するパターンが書かれているので、これは無いのではと思い情報を探していました。

情報を見つけた

そこで以下のブログに出会いました。

medium.com

I tried to understand how the API worked in the console thanks to the developer mode of Chrome and I found a workaround.

Chromeの開発者モードで見ればやり方わかるよ! なるほど!と思い、やってみたら見つけました。ブログに記載されているAPIが確かに実行されているのが確認できます。

f:id:yomon8:20200129173304p:plain

実際にやってみる

ご紹介した記事と、Developer Toolを使って実施してみました。

まずプロジェクトIDを設定しておきます。

PROJECT_ID="your_project_id"

QueryUsagePerDay(Query usage /日)を50TB、 QueryUsagePerUserPerDay(Query usage /日 /ユーザー)を4TB に設定してみます。

まずpayloadに含めるJSONを作ります。

cat <<EOF > input.json
{
  "quotaSettings": 
  {
    "adminOverrides":{},
    "consumerOverrides":
    {
      "QueryUsagePerUserPerDay":
      {
        "limit":"4194304"
      },
      "QueryUsagePerDay":   
      {
        "limit":"52428800"
      }
    },
    "force":true
  },
  "consumerProjectId": "${PROJECT_ID}",
  "serviceName":"bigquery-json.googleapis.com"
}
EOF

そのJSONを指定してPATCHリクエストを送信します。複数項目設定したい場合は updateMask をパラメータに複数並べます。

認証用のTokenどこかから取ってこないとなと思っていたら、参照先のブログで gcloud auth で取得していたので勉強になりました。

curl -d @input.json \
  -H "content-type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X PATCH \
  "https://servicemanagement.googleapis.com/v1/services/bigquery-json.googleapis.com/projectSettings/${PROJECT_ID}?updateMask=quotaSettings.consumerOverrides%5B%22QueryUsagePerUserPerDay%22%5D&updateMask=quotaSettings.consumerOverrides%5B%22QueryUsagePerDay%22%5D"

無事変更されました。

f:id:yomon8:20200129180719p:plain f:id:yomon8:20200129180737p:plain

一応、ドキュメントには書いてない内容なので、自己責任で。