本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 驗證範本 cloudformation-validate
開放原始碼cloudformation-validate專案
此工具包含其所需的規則和 CloudFormation 資源定義,因此會在安裝後在沒有網路存取或 AWS 登入資料的情況下執行。
選擇驗證方法
-
命令列 – 執行
cfn-validate從終端機或自動建置檢查目錄中的一個範本或每個範本。 -
程式庫 – 將驗證程式新增至 Rust、Node.js、Python、Go 或 JVM 應用程式,並在程式碼中處理結果。
-
AWS CDK – 在 CDK 合成範本之後,自動驗證範本。
-
自訂規則 – 新增以 CEL、Rego 或 Guard 規則語言撰寫的檢查。如需支援的規則格式和範例,請參閱 GitHub 上的自訂規則參考
。如需 Guard 規則語法,請參閱本指南使用 Guard 驗證範本中的 。
安裝命令列工具
在 GitHub 上開啟cfn-validate最新版本cfn-validate 檔案。遵循 GitHub 上的安裝指南cfn-validate,將其新增至您的 PATH,然後驗證下載的檔案。
執行驗證
命令使用下列語法:
cfn-validateTEMPLATE_OR_DIRECTORY[OPTIONS]
檢查一個範本:
cfn-validate template.yaml
傳遞目錄以遞迴檢查每個 .yaml、 .yml和 .json 檔案:
cfn-validate ./templates/
命令會將結構化 JSON 驗證報告寫入標準輸出。將 --format standard用於精簡輸出,或將 --format detailed用於預設的詳細報告。
命令0在發現沒有錯誤或嚴重診斷、發現錯誤或嚴重診斷1,以及2針對用量或初始化錯誤時傳回,例如無效的選項或不存在的檔案。
如需所有引擎、篩選條件、輸出格式和參數,請參閱 GitHub 上的 cfn-validate CLI 參考
新增自訂規則
使用 --rule-source載入自訂 Rego 或 CEL 規則檔案。使用 --guard-rule-source載入 Guard 規則檔案或目錄。您可以重複其中一個選項來載入多個規則來源:
cfn-validate template.yaml --rule-source ./rules/my-rule.rego cfn-validate template.yaml --guard-rule-source ./guard-rules/
如需規則格式和範例,請參閱 GitHub 上的自訂規則參考
內嵌驗證程式庫
為您的程式設計語言安裝已發佈的套件,以從您的應用程式執行相同的離線檢查。建立驗證引擎一次,重複使用於多個範本,並處理每個範本傳回的結構化診斷。您也可以透過程式庫 API 設定自訂 CEL、Rego 或 Guard 規則。
| Language | 發佈的套件 | API 和範例 |
|---|---|---|
| Rust | cloudformation-validate 在 https://crates.io |
Rust API 和範例 |
| Node.js | @aws/cloudformation-validate 在 npm 上 |
Node.js API 和範例 |
| Python | cloudformation-validate 在 PyPI 上 |
Python API 和範例 |
| Go | CloudFormation Validate Go 模組 |
Go API 和範例 |
| JVM (Java 或 Kotlin) | software.amazon.cloudformation:cloudformation-validate Maven Central 上的 |
JVM API 和範例 |
如需安裝說明和支援的平台,請參閱語言繫結安裝指南
如需每種語言的完整範例和每個 API 指南的連結,請參閱 GitHub 上的專案文件中的內嵌為程式庫
搭配 使用 AWS CDK
如果您使用 AWS CDK,則不需要單獨安裝驗證器。 AWS CDK 建構程式庫包含預設 CloudFormationValidatePlugin,會在合成 CloudFormation 範本後自動執行相同的檢查。
cdk synth
CDK 會報告可能的部署失敗和最佳實務調查結果及其驗證結果。您可以在想要新增自訂 Rego 或 Guard 規則CloudFormationValidatePlugin時明確設定 。
如需外掛程式組態、確認和驗證報告,請參閱 AWS CDK API 參考中的範本和政策驗證。
了解驗證範圍
如需本機驗證的限制和部署前要採取的步驟,請參閱 了解驗證範圍。