主要观点:Terraform 后端配置中基于 DynamoDB 的状态锁定即将被弃用,HashiCorp 主推原生 S3 状态锁定,这带来诸多好处如降低基础设施复杂度、简化入职流程、优化成本、更好地与 AWS 最佳实践对齐等,同时介绍了迁移现有基础设施到原生 S3 锁定的步骤,包括更新后端配置、重新初始化后端、测试锁定机制、更新 CI/CD 管道,还强调了启用 S3 桶版本控制及 IAM 权限设置等重要事项。
关键信息:
- 原配置:
terraform { backend "s3" { bucket = "my-terraform-state-prod" key = "network/terraform.tfstate" region = "us-east-1" dynamodb_table = "terraform-lock-table" } },需改为terraform { backend "s3" { bucket = "my-terraform-state-prod" key = "network/terraform.tfstate" region = "us-east-1" use_lockfile = true } }。 - 迁移步骤:先更新非生产环境后端配置,再重新初始化后端,测试锁定机制,更新 CI/CD 管道,同时启用 S3 桶版本控制,迁移完成后计划清理 DynamoDB 表。
- IAM 权限:需为 Terraform 执行角色设置特定 S3 权限,如
s3:GetObject、s3:PutObject、s3:DeleteObject等,无需 DynamoDB 权限。 - 注意事项:迁移前要审计 Terraform 仓库,更新文档,提前规划清理 DynamoDB 表,迁移过程要尽早开始、沟通清晰、充分测试。
重要细节:
- 多年来在 AWS 中 Terraform 状态管理的标准实践是创建专门的 DynamoDB 表用于状态锁定,现在可直接在 S3 后端实现原生锁定。
- 测试锁定机制时,在两个终端窗口同时运行
terraform plan,第二个命令会因状态被锁定而等待。 - 启用 S3 桶版本控制可保存状态文件的每一次更改,方便回溯和恢复。
- 弃用 DynamoDB 表后可保留两周左右以防需要回滚配置更改,确认新机制正常后再删除。
- 这是 Terraform 生态系统简化和整合的一部分,如向原生 Terraform Cloud 状态管理迁移。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。