Terragrunt管理S3远程状态时能否配置对象锁定?
用Terragrunt一步创建带合规模式对象锁定的S3后端桶
可以直接通过Terragrunt的remote_state配置实现需求,不用分两步部署S3桶和迁移状态。只需在现有配置中添加对象锁定相关参数,配合--backend-bootstrap就能一次性创建符合要求的S3桶并完成状态初始化。
修改后的remote_state配置
remote_state { backend = "s3" generate = { path = "backend.tf" if_exists = "overwrite_terragrunt" } config = { bucket = local.env_vars.locals.tfstate_bucket key = "terraform.tfstate" region = local.env_vars.locals.region encrypt = true use_lockfile = true s3_bucket_tags = local.env_vars.locals.default_tags # 新增对象锁定相关配置 object_lock_enabled = true object_lock_configuration = { rule = { default_retention = { mode = "COMPLIANCE" days = 7 } } } } }
关键参数说明
object_lock_enabled = true:必须在桶创建时设置,用于启用S3桶的对象锁定功能(桶创建后无法再添加该功能)object_lock_configuration:设置默认对象保留规则,这里指定**合规模式(COMPLIANCE)**和7天保留期。合规模式下,包括桶所有者在内的任何用户都无法在保留期内删除或修改状态文件,完全符合合规要求。
执行方式
运行以下命令即可一步完成桶创建和后端初始化:
terragrunt init --backend-bootstrap
注意事项
- 对象锁定桶一旦创建就无法关闭该功能,确认策略符合需求后再执行命令
- 合规模式的保留规则会应用到桶内所有对象(包括Terraform状态文件的历史版本),需确保接受7天内无法删除旧状态版本的限制
- 确保你的AWS身份具备创建带对象锁定配置的S3桶权限
内容的提问来源于stack exchange,提问作者Appleoddity
相关产品推荐
相关产品推荐

