簡體   English   中英

將ASCII碼格式化為terraform中的ASCII字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM