AWS RDS 数据库版本与 Terraform 版本不同

A C*_*pos 4 version amazon-web-services amazon-rds terraform

我正在学习如何使用 Terraform 来管理我的 AWS 基础设施。

周一,我根据我的 Terraform Apply 从头开始​​创建了这一切。

星期二(第二天),我想通过一些代码更改来更新我的应用程序(不会影响基础设施的其余部分,只会影响 ECS 中的图像),并在我的 terraform apply 输出中收到此错误消息:

Error: Error modifying DB Instance foo-staging-db: InvalidParameterCombination: Cannot upgrade postgres from 11.8 to 11.4
Run Code Online (Sandbox Code Playgroud)

当我仔细检查我的地形时,database.tf我看到了这个:

resource "aws_db_instance" "main" {
  ...
  engine                  = "postgres"
  engine_version          = "11.4"
  ...
}
Run Code Online (Sandbox Code Playgroud)

有人知道这里会发生什么吗?

  1. 这不是我第一次像这样更新数据库,因为我每个周末都会破坏我的基础设施以限制我的 AWS 成本。
  2. 我通过将 terraform Postgres 版本更改为 11.8 解决了这个问题,但仍然想了解为什么会首先发生错误。

小智 6

AWS 使用默认设置 auto_minor_version_upgrade=true并尝试更新您的数据库。您可以执行以下操作来解决它

方法一

使用显式设置标志为 falseauto_minor_version_upgrade = false

方法二

使用版本号中的第一个八位字节engine_version = "11"

有关更多信息https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance#engine_version