使用部署管理器创建云 SQL - "Precondition check failed." 错误

Cloud SQL creation with Deployment Manager - "Precondition check failed." error

我正在使用 gcp-types/sqladmin-v1beta4:instances 资源类型使用 Deployment Manager 创建云 SQL 实例,我收到以下错误:

{
  "ResourceType":"gcp-types/sqladmin-v1beta4:instances",
  "ResourceErrorCode":"400",
  "ResourceErrorMessage":{
    "code":400,
    "message":"Precondition check failed.",
    "status":"FAILED_PRECONDITION",
    "statusMessage":"Bad Request",
    "requestPath":"https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_NAME]/instances",
    "httpMethod":"POST"
  }
}

这是 JINJA 文件中的配置:

{% set deployment_name = env['deployment']  %}
{% set INSTANCE_NAME = deployment_name + '-instance'  %}

resources:
- name: {{ INSTANCE_NAME }}
  type: gcp-types/sqladmin-v1beta4:instances
  properties:
    region: us-central1
    rootPassword: root
    settings:
      tier: db-n1-standard-1
      backupConfiguration:
        binaryLogEnabled: true
        enabled: true

- name: demand_ml_db
  type: gcp-types/sqladmin-v1beta4:databases
  properties:
    name: demand_ml_db
    instance: $(ref.{{ INSTANCE_NAME }}.name)
    charset: utf8

FAILED_PRECONDITION 错误 - 虽然描述性不强,但当您尝试在最近删除的先前 Cloud SQL 实例上进行部署时,往往会抛出该错误;事实上,您选择删除的实例不会立即清除。有一个关于此 here 的 Issue Tracker 线程。

我也能够在我这边验证这一点。使用您指定的 JINJA 文件的部署起初工作正常,但是当我删除它并重新部署时 - 我收到了同样的错误。

最简单的方法是尝试使用不同的部署(或实例)名称。