连接字符串的子串

时间:2018-01-07 13:40:06

标签: string substring concatenation terraform

我的问题

考虑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中对字符串串联进行子串?

1 个答案:

答案 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))}"