Closed8

Google App Engineのデプロイエラーとその対処法

catnosecatnose

Google App Engineへのデプロイでけっこう頻繁にエラーが出る。ググってもあまり見つからないことが多いので、その都度ここにメモしていくことにする。

catnosecatnose

UNKNOWN: Error Response: [4] DEADLINE_EXCEEDED

→ タイムアウトしている模様。確証はないのだが、フレキシブル環境のデプロイではその都度コンテナイメージをGoogle Cloud BuildによりビルドしてGCEにデプロイしている。Cloud Build上のひとつのタスクのタイムアウトはデフォルトで10分となっているようで、10分以上かかるとこのエラーが発生する。

対処法は以下のコマンドを実行してタイムアウトの時間を伸ばすこと

$ gcloud config set app/cloud_build_timeout 1200

公式ドキュメントにも書かれている。

https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-appengine?hl=ja

catnosecatnose

ERROR: (gcloud.app.deploy) Error Response: [8] The region asia-northeast1 does not have enough resources available to fulfill the request. Please try again later.

GCE(Google Compute Engine)で発生するエラー。AppEngineのフレキシブル環境は実際のGCE上の仮想マシンにコンテナをデプロイしているようなのでこのエラーが発生する。エラーの原因は読んだ通りで、GCE側のリソース不足に起因する。

ググると情報は大量にヒットするが、だいたい紹介されている内容は以下。

  • 待つ
  • 他のリージョンやゾーン(abc…)にデプロイする
  • インスタンス設定を変える

↓ StackOverflowのこのページだとGoogleの中の人が回答いるようだが、根本的な解決策は提示されていない。

https://stackoverflow.com/questions/52684656/the-zone-does-not-have-enough-resources-available-to-fulfill-the-request-the-re

catnosecatnose

ERROR: context deadline exceeded TIMEOUT

メッセージ通りタイムアウトしている。CloudBuildのyamlファイルのタイムアウトの設定を伸ばせばOK。

cloudbuild.yaml
steps:
- name: 'ubuntu'
  args: ['sleep', '600']
  timeout: 500s
- name: 'ubuntu'
  args: ['echo', 'hello world, after 600s']
timeout: 600s

↑ タイムアウトを10分にする例

catnosecatnose

ERROR: (gcloud.app.deploy) Error Response: [13] Flex operation projects/foo/regions/asia-northeast1/operations/... error [INTERNAL]: An internal error occurred while processing task /app-engine-flex/insert_flex_deployment/flex_create_resources>...: 403 Forbidden......failed.

app.ymlのスケーリング設定で

manual_scaling:
  instances: 1

としたときに発生したエラー。開発環境だったのでインスタンス数は1にしていた。

https://stackoverflow.com/questions/63003215/error-gcloud-app-deploy-error-response-13-in-deploying-flex-environment-in

この回答に解決策が書かれていた。以下のように最大インスタンス数(max_num_instances)を2にしたら解決

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 2
catnosecatnose

ERROR: (gcloud.app.deploy) PERMISSION_DENIED: You do not have permission to act as 'foo-bar@appspot.gserviceaccount.com'

CloudBuildからApp Engineにデプロイしようとしたときに発生。IAM設定でCloudBuildのサービスアカウント(○○@cloudbuild.gserviceaccount.com)に対して[サービス アカウント ユーザー]というロールを付与することで解決。

catnosecatnose

ERROR: (gcloud.app.deploy) ABORTED: Cannot operate on apps/foo-bar/services/default/versions/barbecause an operation is already in progress for apps/foo-bar/services/default/versions/bar by baz

リポジトリの特定のブランチにマージされると自動デプロイする設定になっており、短期間にブランチに2回マージされたため発生。デプロイのタイミングが重なるとエラーになる模様。

時間を置いて再デプロイを行えばOK。

このスクラップは2022/09/14にクローズされました