SuperAPI AI 工具集

terraform-aws

部署与运维

查看项目

更新于 10-15 10:53

技能介绍

用途

本技能提供使用 Terraform 管理 AWS 基础设施即代码(IaC)的完整指南,面向生产环境,覆盖 VPC 网络、IAM 安全、状态管理以及常见 AWS 资源,基于 Terraform 1.11+ 特性与 AWS Provider 6.x。

适用场景包括:使用 Terraform 预置 AWS 基础设施;搭建含公有/私有子网的 VPC 网络;配置 IAM 角色、策略与权限;用 S3 后端管理 Terraform 状态;部署数据库(RDS、Aurora);创建适配 EKS 的 VPC 配置;排查 terraform plan/apply 失败;从 DynamoDB 迁移到 S3 原生锁;将已有 AWS 资源导入 Terraform。

主要能力

Provider 与变量配置

支持声明 Terraform 与 AWS Provider 版本要求,配置 S3 后端及 default_tags 统一打标,并对变量(如 environment)设置校验规则。

terraform {
  required_version = ">= 1.11.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 6.0"
    }
  }

  backend "s3" {
    bucket = "my-terraform-state-bucket"
    key    = "production/terraform.tfstate"
    region = "us-east-1"

    # Native S3 locking (Terraform 1.11+)
    use_lockfile = true
  }
}

变量校验示例:environment 限定为 dev、staging、production。

常见资源配置

  • VPC 与公有/私有子网:使用 terraform-aws-modules/vpc/aws 模块,可开启 NAT 网关(非生产可单 NAT 以优化成本)、DNS 主机名与支持、VPC Flow Logs 及对应 CloudWatch IAM 角色与日志组。
  • S3 存储桶:配置版本控制、服务端加密(AES256)和公共访问阻止。
  • IAM:为 EC2 创建角色,附加 AmazonSSMManagedInstanceCore 托管策略,自定义 S3 访问策略,并创建实例配置文件。
  • RDS PostgreSQL:配置子网组、安全组、实例类别与存储(按环境区分)、备份保留期、维护窗口、CloudWatch 日志导出、删除保护与最终快照。

使用方式

状态管理

推荐 S3 后端原生锁(Terraform 1.11+,无需 DynamoDB),通过 use_lockfile = true 启用,可配置 encrypt 及 KMS 密钥。Terraform < 1.11 仍可使用 S3 + DynamoDB 锁(dynamodb_table)。

模块使用

可直接引用社区模块(如 VPC 模块、EKS 模块),也可创建自定义模块目录(main.tf、variables.tf、outputs.tf、README.md)后通过 source = "./modules/application" 调用。

常用工作流

  • 初始化:terraform init;迁移状态:terraform init -migrate-state;重配置后端:terraform init -reconfigure。
  • 计划与应用:terraform plan -out=tfplan、terraform apply tfplan,或 -target 指定资源。
  • 导入资源:terraform import,例如导入 VPC、S3 存储桶、RDS 实例。
  • 工作区:workspace list/new/select/show。

命令速查

包含初始化(init、init -upgrade)、计划(plan、plan -out、plan -destroy)、应用(apply、destroy)、状态(state list/show/rm/mv)、校验(fmt、fmt -recursive、validate、validate -json)、输出(output、output -json)、工作区(workspace list/new/select/delete)等命令。

适用范围与限制

常见问题与解决

资料列出了状态锁超时(terraform force-unlock)、Provider 版本冲突(更新 required_providers)、资源依赖循环(depends_on 或拆分资源)、资源已存在(terraform import)、权限不足(补充 IAM 策略)、状态漂移(plan 后 apply 或 import)等问题的成因与修复方式。

最佳实践

资源命名采用 {project}-{resource}-{environment} 格式;按环境使用条件表达式区分实例规格、备份保留与删除保护;敏感数据标记 sensitive = true 并配合 AWS Secrets Manager;通过 provider 的 default_tags 统一打标。另提供生产部署检查清单,涵盖 S3 后端加密、状态锁、Provider 版本固定、变量校验、密钥管理、最小权限、日志、备份保留、格式化与校验,以及 .terraform/ 和 *.tfstate 的 .gitignore 处理。

限制

本技能声明的版本要求为 Terraform 1.11+、AWS Provider 6.x,遵循 AWS Well-Architected Framework,最后更新时间为 2025 年 11 月。资料未提供价格、收费方式或平台限制等信息。