IAC 生成器和只寫屬性 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

IAC 生成器和只寫屬性

唯寫屬性是可寫入但無法讀取的資源屬性。 AWS CloudFormation(一個例子是數據庫密碼。) 從現有資源產生範本時,這會導致問題。一般而言,只寫屬性會轉換為產生的範本中的參數。這可讓您在匯入作業期間將性質作為參數值輸入。但是,在下列情況下,唯寫屬性無法轉換為參數:

  1. 有多個獨佔的屬性集,其中至少有一些是唯寫的。IaC 產生器無法判斷在建立期間套用至資源的獨佔屬性集。例如,您可以提供AWS::Lambda::Function使用這些屬性集之一的程式碼。

    • Code/S3BucketCode/S3Key,以及選擇性地 Code/S3ObjectVersion

    • Code/ImageUri

    • Code/ZipFile

    所有這些屬性都是唯寫的。IaC 產生器會選取其中一個專用性質集,並將其加入至產生的範本。會為每個唯寫屬性加入參數。參數名稱包括在內OneOf,參數描述指示對應的屬性可以用其他獨佔屬性取代。IaC 產生器會MUTUALLY_EXCLUSIVE_PROPERTIES針對包含Type的性質設定警告。

  2. 只寫屬性可以是多種數據類型中的任何一種。例如,的Body屬性AWS::ApiGateway::RestApi可以是objectstring。在這種情況下,IaC 產生器會設定警告,MUTUALLY_EXCLUSIVE_TYPES並使用Type的類型將屬性包含在產生的string範本中。

  3. 唯寫屬性具有的類型。array參數只能是純量值,因此無法將參數添加到數組的模板中。在這種情況下,IaC 生成器不會在生成TypeUNSUPPORTED_PROPERTIES模板中包含屬性,並設置警告。

  4. 唯寫屬性是選擇性的。IAC 生成器無法檢測設置資源時是否曾經使用過只寫屬性。在此情況下,IaC 產生器不會在產生TypeUNSUPPORTED_PROPERTIES範本中包含屬性,而且會設定警告。

當生成的模板包含具有唯寫屬性的資源時。IaC 生成器控制台顯示警告,其中包含問題類型的摘要。例如:

關於生成模板中的唯寫屬性的 IaC 生成器控制台警告

您可以選擇檢視警告詳細資料以查看更多詳細資訊。具有唯寫屬性的資源由產生的範本和資源類型中使用的邏輯 ID 識別。

IaC 生成器控制台有關生成模板中的唯寫屬性的詳細警告

使用警告清單來識別具有唯寫屬性的資源,並查看每個資源以決定需要對產生的範本進行哪些變更 (如果有的話)。您可以通過選擇下載按鈕下載生成的模板。完成變更後,您可以選擇「匯入已編輯的範本」按鈕繼續。

重要

目前AWS 資源和屬性類型參考文件並未指出屬性是否為唯寫,或是否支援多種類型。您需要查看 IAC 產生器主控台或資源提供者結構描述傳回的警告,以判斷哪些屬性是唯寫的。

若要取得有關資源提供者結構描述的詳細資訊,請參閱《CloudFormation 命令行介面使用指南》中的〈資源提供者 若要下載資源提供者結構描述,請參閱CloudFormation 資源提供者綱要