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

发布: (2025年12月21日 GMT+8 01:47)
5 min read
原文: Dev.to

Source: Dev.to

30 天 AWS Terraform 第 3 天封面图 — 使用 Terraform 创建您的第一个 S3 存储桶

欢迎来到我的 30 天 AWS Terraform 挑战的第 3 天!
今天,我编写了我的第一个 Terraform 配置,它实际创建了一个真实的 AWS 资源——S3 存储桶。这个简单的示例为我们以后要处理的每一个云自动化任务奠定了基础。

为什么从 S3 开始?

Amazon S3 是最简单的自动化服务之一。它不需要 VPC、网络或复杂的依赖关系,非常适合了解:

  • Terraform 资源的编写方式
  • provider 块的工作原理
  • 如何运行 Terraform 命令

它还展示了状态文件如何跟踪你的 AWS 基础设施——是学习基础设施即代码的理想第一步。

Terraform 状态图

文件夹设置

创建一个用于当天工作的新文件夹:

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"
  }
}

编辑器中的 Terraform 配置

这意味着

  • 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 文档
  • 理解资源块和提供者块
  • 运行 initplanapplydestroy
  • 全局唯一 S3 存储桶名称的重要性
  • Terraform 状态文件如何跟踪真实的 AWS 基础设施
  • Terraform 如何自动识别更改并更新资源

最终感想

第 3 天是 Terraform 对我来说“恍然大悟”的时刻。看到一个实际的 AWS 资源是通过一个简单的 .tf 文件创建的,感觉像是解锁了新的超能力。Terraform 消除了手动点击,将基础设施转化为可重复、版本控制的自动化——这是每个 DevOps 工程师必须掌握的。

Back to Blog

相关文章

阅读更多 »

Terraform 高级

为什么使用 Terraform?Terraform 用于自动化云基础设施,这样人类就不需要手动创建: - VPCs - 子网 - 安全组 - ECS 集群 - …