如何从Terraform状态中删除资源?

时间:2020-04-18 23:07:57

标签: terraform

我正在使用Terraform在AWS上管理IaC。我的terraform项目创建了一个s3存储桶,后来我将s3存储桶terraform移到了另一个项目。所以我删除了项目中所有与s3相关的代码。运行terraform apply时出现错误,提示Error: error deleting S3 Bucket (xxxx): BucketNotEmpty: The bucket you tried to delete is not empty

我知道terraform会尝试删除存储桶,因为我从那里删除了代码。

我尝试使用terraform refresh,但遇到了禁止的错误:Error: Forbidden: Forbidden status code: 403, request id: 8351F9C3663AF8FB, host id:

我知道我可以从本地删除terraform状态文件,但这需要我导入所有资源。我该如何解决这个问题?我正在使用本地状态而不是远程状态。

4 个答案:

答案 0 :(得分:4)

首先,您需要通过运行terraform state rm <resource-id>从状态文件中删除资源,然后需要从代码库中删除关联的配置。运行initplan之后,您将看到不需要更改

答案 1 :(得分:0)

经过一番搜索,我发现解决方案是使用terraform state rm从本地状态文件中删除s3资源。

答案 2 :(得分:0)

您可以通过以下方式删除添加到 Terraform 的任何资源:-

  1. 列出所有状态:- 地形状态列表

  2. 删除您想要的状态:- 地形状态 rm

答案 3 :(得分:0)

  • 第 1 步:列出状态

    $ terraform 状态列表

    data.terraform_remote_state.rg

    azurerm_subnet.vsubnet

    azurerm_virtual_network.vnet

  • 第 2 步:删除选中状态。

    $ terraform state rm azurerm_subnet.vsubnet

    删除了 azurerm_subnet.vsubnet

    已成功移除 1 个资源实例。