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

Terraform配置aws_secretsmanager_secret键值对不兼容随机密码如何解决

报错原因

variable是Terraform的输入变量,仅支持静态默认值,不允许在其默认值中引用其他资源的动态返回结果(比如这里random_password.default_password.result是资源生成的动态值),因此触发Variables may not be used here.错误。

解决方案

将动态组装键值对的逻辑从variable块改为使用locals局部值块,或者直接在secret_string参数内直接构造KV对象即可,修改后的完整配置如下:

// TODO: Generalize this to produce a password once per (username, company)
//       tuple in a list.
resource "random_password" "default_password" {
  length  = 20
  special = false
}

# NOTE: Since we aren't specifying a KMS key this will default to using
# `aws/secretsmanager`/
resource "aws_secretsmanager_secret" "user_default" {
  name = "user/default"
  tags = local.tags
}

# 用局部值组装动态KV内容,也可以跳过这一步直接在secret_string里构造
locals {
  secret_contents = {
    password = random_password.default_password.result
    company  = "test"
  }
}

resource "aws_secretsmanager_secret_version" "secret_val" {
  secret_id     = aws_secretsmanager_secret.user_default.id
  secret_string = jsonencode(local.secret_contents)
}

如果不需要复用这个KV结构,也可以简化写法,直接在参数内构造:

resource "aws_secretsmanager_secret_version" "secret_val" {
  secret_id     = aws_secretsmanager_secret.user_default.id
  secret_string = jsonencode({
    password = random_password.default_password.result
    company  = "test"
  })
}

以上配置执行后,Secrets Manager中会生成键值对格式的密钥,可直接在控制台分别查看password和company两个字段的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:45:04