Amazon-Web-Services

在 cloudformation 中是否可以創建可重用的字元串?

  • August 26, 2021

我有一個字元串,它由許多變數組成,我用於許多不同的事物,例如標籤和主機名。

有沒有一種方法可以創建一個我可以通過模板引用的可重用字元串?

對此的任何想法將不勝感激。編輯:一個例子是傳入 2 個參數,例如 ProjectName 和 Environment 加入它們

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

並在許多地方使用結果

不幸的是,我的實驗與您的 Graeme 結論一致。我已經為此苦苦掙扎了一段時間,但沒有找到一種通過 Fn::Join 計算字元串並將其保留在模板中的方法。

可以和你分享一個典型的例子嗎?

截至 2014 年 9 月 18 日,儲存字元串值以在資源部分重複使用的最複雜方法是通過(二級)映射。更好的是,我可以預先計算一個條件並確定是否使用該字元串。但不幸的是,字元串的儲存不起作用。

這是這樣一個映射的範例節……

   "LoadBalancerBucketMap": {
       "BucketName": {
           "string": {
               "Fn::Join": [
                   "-",
                   [
                       "mylb",
                       {
                           "Ref": "Environment"
                       },
                       "logs"
                   ]
               ]
           }
       }
   },

這是 Resource 中對其的訪問表達式

               "S3BucketName": {
                   "Fn::FindInMap": [
                       "LoadBalancerBucketMap",
                       "BucketName",
                       "string"
                   }

在此範例中,Environment 是具有方便預設值的文字字元串參數。所以這是一個非常清楚的創建和重用字元串的例子。但這是 CloudFormation 處理器所說的……

模板驗證錯誤:模板格式錯誤:每個映射屬性必須是字元串或列表。

因此,我與您一樣感到沮喪的是,模板中似乎沒有辦法提供臨時字元串變數的效果。

……據我所知。但是您最初收到的答案與此相反(儘管沒有範例)。

因此,如果有人確實有範例解決方法,那麼請他們分享一下嗎?

引用自:https://serverfault.com/questions/579400