本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
解析唯寫屬性
使用 CloudFormation IaC 產生器,您可以使用尚未由 CloudFormation管理的帳戶中佈建的資源產生範本。但是,某些資源屬性被指定為唯寫,這表示它們可以寫入,但無法讀取 CloudFormation,例如,資料庫密碼。
從現有資源產生 CloudFormation 範本時,唯寫屬性會構成挑戰。在大多數情況下,會 CloudFormation 將這些屬性轉換為產生的範本中的參數。這可讓您在匯入作業期間將性質作為參數值輸入。但是,在某些情況下,這種轉換是不可能的,並以不同的方式 CloudFormation 處理這些情況。
互斥屬性
有些資源具有多組互斥的屬性,其中至少有些是唯寫的。在這些情況下,IaC 產生器無法判斷在建立期間將哪一組獨佔屬性套用至資源。例如,您可以提供AWS::Lambda::Function使用這些屬性集之一的程式碼。
-
Code/S3Bucket
、Code/S3Key
,以及選擇性地Code/S3ObjectVersion
-
Code/ImageUri
-
Code/ZipFile
所有這些屬性都是唯寫的。IaC 產生器會選取其中一個專用性質集,並將其加入至產生的範本。會為每個唯寫屬性加入參數。參數名稱包括在內OneOf
,參數描述指示對應的屬性可以用其他獨佔屬性取代。IAC 產生器為包括的性質設定MUTUALLY_EXCLUSIVE_PROPERTIES
的警告類型。
互斥類型
在某些情況下,唯寫屬性可以是多種資料類型。例如,的Body
屬性AWS::ApiGateway::RestApi可以是object
或string
。在這種情況下,IaC 產生器會使用的類型在產生的範本中包含屬性,string
並設定的警告類型。MUTUALLY_EXCLUSIVE_TYPES
Array 屬性
如果只寫屬性具有的類型array
,IaC 生成器不能將其包含在生成的模板中,因為參數只能是純量值。在此情況下,會省略範本中的屬性,並設定警告類UNSUPPORTED_PROPERTIES
型。
可選屬性
對於可選的唯寫屬性,IAC 生成器無法檢測設置資源時是否使用了該屬性。在此情況下,會從產生的範本省略屬性,並設定的UNSUPPORTED_PROPERTIES
警告類型。
警告和後續步驟
若要判斷哪些屬性是唯寫的,您必須查看 IAC 產生器主控台傳回的警告。該AWS 資源和屬性類型參考文檔不會指出屬性是否為只寫,或者它是否支持多種類型。
或者,您可以從資源提供者結構描述查看哪些屬性是唯寫的。若要下載資源提供者結構描述,請參閱CloudFormation 資源提供者結構描述。若要取得更多資訊,請參閱《指CloudFormation 令行介面使用指南》中的〈資源提供者結構
若要解決唯寫屬性的問題
-
打開控 CloudFormation 制台的 IAC 生成器頁面
。 -
在畫面頂端的導覽列上,選擇 AWS 區域 適合您範本的。
-
選擇「範本」頁標,然後選擇您建立的範本名稱。
-
在 [範本定義] 索引標籤上,當產生的範本包含具有唯寫屬性的資源時,IAC 產生器主控台會顯示警告,其中包含問題類型摘要。例如:
-
選擇檢視警告詳細資料以取得詳細資訊 具有唯寫屬性的資源由產生的範本和資源類型中使用的邏輯 ID 識別。
使用警告清單來識別具有唯寫屬性的資源,並查看每個資源以決定需要對產生的範本進行哪些變更 (如果有的話)。
-
如果必須更新範本以解決唯寫屬性的問題,請執行下列動作:
-
選擇 [下載] 以下載範本副本。
-
編輯範本。
-
變更完成後,您可以選擇「匯入已編輯的範本」按鈕以繼續匯入程序。
-