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

如何将多个aws_secretsmanager_secret_version版本导入Terraform状态?

解决Terraform重复导入AWS Secrets Manager版本资源的报错问题

问题场景

在CI/CD流水线中尝试将Secrets Manager的两个版本导入到同一个aws_secretsmanager_secret_version.example资源,配置如下:

import {
  to = aws_secretsmanager_secret_version.example
  id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx"
}

import {
  to = aws_secretsmanager_secret_version.example
  id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|yyyyy-yyyyyyy-yyyyyyy-yyyyy"
}

执行时触发报错:

│ Error: Duplicate import configuration for "aws_secretsmanager_secret_version.example"
│
│ on main.tf line 6:
│ 6: import {
│
│ An import block for the resource
│ "aws_secretsmanager_secret_version.example"
│ was already declared at main.tf:1,1-7. A resource can have only one import
│ block.


原因分析

Terraform的aws_secretsmanager_secret_version资源每个实例只能对应一个密钥版本,该资源的设计目的就是管理单个密钥版本的生命周期,因此不允许将多个版本导入到同一个资源实例中。


解决方案

需要为每个密钥版本定义独立的aws_secretsmanager_secret_version资源实例,再分别导入:

  1. 定义多版本资源实例
    在你的Terraform配置中,为每个要导入的版本创建单独的资源块,确保它们指向同一个基础密钥:

    resource "aws_secretsmanager_secret_version" "example_v1" {
      secret_id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
    }
    
    resource "aws_secretsmanager_secret_version" "example_v2" {
      secret_id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
    }
    
  2. 配置对应导入块
    修改导入配置,将每个版本导入到对应的资源实例:

    import {
      to = aws_secretsmanager_secret_version.example_v1
      id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx"
    }
    
    import {
      to = aws_secretsmanager_secret_version.example_v2
      id = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|yyyyy-yyyyyyy-yyyyyyy-yyyyy"
    }
    
  3. 执行导入与初始化
    运行以下命令完成导入和状态同步:

    terraform init
    terraform import
    

补充说明

  • 每个aws_secretsmanager_secret_version实例对应一个密钥版本,Terraform会独立跟踪每个版本的状态
  • 如果需要管理密钥的历史版本,这种多实例的方式完全符合Secrets Manager的版本管理逻辑
  • 后续若要更新某个版本,只需修改对应资源块的配置即可

内容的提问来源于stack exchange,提问作者Python coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:14:58