Amazon web services 如何将aws secret manager字符串转换为terraform中的映射(0.11.13)

Amazon web services 如何将aws secret manager字符串转换为terraform中的映射(0.11.13),amazon-web-services,terraform,devops,terraform0.11,Amazon Web Services,Terraform,Devops,Terraform0.11,我在AWS secret manager中存储了一个秘密,并试图在运行时将其集成到terraform中。我们正在使用terraform 0.11.13版本,更新到最新的terraform在路线图中 我们都想使用作为最新terraform的一部分提供的jsondecode(),但在升级terraform之前需要集成一些东西 data "aws_secretsmanager_secret" "example" { arn = "arn:aws:s

我在AWS secret manager中存储了一个秘密,并试图在运行时将其集成到terraform中。我们正在使用terraform 0.11.13版本,更新到最新的terraform在路线图中

我们都想使用作为最新terraform的一部分提供的
jsondecode()
,但在升级terraform之前需要集成一些东西

data "aws_secretsmanager_secret" "example" {
  arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
}

data "aws_secretsmanager_secret_version" "example" {
  secret_id     = data.aws_secretsmanager_secret.example.id
  version_stage = "example"
}
我们尝试使用下面的帮助器外部数据程序,作为建议的一部分

但是我们现在得到了这个错误

data.external.helper: can't find external program "echo"
谷歌搜索没有多大帮助

任何帮助都将不胜感激


操作系统:Windows 10

听起来您想为
aws\u secretsmanager\u secret
使用
数据源

地形中的资源创建新资源。terraform中的数据源引用terraform中现有资源的价值

data "aws_secretsmanager_secret" "example" {
  arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
}

data "aws_secretsmanager_secret_version" "example" {
  secret_id     = data.aws_secretsmanager_secret.example.id
  version_stage = "example"
}
注意:您也可以使用机密名称 文件:

然后,您可以使用以下公式中的值:

output MySecretJsonAsString {
  value = data.aws_secretsmanager_secret_version.example.secret_string
}
根据文档,此资源的
secret\u字符串
属性为:

最初作为字符串提供的受保护秘密信息的解密部分

您还应该能够将该值传递到
jsondecode
中,然后分别访问json主体的属性


但你要求的是Terraform0.11.13解决方案。如果机密值由terraform定义,则可以使用terraform状态数据源获取该值。这确实相信除了terraform之外,没有其他东西在更新这个秘密。但是最好的办法是升级你的地形。在那之前,这可能是一个有用的权宜之计


作为建议,您可以将terraform的版本特定于某个模块,而不是整个组织。我通过使用运行特定版本的terraform bin的docker容器来实现这一点。每个模块的根目录中都有一个脚本,它将封装terraform命令,以便在该项目的terraform版本中出现。只是一个提示。

嘿,我没有windows10的经验来验证。外部助手是terraform用来运行助手的golang插件。我会检查并安装相关的golang插件(我相信是helper/schema),并检查操作系统的兼容性,如果windows是否支持echo。现在windows powershell支持echo。但terraform无法做到这一点<代码>PS C:\Users\Sanjeev>echo“Sanjeev”Sanjeev虽然这对Terraform 0.12+很有用,但这个问题特别需要Terraform 0.11的答案。啊,错过了这个细节。我的错。