You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将aws_secretsmanager_secret_version从secret_string迁移到secret_string_wo?

解决AWS Secrets Manager Secret Version迁移到Write-Only属性的问题

要在不重建现有Secret Version资源(避免影响依赖系统)的前提下,从secret_string迁移到secret_string_wo属性,按以下步骤操作:

1. 备份Terraform状态

先执行状态备份,防止操作出错:

terraform state pull > terraform-state-backup.json

2. 调整Terraform配置

修改配置为使用ephemeral资源和secret_string_wo,暂时移除secret_string_wo_version属性(该属性为ForceNew类型,会触发资源重建):

ephemeral "random_password" "no_need_to_change" {
  length  = 20
  special = true
}

resource "aws_secretsmanager_secret_version" "my_value" {
  secret_id = aws_secretsmanager_secret.my_secret.id
  secret_string_wo = jsonencode(
    {
      password = ephemeral.random_password.no_need_to_change.result
    }
  )
}

3. 移除现有资源的状态记录

执行命令移除当前Secret Version的状态条目:

terraform state rm aws_secretsmanager_secret_version.my_value

4. 导入现有Secret Version资源

使用现有Secret的ARN和版本ID导入资源,格式为secret-arn|version-id(替换为你实际的ARN和版本ID):

terraform import aws_secretsmanager_secret_version.my_value "arn:aws:secretsmanager:eu-west-1:123456789:secret:XXXX|terraform-20250999888777666555444"

5. 修正Terraform状态

导入后,Terraform状态仍会保留旧的secret_string属性,需要手动编辑状态移除该属性并添加write-only标记:
执行状态编辑命令:

terraform state edit aws_secretsmanager_secret_version.my_value

在编辑器中:

  • 删除包含secret_string的行
  • 添加一行:has_secret_string_wo = true

保存并退出编辑器。

6. 验证配置

执行terraform plan,此时应该不会再提示资源需要重建。如果需要控制版本更新策略(比如只在创建时设置值),可以后续添加secret_string_wo_version = 1,但需注意:若要修改该属性,仍需通过状态编辑或重新导入避免重建。

额外说明

  • secret_string_wo是write-only属性,其值不会存储到Terraform状态中,符合安全要求
  • 若后续需要更新Secret值,直接修改ephemeral资源的配置或触发Terraform apply即可,不会影响现有依赖系统(只会生成新的Secret版本)

内容的提问来源于stack exchange,提问作者Peter McEvoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:53:14