amazon-web-services - 销毁失败/取消的 Terraform 应用的 AWS 资源
问题描述
所以我使用了很多 AWS CDK,如果部署失败,我可以销毁 Cloudformation 堆栈,任何创建的服务都会被销毁。但是使用 Terraform 我最终遇到了取消或失败部署的相同问题(应用 terraform),但是在失败之前已经部署了一些资源,但是如果我运行 terraform destroy 它不知道这些资源已被部署......所以是手动清理这些资源的唯一方法吗?或者我错过了什么?
(我知道这个部署应该在 CICD 中运行,但如果管道部署失败,问题将是相同的:一些必须手动删除的孤立 AWS 资源)。
解决方案
我做了一个快速测试,甚至 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"
}
}
推荐阅读
- javascript - 如何重复承诺链
- socket.io - Socketio 查询参数不适用于多个命名空间
- node.js - API NodeJS 循环或错误处理问题:池连接未关闭(MYSQL)?
- java - 运行以下代码时数组索引超出键,但为什么呢?
- python - .cursor() 使 MySQL 不可用
- xml - 在 XML 中重命名节点,例如 xsi:type="xxx"
- postgresql - 更改数字在 psql 中的打印方式
- python - psycopg2:分手所用的时间
- django - django 有没有办法在不完全渲染的情况下用响应更新同一页面?
- c# - 有没有办法映射 Func
功能 ?