考虑name_prefix
太长的资源。名称前缀是其他变量的串联,例如:
"${var.owner}-${var.role}-specific-"
我想使用substr
函数来确保资源名称不超过32个字符。
"${substr(${var.owner}-${var.role}-specific- 0, min(length(var.name_prefix_full), 32))}"
失败了:
...Error reading config for aws_iam_role_policy[role]:
parse error at 1:10: expected expression but found invalid sequence "$"
如何在Terraform中对字符串串联进行子串?
答案 0 :(得分:1)
HCL插值语法可能很奇怪,请尝试:
name_prefix = "${substr("${var.owner}-${var.role}-specific-", 0, 32)}"
(如果在32之前需要一个min
,请保留它。但如果它比请求的长度短,则给出整个字符串的HCL行为通常意味着你不需要那个计算。)
<强>更新强>:
32个字符应为最大值。如果字符串超过32个字符,则不应填充。
name_prefix = "${substr("${var.owner}-${var.role}-specific-", 0,
min(length("${var.owner}-${var.role}-specific-"), 32))}"