IT技术博客大学习 共学习 共进步

Terraform 极简入门:从 AWS-CLI 到基础设施即代码(IaC)

元视角 2026-06-03 09:03:24 累计浏览 7 次
本机暂存
缘起:为什么需要 Terraform 最近,我参与了一个 AWS Serverless 项目。业务需求本身并不复杂:几个 Lambda 函数、一个 S3 存储、一个 EventBridge 定时触发,再加上精细化的 IAM 权限控制。在部署这套服务的过程中,我先后尝试了三种方案,几乎踩遍了云基础设施管理中的经典巨坑: AWS Console:一开始为了快,直接上控制台点鼠标。创建 S3 Bucket、手动上传 Lambda zip 包、配置 EventBridge 规则。问题是:项目要部署到 dev、staging、prod 三个环境,在控制台里点一遍要花半小时,三个环境配置完一个半小时。两个月后,当有人问“这个安全组是谁配的,为什么开了 443端口”时,没人说得清。 SAM:手动上传 zip 太繁琐,同事推荐了 SAM,通过一个 template.yaml 定义 Lambda 和权限,结合 sam build && sam deploy 确实省心。但当面对 VPC、安全组、S3 高级配置、更精细的 IAM 策略时,SAM 显得力不从心。于是我变成了“混合打法”:SAM 管理 Lambda,其余资源还是在控制台管理。两个工具,两套流程,让人身心俱疲。 Terraform:运维同事终于看不下去了:“你这些资源应该用 Terraform 管理起来”。我一开始是抗拒的——一个 S3 Bucket 要写好几行代码,还要声明 Provider、定义变量,控制台里点几下搞定的事,为什么要大费周章写代码? 但是,很快一次意外说服了我。某天,有人在控制台里偷偷修改了路由表,却没有同步到代码中。第二天跑 terraform plan,配置漂移直接暴露。那一刻我才真正顿悟:Terraform 不仅仅是帮你创建资源的工具,更是帮你锁定“期望状态”的终极防线。 故事到这里,你以为我全面拥抱 Terraform 了?并没有。对于 Lambda 函数的代码部署,我最后还是选择用 GitHub Actions + AWS CLI。因为:Terraform 擅长管理静态的基础设施,而高频的代码迭代更适合放在专业的 CI/CD 流水线中。所以,我最终的工程实践是:Terraform 掌管资源拓扑,CI/CD 流水线负责代码交付。架构没有银弹,关键在于各司其职。

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,801)
  2. 应该知道的Linux技巧 (累计阅读 8,862)
  3. 个人开公司的流程,以后用得着 (累计阅读 7,862)
  4. 完全用命令行工作 -- 一年后的思考 (累计阅读 7,400)
  5. 程序员装逼神器-TPP (累计阅读 7,242)
  6. AWS云平台系列介绍(一):AWS平台与EC2介绍 (累计阅读 5,882)
  7. dig挖出DNS的秘密 (累计阅读 5,680)
  8. php实现百度音乐采集下载 (累计阅读 5,460)
  9. Linux常用命令,命令行技巧 (累计阅读 5,100)
  10. 开启命令行下的社交 (累计阅读 5,062)