У меня есть файл dispatch.yaml следующим образом:
dispatch:
- url: "website.com/*"
module: service1
- url: "subdomain1.website.com/*"
module: service2
- url: "subdomain2.website.com/*"
module: service3
Я должен обновить service3 с другим поддоменом, изменив его с помощью dispatch.yaml и используя команду gcloud app deploy dispatch.yaml
Я получил код ошибки 500 с сервера
ERROR: (gcloud.app.deploy) Server responded with code [500]:
Internal Server Error.
b'<h3>Server Error</h3><p>A server error has occurred.</p>'
В настоящее время я использую Google Cloud SDK 319.0.0 (у меня есть стандартная среда PHP5 в движке приложения), подробность возвращает это
gcloud app deploy dispatch.yaml --verbosity=debug
DEBUG: Running [gcloud.app.deploy] with arguments: [--verbosity: "debug", DEPLOYABLES:1: "['dispatch.yaml']"]
DEBUG: Making request: POST https://oauth2.googleapis.com/token
DEBUG: Loading runtimes experiment config from [gs://runtime-builders/experiments.yaml]
INFO: Reading [<googlecloudsdk.api_lib.storage.storage_util.ObjectReference object at 0x7f571e15ffa0>]
DEBUG: API endpoint: [https://appengine.googleapis.com/], API version: [v1]
DEBUG: Making request: POST https://oauth2.googleapis.com/token
Configurations to update:
descriptor: [/mnt/c/Users/user/project/dispatch.yaml]
type: [routing rules]
target project: [project]
Updating config [dispatch]...DEBUG: Host: appengine.google.com
DEBUG: _Authenticate configuring auth; needs_auth=False
DEBUG: Sending request to https://appengine.google.com/api/dispatch/update?app_id=website-live headers = {'X-appcfg-api-version': '1', 'content-length': '227', 'Content-Type': 'application/octet-stream'} body=dispatch:
Updating config [dispatch]...⠛DEBUG: Got http error 500.
DEBUG: Retrying. This is attempt 1 of 3.
DEBUG: _Authenticate configuring auth; needs_auth=False
DEBUG: Sending request to https://appengine.google.com/api/dispatch/update?app_id=website-live headers = {'X-appcfg-api-version': '1', 'content-length': '227', 'Content-Type': 'application/octet-stream'} body=dispatch:
Вывод один и тот же при каждой повторной попытке (всего 3 раза)
Я что-то пропустил?
Обновлено: Даже замена «модуля» на «сервис» всегда получала 500
dispatch:
- url: "website.com/*"
service: service1
- url: "*.website.com/*"
service: service1
Я тоже пытался обновить SDK, получил это
ERROR: (gcloud.app.deploy) Apps instance [project] is the subject of a conflict: Cannot operate on apps/project because an operation is already in progress for apps/project by a01scd73-7h7ef-411-adac-289bfle0f5.
добавлена информация в основной пост
module
устарела. Теперь это называется «сервис». Итак, замените каждый экземпляр «модуля» на «сервис» в вашем файле dispatch.yaml
. Вам также придется внести те же изменения в файл app.yaml
.
См. документацию, в которой говорится
service: указывает имя службы, которая будет обрабатывать запросы, соответствующие шаблону URL. Обратите внимание, что службы ранее назывались модулями.
Даже после того, как ваш файл dispatch.yaml
будет успешно развернут, он не будет работать так, как вы ожидаете. Ваше первое правило гласит, что любой URL-адрес, оканчивающийся на website.com/*
, должен перенаправляться на service1
.
И subdomain1.website.com/*
, и subdomain2.website.com/*
соответствуют вышеуказанным критериям. Это означает, что трафик с двух вышеперечисленных также будет направляться на service1
. Чтобы удовлетворить ваши требования, запись для website.com/*
должна быть последней записью (а не первой).
Тогда логика такова: сначала проверьте, заканчивается ли поддомен в поддомене1 и маршрутизируйте к сервису2, иначе проверьте, заканчивается ли он в поддомене2 и маршрутизируйте к сервису3, иначе маршрутизируйте к сервису1
Вы также должны отметить, что PHP 5 устарел, и GAE больше активно не поддерживает его.
Вопрос отредактировал, поменял модуль на сервис, все равно 500
Решено путем изменения маршрута всех других служб на service1, таким образом, я смог удалить службы, которые мне больше не нужны.
Можете ли вы проверить версию gcloud. Если вы не используете последнюю версию, попробуйте обновить ее до последней версии, а текущая версия gcloud — 425.0.0 (2023-04-04) . Также не могли бы вы попробовать развернуть свой файл еще раз, но с установленным флагом --verbosity для отладки и проверить вывод. Может быть полезно найти причину ошибки.