首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >terraform从映射列表中获取索引值

terraform从映射列表中获取索引值
EN

Stack Overflow用户
提问于 2022-11-27 17:19:56
回答 1查看 22关注 0票数 0

我希望用下面的代码为aws秘密管理器vault_field secret_string的每个值提供数据。

variables.tf

代码语言:javascript
运行
复制
variable "aws_secrets" {
  type = list(
    object({
      aws_secret_id = string,
      vault_path    = string,
      vault_field   = string,
    })
  )
  default = []
}

main.tf

代码语言:javascript
运行
复制
data "vault_generic_secret" "aws_secrets" {
  for_each = { for idx, val in var.aws_secrets : idx => val }

  path = each.value.vault_path
}

resource "aws_secretsmanager_secret" "aws_secrets" {
  for_each                = { for idx, val in var.aws_secrets : idx => val }
  name                    = "my-secrets"
}

resource "aws_secretsmanager_secret_version" "aws_secrets" {
  for_each      = { for idx, val in var.aws_secrets : idx => val }
  secret_id     = aws_secretsmanager_secret.aws_secrets[each.key].id
  secret_string = jsonencode(data.vault_generic_secret.aws_secrets[2])
}

但是我得到了这个错误

代码语言:javascript
运行
复制
Error: Invalid index

76:   secret_string = jsonencode(data.vault_generic_secret.aws_secrets[2])
├────────────────
│ data.vault_generic_secret.aws_secrets is object with 1 attribute "0"

The given key does not identify an element in this collection value.}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 22:59:27

没有必要对秘密索引进行硬编码。您还需要实际引用secret_string属性:

代码语言:javascript
运行
复制
secret_string = jsonencode(data.vault_generic_secret.aws_secrets[each.key].   data_json)

代码语言:javascript
运行
复制
secret_string = jsonencode(data.vault_generic_secret.aws_secrets[each.key].   data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74592182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档