小编Jee*_*ler的帖子

Terraform timestamp()只能为数字字符串

timestamp()插值语法中的函数将返回ISO 8601格式的字符串,如下所示2019-02-06T23:22:28Z。但是,我想要一个看起来像这样的字符串20190206232240706500000001。仅包含数字(整数)且没有连字符,空格,冒号,Z或T的字符串。实现此目的的简单而优雅的方法是什么?

如果我在连字符,空格,冒号Z和T时替换了每个字符类,则可以使用:

locals {
  timestamp = "${timestamp()}"
  timestamp_no_hyphens = "${replace("${local.timestamp}", "-", "")}"
  timestamp_no_spaces = "${replace("${local.timestamp_no_hyphens}", " ", "")}"
  timestamp_no_t = "${replace("${local.timestamp_no_spaces}", "T", "")}"
  timestamp_no_z = "${replace("${local.timestamp_no_t}", "Z", "")}"
  timestamp_no_colons = "${replace("${local.timestamp_no_z}", ":", "")}"
  timestamp_sanitized = "${local.timestamp_no_colons}"
}

output "timestamp" {
  value = "${local.timestamp_sanitized}"
}
Run Code Online (Sandbox Code Playgroud)

结果输出采用所需格式,但字符串明显较短:

Outputs:

timestamp = 20190207000744
Run Code Online (Sandbox Code Playgroud)

但是,这种解决方案非常丑陋。还有另一种方式可以以更优雅的方式完成相同的事情,并产生与示例字符串相同长度的字符串20190206232240706500000001吗?

terraform hcl

4
推荐指数
3
解决办法
2309
查看次数

标签 统计

hcl ×1

terraform ×1