GAEのデプロイでquotas were exceededエラーが発生したときの対処法
Google App Engine(GAE)のフレキシブル環境へデプロイを行っていたところ、以下のようなエラーが発生しました。
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: The following quotas were exceeded: BACKEND_SERVICES (quota: 9, used: 9 + needed: 1).
GAEフレキシブル環境では同時に起動できるバージョン数に厳しめの上限が設定されており、その制限を超えてしまったことが原因です。
定期的にトラフィックが流れていない古いインスタンスが自動停止されるようにしていたのですが、短時間に連続してデプロイしたことにより制限に引っかかってしまったようです。
提供中
のバージョンを停止する
対処法: トラフィックが流れていない暫定対応としては、トラフィックが流れていない提供中
のバージョンを停止します。
チェックを入れて[停止]をクリック
これにより、上限(quota
)に占めるused
の数が一つ少なくなり、デプロイができるようになります。
根本的な対処法: quotaの変更を申請する
この上限の値はGCPコンソールから変更を申請することができます。
まず IAMの[割り当て]にアクセスします。
↑ 表示される割り当ての一覧の中からCompute Engine APIの[すべての割り当て量]をクリックします。
↑ グローバル
の行にチェックを入れて[割り当てを編集]をクリックします。
↑ フォームが表示されるので、新しい上限値と、変更が必要な理由を入力します。理由の方は「複数のバージョンをデプロイしたうえで安全に本番環境への移行を行いたいから」や「複数バージョンを起動してA/Bテストをしたいから」といった内容を書けば良いと思います。
入力を[完了]した後、[次へ]と進み、電話番号を入力すれば申請は完了です。
※ 実際には電話はかかってくることはないと思います。
メールが届くのでURLをクリックして認証が行う
申請が承認されると確認のメールが届きます(今回のケースでは1分後くらいにメールが届きました)。メール本文内に含まれる認証URLをクリックすると上限の引き上げが完了します。
上限が上がった
これで連続してデプロイを行っても失敗することはなくなりそうです。
複数バージョンの提供による課金に注意
GAEフレキシブル環境で最小インスタンスが1です。トラフィックが流れていなくても提供中のインスタンスがあれば料金は発生してしまいます。古いインスタンスは定期的に停止するようにしましょう。
Discussion