[英]format ASCII number to ASCII Character in terraform
在 terraform 中,有沒有辦法將類型為 int 的 ASCII 值格式化為相應的 ASCII 字符作為 char?
terraform 版本:v0.13.7
device_name = "${format ("xvd%c", 98)}" #xvdb
我嘗試使用 %c 但拋出如下錯誤
錯誤:function 調用出錯
在 ec2.tf 第 82 行,在資源“aws_volume_attachment”“app”中:82:device_name =“${format(“xvd%c”,98)}”#xvdb
調用 function“格式”失敗:偏移量 3 處的“%c”中不支持格式動詞“c”。
Terraform 沒有直接的 function 用於將數字解釋為任何特定字符編碼中的字符。 Terraform 語言沒有公開字符串在 memory 中是如何編碼的細節。
您的示例表明您的目標是將 map 從 integer 轉換為一個字母,用作 EC2 卷附件的設備名稱。 我認為滿足 Terraform 需求的最直接答案是手寫(或者,如果您願意,使用一次性腳本生成)查找表:
locals {
device_names = tolist([
"xvda",
"xvdb",
"xvdc",
"xvdd",
# (and so on for however many devices you expect to need to support,
# presumably up to "z" at the worst)
])
}
一個更“棘手”的選項——我個人不會使用它,因為它看起來不透明並且未來的讀者更難理解——將生成一些 JSON,其中包含所需字符的轉義序列,然后解析該 JSON:
jsondecode(format("\"\\u%04x\"", 98))
這實際上使用 Unicode 編碼值而不是 ASCII 編碼值,但前 128 個 ASCII 值與前 128 個 Unicode 值匹配,因此只要您只包含 0-127 范圍內的值,這應該是等效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.