Terraform - 加密数据库实例强制替换
Terraform - Encrypting a db instance forces replacement
我在 AWS 中有一个使用 terraform 创建的 postgres RDS 实例。
resource "aws_db_instance" "..." {
...
}
现在我正在尝试通过添加
来加密该实例
resource "aws_db_instance" "..." {
...
storage_encrypted = true
}
但是我运行terraform plan
的时候说要强制更换
# aws_db_instance.... must be replaced
...
~ storage_encrypted = false -> true # forces replacement
如何防止 terraform 替换我的数据库实例?
这里没有 Terraform 的错。 RDS 实例最初创建后,您根本无法更改其加密设置。您可以/需要创建当前数据库的快照,复制并加密快照,然后从该快照恢复:https://aws.amazon.com/premiumsupport/knowledge-center/update-encryption-key-rds/
这将导致数据库停机。并且 terraform 不会自动为您执行此操作,您需要手动执行此操作。数据库恢复后,terraform 不应再尝试替换数据库,因为预期配置现在与实际配置匹配。
从技术上讲,您可以 ignore_changes
storage_encrypted
属性 但当然这会导致 terraform 简单地忽略任何存储加密更改。
我在 AWS 中有一个使用 terraform 创建的 postgres RDS 实例。
resource "aws_db_instance" "..." {
...
}
现在我正在尝试通过添加
来加密该实例resource "aws_db_instance" "..." {
...
storage_encrypted = true
}
但是我运行terraform plan
的时候说要强制更换
# aws_db_instance.... must be replaced
...
~ storage_encrypted = false -> true # forces replacement
如何防止 terraform 替换我的数据库实例?
这里没有 Terraform 的错。 RDS 实例最初创建后,您根本无法更改其加密设置。您可以/需要创建当前数据库的快照,复制并加密快照,然后从该快照恢复:https://aws.amazon.com/premiumsupport/knowledge-center/update-encryption-key-rds/
这将导致数据库停机。并且 terraform 不会自动为您执行此操作,您需要手动执行此操作。数据库恢复后,terraform 不应再尝试替换数据库,因为预期配置现在与实际配置匹配。
从技术上讲,您可以 ignore_changes
storage_encrypted
属性 但当然这会导致 terraform 简单地忽略任何存储加密更改。