首页 > 解决方案 > 销毁失败/取消的 Terraform 应用的 AWS 资源

问题描述

所以我使用了很多 AWS CDK,如果部署失败,我可以销毁 Cloudformation 堆栈,任何创建的服务都会被销毁。但是使用 Terraform 我最终遇到了取消或失败部署的相同问题(应用 terraform),但是在失败之前已经部署了一些资源,但是如果我运行 terraform destroy 它不知道这些资源已被部署......所以是手动清理这些资源的唯一方法吗?或者我错过了什么?

(我知道这个部署应该在 CICD 中运行,但如果管道部署失败,问题将是相同的:一些必须手动删除的孤立 AWS 资源)。

标签: amazon-web-servicesterraform

解决方案


我做了一个快速测试,甚至 terraform apply 在中间失败了,它仍然在 terraform.tfstate 中保留完整的资源

文件 main.tf

provider "aws" {
  region = "ap-southeast-1"
}

resource "aws_vpc" "test" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"

  tags = {
    Name = "test"
  }
}

resource "aws_subnet" "sub1" {
  vpc_id     = aws_vpc.test.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "sub1"
  }
}

resource "aws_subnet" "sub2" {
  vpc_id     = aws_vpc.test.id
  cidr_block = "10.0.2.0/24"

  tags = {
    Name = "sub2"
  }
}

resource "aws_subnet" "sub3" {
  vpc_id     = aws_vpc.test.id
  cidr_block = "10.0.0.0/8"

  tags = {
    Name = "sub3"
  }
}

resource "aws_route_table" "rtb1" {
  depends_on = [aws_subnet.sub3]
  vpc_id = aws_vpc.test.id

  route = []

  tags = {
    Name = "rtb1"
  }
}

Terraform 计划在 terraform 上通过和失败应用如下: 在此处输入图像描述

你可以看到状态列表,这是 terraform destroy 的结果 在此处输入图像描述


推荐阅读