解析唯寫屬性 - AWS CloudFormation

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

解析唯寫屬性

使用 CloudFormation IaC 產生器,您可以使用尚未由 CloudFormation管理的帳戶中佈建的資源產生範本。但是,某些資源屬性被指定為唯寫,這表示它們可以寫入,但無法讀取 CloudFormation,例如,資料庫密碼。

從現有資源產生 CloudFormation 範本時,唯寫屬性會構成挑戰。在大多數情況下,會 CloudFormation 將這些屬性轉換為產生的範本中的參數。這可讓您在匯入作業期間將性質作為參數值輸入。但是,在某些情況下,這種轉換是不可能的,並以不同的方式 CloudFormation 處理這些情況。

互斥屬性

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

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

  • Code/ImageUri

  • Code/ZipFile

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

互斥類型

在某些情況下,唯寫屬性可以是多種資料類型。例如,的Body屬性AWS::ApiGateway::RestApi可以是objectstring。在這種情況下,IaC 產生器會使用的類型在產生的範本中包含屬性,string並設定的警告類型。MUTUALLY_EXCLUSIVE_TYPES

Array 屬性

如果只寫屬性具有的類型array,IaC 生成器不能將其包含在生成的模板中,因為參數只能是純量值。在此情況下,會省略範本中的屬性,並設定警告類UNSUPPORTED_PROPERTIES型。

可選屬性

對於可選的唯寫屬性,IAC 生成器無法檢測設置資源時是否使用了該屬性。在此情況下,會從產生的範本省略屬性,並設定的UNSUPPORTED_PROPERTIES警告類型。

警告和後續步驟

當產生的範本包含具有唯寫屬性的資源時,IaC 產生器主控台會顯示警告,其中包含問題類型摘要。例如:

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

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

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

使用警告清單來識別具有唯寫屬性的資源,並查看每個資源以決定需要對產生的範本進行哪些變更 (如果有的話)。

檢閱警告後,您可以下載產生的範本並進行任何必要的變更。變更完成後,您可以選擇「匯入已編輯的範本」按鈕以繼續匯入程序。

目前,AWS 資源和屬性類型參考文件並未指出屬性是否為唯寫,或是否支援多種類型。您需要查看 IAC 產生器主控台或資源提供者結構描述傳回的警告,以判斷哪些屬性是唯寫的。若要下載資源提供者結構描述,請參閱CloudFormation 資源提供者綱要。若要取得更多資訊,請參閱《指CloudFormation 令行介面使用指南》中的〈資源提供者結構