第3天:30天 AWS Terraform — 使用 Terraform 创建您的第一个 S3 桶
Source: Dev.to

欢迎来到我的 30 天 AWS Terraform 挑战的第 3 天!
今天,我编写了我的第一个 Terraform 配置,它实际创建了一个真实的 AWS 资源——S3 存储桶。这个简单的示例为我们以后要处理的每一个云自动化任务奠定了基础。
为什么从 S3 开始?
Amazon S3 是最简单的自动化服务之一。它不需要 VPC、网络或复杂的依赖关系,非常适合了解:
- Terraform 资源的编写方式
- provider 块的工作原理
- 如何运行 Terraform 命令
它还展示了状态文件如何跟踪你的 AWS 基础设施——是学习基础设施即代码的理想第一步。

文件夹设置
创建一个用于当天工作的新文件夹:
day03/
在其中添加一个名为 main.tf 的文件。Terraform 只在乎文件以 .tf 结尾;文件名本身并不重要。
编写 S3 桶配置
From the official Terraform documentation, a basic S3 bucket resource looks like this:
resource "aws_s3_bucket" "firstbucket" {
bucket = "my-demo-bucket-123"
tags = {
Name = "MyBucket"
Environment = "Dev"
}
}

这意味着
aws_s3_bucket→ Terraform 资源类型firstbucket→ 用于引用的内部名称bucket→ 必须在全局唯一tags→ 键值元数据
就这样,我们的基础设施被定义为代码。
运行 Terraform 工作流
Terraform 遵循可预测的四步工作流。
1. terraform init
下载 AWS 提供程序插件并准备工作目录。
terraform init
每当创建新文件夹或添加新提供程序时运行此命令。
2. terraform plan
显示 Terraform 将进行的更改的演练(dry‑run)。
terraform plan
对于上述示例,您将看到:
Plan: 1 to add, 0 to change, 0 to destroy.
3. terraform apply
创建存储桶。
terraform apply
Terraform 将提示确认:
Enter a value: yes
或跳过提示:
terraform apply -auto-approve
几秒钟后,新 S3 存储桶会出现在 AWS 控制台中。
4. terraform destroy
删除您创建的所有内容。
terraform destroy
或自动批准:
terraform destroy -auto-approve
这个 “构建 → 修改 → 销毁” 循环是实际 DevOps 工作流的核心部分。
如何 Terraform 检测更改
Terraform 在本地文件 terraform.tfstate 中跟踪所有已创建的资源。
如果你修改代码,例如:
tags = {
Name = "MyBucket 2.0"
}
并再次运行 terraform plan,Terraform 会比较:
- 期望状态 –
.tf文件 - 实际状态 – AWS 中实际存在的资源
你会看到类似的输出:
Plan: 0 to add, 1 to change, 0 to destroy.
这种状态管理能力正是 Terraform 强大的原因。
第三天的关键学习
- 有效使用官方 Terraform 文档
- 理解资源块和提供者块
- 运行
init、plan、apply和destroy - 全局唯一 S3 存储桶名称的重要性
- Terraform 状态文件如何跟踪真实的 AWS 基础设施
- Terraform 如何自动识别更改并更新资源
最终感想
第 3 天是 Terraform 对我来说“恍然大悟”的时刻。看到一个实际的 AWS 资源是通过一个简单的 .tf 文件创建的,感觉像是解锁了新的超能力。Terraform 消除了手动点击,将基础设施转化为可重复、版本控制的自动化——这是每个 DevOps 工程师必须掌握的。