簡體   English   中英

terraform 從地圖列表中獲取索引值

[英]terraform get index value from the list of maps

我想為 aws secret manager secret_string 的vault_field的每個值提供此代碼。

variables.tf

variable "aws_secrets" {
  type = list(
    object({
      aws_secret_id = string,
      vault_path    = string,
      vault_field   = string,
    })
  )
  default = []
}

main.tf

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])
}

但是我得到這個錯誤

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

無需對秘密索引進行硬編碼。 您還需要實際參考secret_string屬性:

secret_string = jsonencode(data.vault_generic_secret.aws_secrets[each.key].   data_json)

或者

secret_string = jsonencode(data.vault_generic_secret.aws_secrets[each.key].   data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM