4

我有以下代码..

data "aws_secretsmanager_secret" "db_password" {
name = "${var.db_secret}" 
}

data "aws_secretsmanager_secret_version" "db_password" { 
secret_id = "${data.aws_secretsmanager_secret.db_password.id}" 
}


master_password = "${data.aws_secretsmanager_secret_version.db_password.secret_string}"

在这种情况下返回 secret_string

 secret_string = {"Test":"TestPassword"}

如何剪切并使用秘密的 TestPassword 部分用作我的 master_password?

4

2 回答 2

3

我不得不伪造您的 Secrets 端点,但此测试端点返回相同的 json:

所以在 tf...

data "external" "secret_string" {
  program = ["curl", "http://echo.jsontest.com/Test/Testpassword"]
}

output "json_data_key" {
  value = "${data.external.secret_string.result}"
}

output "PASSWORD" {
  value = "${lookup(data.external.secret_string.result, "Test")}"
}

最后一个输出是你所追求的?

${lookup(data.external.secret_string.result, "Test")}

这给了你:

data.external.secret_string: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

PASSWORD = Testpassword
json_data_key = {
  Test = Testpassword
}

所以0.12之前解析json肯定是可以的……

于 2019-02-03T15:13:50.443 回答
2

jsondecode考虑到这是 JSON,您可能需要在 Terraform中等待v0.12才能解决问题。

jsondecode函数Github问题

于 2019-02-02T21:35:09.983 回答