本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAC 生成器和只寫屬性
唯寫屬性是可寫入但無法讀取的資源屬性。 AWS CloudFormation(一個例子是數據庫密碼。) 從現有資源產生範本時,這會導致問題。一般而言,只寫屬性會轉換為產生的範本中的參數。這可讓您在匯入作業期間將性質作為參數值輸入。但是,在下列情況下,唯寫屬性無法轉換為參數:
-
有多個獨佔的屬性集,其中至少有一些是唯寫的。IaC 產生器無法判斷在建立期間套用至資源的獨佔屬性集。例如,您可以提供
AWS::Lambda::Function
使用這些屬性集之一的程式碼。-
Code/S3Bucket
、Code/S3Key
,以及選擇性地Code/S3ObjectVersion
-
Code/ImageUri
-
Code/ZipFile
所有這些屬性都是唯寫的。IaC 產生器會選取其中一個專用性質集,並將其加入至產生的範本。會為每個唯寫屬性加入參數。參數名稱包括在內
OneOf
,參數描述指示對應的屬性可以用其他獨佔屬性取代。IaC 產生器會MUTUALLY_EXCLUSIVE_PROPERTIES
針對包含Type
的性質設定警告。 -
-
只寫屬性可以是多種數據類型中的任何一種。例如,的
Body
屬性AWS::ApiGateway::RestApi
可以是object
或string
。在這種情況下,IaC 產生器會設定警告,MUTUALLY_EXCLUSIVE_TYPES
並使用Type
的類型將屬性包含在產生的string
範本中。 -
唯寫屬性具有的類型。
array
參數只能是純量值,因此無法將參數添加到數組的模板中。在這種情況下,IaC 生成器不會在生成Type
的UNSUPPORTED_PROPERTIES
模板中包含屬性,並設置警告。 -
唯寫屬性是選擇性的。IAC 生成器無法檢測設置資源時是否曾經使用過只寫屬性。在此情況下,IaC 產生器不會在產生
Type
的UNSUPPORTED_PROPERTIES
範本中包含屬性,而且會設定警告。
當生成的模板包含具有唯寫屬性的資源時。IaC 生成器控制台顯示警告,其中包含問題類型的摘要。例如:
您可以選擇檢視警告詳細資料以查看更多詳細資訊。具有唯寫屬性的資源由產生的範本和資源類型中使用的邏輯 ID 識別。
使用警告清單來識別具有唯寫屬性的資源,並查看每個資源以決定需要對產生的範本進行哪些變更 (如果有的話)。您可以通過選擇下載按鈕下載生成的模板。完成變更後,您可以選擇「匯入已編輯的範本」按鈕繼續。
重要
目前AWS 資源和屬性類型參考文件並未指出屬性是否為唯寫,或是否支援多種類型。您需要查看 IAC 產生器主控台或資源提供者結構描述傳回的警告,以判斷哪些屬性是唯寫的。
若要取得有關資源提供者結構描述的詳細資訊,請參閱《CloudFormation 命令行介面使用指南》中的〈資源提供者 若要下載資源提供者結構描述,請參閱CloudFormation 資源提供者綱要。