在尝试创建$disconnect为 API 网关命名的路由键时,我运行下面的代码片段,同时var.route_name应该收到字符串“disconnect”:
resource "aws_apigatewayv2_route" "route" {
api_id = var.apigw_api.id
route_key = "$${var.route_name}"
# more stuff...
}
Run Code Online (Sandbox Code Playgroud)
但它并没有正确地转义它。我找不到正确的方法来发出 a $,后跟var.route_names 的内容。
怎么做?
Mar*_*ins 29
在Terraform 的模板语言中,该序列$${是文字的转义序列${,因此不幸的是,在您的示例中,Terraform 将理解$${var.route_name}为文字${var.route_name},而不是字符串插值。
为了避免这种情况,您可以使用任何使初始值$与后续值分开的策略${,以便 Terraform 将第一个值理解$为文字,将其余部分理解为插值序列。
一种方法是$通过插值序列本身来呈现初始文字:
"${"$"}${var.route_name}"
Run Code Online (Sandbox Code Playgroud)
上面使用的插值序列通常是多余的——它的值本身就是一个文字字符串——但在这种情况下,改变 Terraform 对初始美元符号的解释在语法上是有用的。
其他一些排列:
join("", ["$", var.route_name])
Run Code Online (Sandbox Code Playgroud)
format("$%s", var.route_name)
Run Code Online (Sandbox Code Playgroud)
locals {
dollar = "$"
}
resource "aws_apigatewayv2_route" "route" {
route_key = "${local.dollar}${var.route_name}"
# ...
}
Run Code Online (Sandbox Code Playgroud)
同样,所有这些只是用于$以各种方式呈现文字,避免其后跟{or ${,从而避免 Terraform 的解析器将其视为模板序列或模板转义。
| 归档时间: |
|
| 查看次数: |
18435 次 |
| 最近记录: |