Terraform - 加密数据库实例强制替换
Posted
技术标签:
【中文标题】Terraform - 加密数据库实例强制替换【英文标题】:Terraform - Encrypting a db instance forces replacement 【发布时间】:2021-12-17 01:36:10 【问题描述】:我在 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 替换我的数据库实例?
【问题讨论】:
【参考方案1】:Terraform 在这里没有错。您根本无法在最初创建 RDS 实例后更改其加密设置。您可以/需要创建当前数据库的快照,复制 + 加密快照,然后从该快照恢复:https://aws.amazon.com/premiumsupport/knowledge-center/update-encryption-key-rds/
这将导致数据库停机。 terraform 不会自动为您执行此操作,您需要手动执行此操作。数据库恢复后,terraform 不应再尝试替换数据库,因为预期配置现在与实际配置匹配。
从技术上讲,您可以 ignore_changes
storage_encrypted
属性,但这当然会导致 terraform 简单地忽略任何存储加密更改。
【讨论】:
以上是关于Terraform - 加密数据库实例强制替换的主要内容,如果未能解决你的问题,请参考以下文章
Terraform EC2(根块设备加密错误未能达到目标状态)
text 加密的env var到Terraform aws_secretsmanager_secret文件(带本地的数据对象)
Terraform InvalidParameterCombination:数据库安全组只能与 VPC 数据库实例关联