【问题标题】:How to use Terraform to disable deletion protection on AWS RDS?如何使用 Terraform 禁用 AWS RDS 上的删除保护?
【发布时间】:2021-11-23 11:38:20
【问题描述】:

我使用 Terraform 启动了一个 AWS RDS SQL Server 数据库,并将删除保护设置为 true。现在,我正在尝试删除数据库,因此我尝试首先运行 {terraform apply} 并将 delete_protection 设置为 false,但出现以下错误:

Error: error deleting Database Instance "awsworkerdb-green": InvalidParameterCombination: Cannot delete protected DB Instance, please disable deletion protection and try again.
    status code: 400, request id: 7e787deb-af03-4016-9baa-471ab9c0ae1c

然后我尝试使用相同的TF代码直接执行{terraform destroy}并将delete_protection设置为false,我收到以下错误:

Error: error deleting Database Instance "awsworkerdb-green": InvalidParameterCombination: Cannot delete protected DB Instance, please disable deletion protection and try again.
    status code: 400, request id: 9a95ef70-8738-4a31-b0cd-cf10ef05bdec

如何使用 terraform 删除这个数据库实例?

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    这将是两个不同的 API 调用,因此两个连续的 Terraform 执行具有两个不同的配置修改:

    • 在您的配置中将deletion_protection 修改为false,并将您对RDS 实例的更改修改为apply
    • 直接从配置中删除 RDS 和 applydestroy RDS 资源。任一操作都会删除 RDS 实例。

    【讨论】:

    • 谢谢马特!这很有帮助。最后,我能够通过 Terraform 使用 AWS CLI 来完成它。
    【解决方案2】:

    你不能。您必须使用 AWS 控制台或带有 modify-db-instance 的 AWS CLI 手动执行此操作。整个删除保护点是为了使 rds 实例不容易删除,您必须为此显式修改它。

    【讨论】:

    • 谢谢马尔辛!我实际上使用 Terraform 通过 modify-db-instance 运行 AWS CLI。您可以使用 Terraform 通过使用 null_resource 运行 AWS CLI 命令,如下所示:resource "null_resource" "deleteprotection" { provisioner "local-exec" { command = "aws rds modify-db-instance --db-instance-identifier awsworkerdb-绿色 --no-deletion-protection --region "us-east-1" --apply-immediately" } }
    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多