将变量传递给 terraform 动态块 v12
Posted
技术标签:
【中文标题】将变量传递给 terraform 动态块 v12【英文标题】:passing variable to terraform dynamic block v12 【发布时间】:2020-10-13 16:54:15 【问题描述】:我正在尝试使用此 repo 中的代码 https://github.com/jmgreg31/terraform-aws-cloudfront/
但在设置变量时遇到了困难。
我的 variables.tf 有这个值,但不知何故它不起作用:
variable "dynamic_s3_origin_config"
default =
[
domain_name = "domain.s3.amazonaws.com"
origin_id = "S3-domain-cert"
origin_access_identity = "origin-access-identity/cloudfront/1234"
,
domain_name = "domain2.s3.amazonaws.com"
origin_id = "S3-domain2-cert"
origin_access_identity = "origin-access-identity/cloudfront/1234"
origin_path = ""
]
模块中的变量定义如下:
variable dynamic_s3_origin_config
description = "Configuration for the s3 origin config to be used in dynamic block"
type = list(map(string))
default = []
有人可以帮我理解我在这里做错了什么吗?
terraform plan
Error: Invalid expression
on variables.tf line 65, in variable "dynamic_s3_origin_config":
65:
66:
Expected the start of an expression, but found an invalid expression token.
【问题讨论】:
【参考方案1】:default =
和表达式的开头之间不能有换行符。尝试将您的块更改为:
variable "dynamic_s3_origin_config"
default = [
domain_name = "domain.s3.amazonaws.com"
origin_id = "S3-domain-cert"
origin_access_identity = "origin-access-identity/cloudfront/1234"
,
domain_name = "domain2.s3.amazonaws.com"
origin_id = "S3-domain2-cert"
origin_access_identity = "origin-access-identity/cloudfront/1234"
origin_path = ""
]
【讨论】:
这在 v12 中是否不正确:$var.lambda_at_edge_arn:$var.lambda_version" 或 "var.lambda_at_edge_arn:var.lambda_version" 也可以使用 第一个是正确的。在 0.12 中您仍然以相同的方式插入变量。以上是关于将变量传递给 terraform 动态块 v12的主要内容,如果未能解决你的问题,请参考以下文章
将 Terraform 变量中的数字传递给 Ansible Playbook
Terraform:如何将变量传递给 user_data 初始化脚本