Назад | Перейти на главную страницу

Сбой развертывания приложения GAE Flex с кодом ошибки 400

Последние месяцы я успешно развертывал гибкое приложение GAE. Сейчас я пытаюсь развернуть то же приложение в другом проекте, который я создал в качестве промежуточной среды.

Код точно такой же, app.yaml только изменился, чтобы отразить новую базу данных и соединения redis, которые я передаю как переменные среды.

Сборка идет хорошо, но в итоге получаю следующее:

"metadata": {
    "target": "apps/freesat-stage-project/services/default/versions/athiqtest4",
    "method": "google.appengine.v1.Versions.CreateVersion",
    "user": "sys@example.co.uk",
    "insertTime": "2017-11-08T11:11:59.089Z",
    "ephemeralMessage": "Deployment failed. Attempting to cleanup deployment artifacts.",
    "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1"
},
"done": true,
"name": "apps/freesat-stage-project/operations/2e41e4e5-b9bd-42fb-9fd3-319ec322458b",
"error": {
    "message": "Deployment Manager operation failed, name: operation-1510139527034-55d76c211f490-1fcc927b-d3b3b590, error: [{\"code\":\"RESOURCE_ERROR\",\"location\":\"/deployments/aef-default-athiqtest4/resources/aef-default-athiqtest4-00ahs\",\"message\":\"{\\\"ResourceType\\\":\\\"compute.v1.httpsHealthCheck\\\",\\\"ResourceErrorCode\\\":\\\"400\\\",\\\"ResourceErrorMessage\\\":{\\\"code\\\":400,\\\"errors\\\":[{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.checkIntervalSec': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.timeoutSec': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.unhealthyThreshold': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.healthyThreshold': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"}],\\\"message\\\":\\\"Invalid value for field 'resource.checkIntervalSec': '0'. Must be greater than or equal to 1\\\",\\\"statusMessage\\\":\\\"Bad Request\\\",\\\"requestPath\\\":\\\"https://www.googleapis.com/compute/v1/projects/freesat-stage-project/global/httpsHealthChecks\\\",\\\"httpMethod\\\":\\\"POST\\\"}}\"}, {\"code\":\"RESOURCE_ERROR\",\"location\":\"/deployments/aef-default-athiqtest4/resources/aef-default-athiqtest4-hcs\",\"message\":\"{\\\"ResourceType\\\":\\\"compute.v1.httpsHealthCheck\\\",\\\"ResourceErrorCode\\\":\\\"400\\\",\\\"ResourceErrorMessage\\\":{\\\"code\\\":400,\\\"errors\\\":[{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.checkIntervalSec': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.timeoutSec': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.unhealthyThreshold': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"},{\\\"domain\\\":\\\"global\\\",\\\"message\\\":\\\"Invalid value for field 'resource.healthyThreshold': '0'. Must be greater than or equal to 1\\\",\\\"reason\\\":\\\"invalid\\\"}],\\\"message\\\":\\\"Invalid value for field 'resource.checkIntervalSec': '0'. Must be greater than or equal to 1\\\",\\\"statusMessage\\\":\\\"Bad Request\\\",\\\"requestPath\\\":\\\"https://www.googleapis.com/compute/v1/projects/freesat-stage-project/global/httpsHealthChecks\\\",\\\"httpMethod\\\":\\\"POST\\\"}}\"}]",
    "code": 13
}

Мой app.yaml выглядит следующим образом:

runtime: custom
env: flex

env_variables:
 REDIS_HOST: 10.154.0.3
 REDIS_PORT: 6379
 DB_NAME: freesat
 DB_USER: freesat-stage
 DB_PASS: password
 DB_HOST: /cloudsql/freesat-stage-project:europe-west2:freesat-stage
 GS_BUCKET_NAME: freesat-content
 DJANGO_CONF: conf.production
 JANRAIN_CLIENT_ID: clientid
 JANRAIN_SECRET: secret
 DOTMAILER_API_USER: api@apiconnector.com
 DOTMAILER_API_PASS: pass

health_check:
  enable_health_check: False

automatic_scaling:
  min_num_instances: 4
  max_num_instances: 15
  cpu_utilization:
    target_utilization: 0.4

beta_settings:
  cloud_sql_instances: 'freesat-stage-project:europe-west2:freesat-stage'

resources:
  cpu: 2
  memory_gb: 2

Я не могу понять сообщение об ошибке. Любая помощь будет приветствоваться.

В недавно созданных проектах App Engine теперь используются обновленные Разделенные проверки работоспособности.

Это означает, что ваша попытка отключить устаревшие проверки работоспособности с помощью enable_health_check в вашем app.yaml является причиной проблемы.

Поэтому вы можете удалить устаревшее health_check настройки из вашего yaml-файла или отключите новые проверки работоспособности разделения для вашего проекта (и продолжайте использовать устаревшие проверки работоспособности), запустив команду gcloud gcloud beta app update --no-split-health-checks --project [YOUR_PROJECT_ID] чтобы решить проблему.