【问题标题】:How to input the dictionary structure in 'values' argument using the aws_ssm_parameter in terraform?如何使用 terraform 中的 aws_ssm_parameter 在“值”参数中输入字典结构?
【发布时间】:2019-12-12 05:35:36
【问题描述】:

我在 AWS System Manager 中有一个参数,值的类型是字符串,但值是字典结构:

价值:

{"key1": "value1","key2": "value2","key3": "value3"}

现在我正在尝试使用 Terraform 创建此参数。但是当我尝试在 aws_ssm_parameter 资源中写这个时,我收到了一个错误:

resource "aws_ssm_parameter" "Paramet" {
  name = "/dev/parameter/new"
  description = "Sample config values"
  type = "String"
  value = "{key1" : "value1", "key2" : "value2", "key3" : "value3}"
}

错误:

$ 地形规划

错误:参数后缺少换行符

在 main.tf 第 90 行,在资源“aws_ssm_parameter”“参数”中:90: 值=“{key1”:“value1”,“key2”:“value2”,“key3”:“value3}”

参数定义必须以换行符结尾。

此错误与语法有关,但我不明白如何正确解决此问题。

请指教,如何在 aws_ssm_parameter 资源中正确输入这个值?

【问题讨论】:

  • 由于"未转义而出现错误。为了逃避它们,您可以在每个 " 前面添加一个反斜杠 \。话虽这么说,按照@tedsmitt's answer中的建议使用heredoc肯定更具可读性

标签: amazon-web-services terraform terraform-provider-aws aws-ssm


【解决方案1】:

您可以使用heredoc 语法来实现这一点。以下应该适合你

resource "aws_ssm_parameter" "Parameter" {
  name = "/dev/parameter/new"
  description = "Sample config values"
  type = "String"
  value = <<EOF
  {
      "key1" : "value1", 
      "key2" : "value2", 
      "key3" : "value3"
  }
  EOF
}

【讨论】:

  • 您经常想使用&lt;&lt;- 而不仅仅是&lt;&lt;。不同的是,前者会根据结束EOF的缩进自动去除缩进。
猜你喜欢
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
相关资源
最近更新 更多