本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
validate
根據 AWS CloudFormation Guard 規則驗證資料,以判斷成功或失敗。
語法
cfn-guard validate --data <value> --output-format <value> --rules <value> --show-summary <value> --type <value>
參數
-a
, --alphabetical
依字母順序驗證目錄中的檔案。
-h
, --help
列印說明資訊。
-m
, --last-modified
驗證目錄中依上次修改時間排序的檔案。
-P
, --payload
透過 以下列 JSON 格式提供規則和資料stdin
:
{"rules":["<rules 1>", "<rules 2>", ...], "data":["<data 1>", "<data 2>", ...]}
例如:
{"data": ["{\"Resources\":{\"NewVolume\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":500,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2b\"}},\"NewVolume2\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":50,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2c\"}}},\"Parameters\":{\"InstanceName\":\"TestInstance\"}}","{\"Resources\":{\"NewVolume\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":500,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2b\"}},\"NewVolume2\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":50,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2c\"}}},\"Parameters\":{\"InstanceName\":\"TestInstance\"}}"], "rules" : [ "Parameters.InstanceName == \"TestInstance\"","Parameters.InstanceName == \"TestInstance\"" ]}
對於「規則」,指定規則檔案的字串版本清單。針對「資料」,指定資料檔案的字串版本清單。
--payload
指定 --rules
且--data
無法指定 時。
-p
, --print-json
以 JSON 格式列印輸出。
-s
, --show-clause-failures
顯示子句失敗,包括摘要。
-V
, --version
列印版本資訊。
-v
, --verbose
增加輸出詳細程度。可以多次指定。
-z
, --structured
列印結構化且有效的 JSON/YAML 清單。此引數與下列引數衝突:verbose, print-json, show-summary: all/fail/pass/skip, output-format: single-line-summary
選項
-d
、 --data
(字串)
提供 JSON 或 YAML 中的資料檔案或資料檔案目錄。重複使用此選項,支援傳遞多個值。
範例:--data template1.yaml --data ./data-dir1 --data template2.yaml
對於上述的目錄引數data-dir1
,僅支援掃描具有下列副檔名的檔案:.yaml、.yml、.json、.jsn、.template
如果您指定 --payload
旗標,請勿指定 --data
選項。
-i
、 --input-parameters
(字串)
提供 JSON 或 YAML 中參數檔案的參數檔案或目錄,指定要與要用作合併內容的資料檔案搭配使用的任何其他參數。做為輸入傳遞的所有參數檔案都會合併,而此合併內容會再次與做為 引數傳遞的每個檔案合併data
。因此,每個檔案都應該包含互斥屬性,而不會有任何重疊。重複使用此選項,支援傳遞多個值。
對於目錄引數,僅支援掃描具有下列副檔名的檔案:.yaml、.yml、.json、.jsn、.template
-o
、 --output-format
(字串)
指定輸出的格式。
預設:single-line-summary
允許的值:json
| yaml
| single-line-summary
| junit
| sarif
-r
、 --rules
(字串)
提供規則檔案或規則檔案的目錄。重複使用此選項,支援傳遞多個值。
範例:--rules rule1.guard --rules ./rules-dir1 --rules rule2.guard
對於上述等目錄引數rules-dir1
,僅支援掃描具有下列副檔名的檔案:.guard、.ruleset
如果您指定 --payload
旗標,請勿指定 --rules
選項。
--show-summary
(string)
控制是否需要顯示摘要資料表。--show-summary fail
(預設) 或 --show-summary pass,fail
(僅顯示已通過/失敗的規則) 或 --show-summary none
(關閉) 或 --show-summary all
(顯示通過、失敗或略過的所有規則)。
預設:fail
允許的值:none
| all
| pass
| fail
| skip
-t
、 --type
(字串)
提供輸入資料的格式。當您指定輸入資料類型時,Guard 會在輸出中顯示 CloudFormation 範本資源的邏輯名稱。根據預設,Guard 會顯示屬性路徑和值,例如 Property [/Resources/vol2/Properties/Encrypted
。
允許值:CFNTemplate
範例
cfn-guard validate --data
example.json
--rulesrules.guard
輸出
如果 Guard 成功驗證範本,validate
命令會傳回結束狀態為 0
($?
在 bash 中為 )。如果 Guard 識別規則違規,validate
命令會傳回失敗規則的狀態報告。
example.json Status = FAIL
FAILED rules
rules.guard/policy_effect_is_deny FAIL
---
Evaluation of rules rules.guard against data example.json
--
Property [/path/to/Effect] in data [example.json] is not compliant with [policy_effect_is_deny] because provided value ["Allow"] did not match expected value ["Deny"]. Error Message [ Policy statement "Effect" must be "Deny".]