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

问题描述 投票:0回答:1

我有 CI CD 管道,我试图将 2 个版本导入到

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"
}

错误:

│错误:“aws_secretsmanager_secret_version.example”的导入配置重复 │ │ main.tf 第 6 行: │ 6:导入{ │ │ 资源的导入块 │ “aws_secretsmanager_secret_version.example” │ 已在 main.tf:1,1-7 处声明。一个资源只能有一次导入 │ 封锁。

amazon-web-services terraform terraform-provider-aws aws-secrets-manager
1个回答
1
投票

两个版本可以导入到两个不同的资源中。例如,第一个可以称为

version_x
,第二个可以称为
version_y

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

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

导入块还允许使用

for_each
,因此您也可以尝试使用它,而不是使用两个资源块。一个例子:

locals {
  secret_versions = {
    "version_x" = "xxxxx-xxxxxxx-xxxxxxx-xxxxx"
    "version_y" = "yyyyy-yyyyyyy-yyyyyyy-yyyyy"
  }
}

import {
  for_each = local.secret_versions
  to       = aws_secretsmanager_secret_version.example[each.key]
  id       = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456|${each.value}"
}

resource "aws_secretsmanager_secret_version" "example" {
  for_each = local.secret_versions
  .
  .
  .
}

它应该适用于 >=1.7.x 的 terraform 版本。

© www.soinside.com 2019 - 2024. All rights reserved.