当我尝试将值列表传递给 terraform 中的数据模板时,我遇到了这个问题。
我尝试了不同的方法,例如
source_vpc_endpoints
作为一个列表并纳入["vpce-xxx", "vpce-yyy"]
,
source_vpc_endpoints = "${jsonencode(var.source_vpc_endpoints)}"
在数据.tf
和
source_vpc_endpoints
作为一个字符串并接收"\"vpce-xxx\", \"vpce-yyy\""
,
source_vpc_endpoints = var.source_vpc_endpoints"
在数据.tf
terragrunt.hcl
source_vpc_endpoints = "vpce-xxx,vpce-yyy"
数据.tf
data "template_file" "resource_policy" {
template = file("resourcePolicy.json")
vars = {
resource = aws_api_gateway_rest_api.api_gateway_rest.arn
source_vpc_endpoints = "${jsonencode(split(",", var.source_vpc_endpoints))}"
}
}
资源政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "${resource}",
"Condition": {
"StringEquals": {
"aws:SourceVpce": "${source_vpc_endpoints}"
}
}
}
]
}
他们每个人都给我这个错误:
控制台:错误:“策略”包含无效的 JSON:对象键后的无效字符“v”:值对
on aws_api_gateway_rest_api_policy.tf line 4, in resource "aws_api_gateway_rest_api_policy" "policy":
4: policy = data.template_file.resource_policy.rendered
[terragrunt] 2020/12/23 17:35:07 Hit multiple errors:
exit status 1
有没有办法来解决这个问题 ?
我正在使用 terraform (0.12.29) 和 terragrunt (v0.23.2) aws provider ("~>v3.21.0")