最近從 Terraform 轉戰 CloudFormation … 所謂工欲善其事必先利其器,先把 VSCode 裝好 CloudFormation 必要的 extension。
YAML 格式縮排
CloudFormation 有兩種格式 JSON / YAML,其中 YAML 算是比較好讀的格式,但還是會遇到行數一多陷入縮排的洞裡 …
- indenticator:顯示你當前的縮排,會有一條基準線輔助對齊。
- Indent-Rainbow:可以把每個縮排都顯示不同的顏色,更容易辨識。
如果有用 Indent-Rainbow 建議在 user setting 開啟高亮 indenticator.inner.showHighlight
{
"indenticator.inner.showHighlight": true
}
Sort lines 按字母排序 IAM Policy
IAM Policy 應該會很常按需求異動,有些強迫症的人 (例如我) 會把字母按照 A-Z 排序,Sort lines 在這塊可以幫上忙
快速搜尋 CloudFormation documentation
透過 VSCode Tasks 快速找到 CloudFormation documentation,這部份算是還好,基本上在寫 CloudFormation 的時候 Documentation 應該都是開著的 … 應該只有在初期的時候好用而已。
在當前目錄建立 .vscode/tasks.json,定義兩個 label
- CF Type Search:透過選擇(selectedText)的字樣搜尋 Documentation
- CF Resource List:直接打開 resource type 的文件
{
"version": "2.0.0",
"tasks": [
{
"label": "CF Type Search",
"type": "shell",
"command": "open -a \"Google Chrome\" \"https://docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=%22${selectedText}%22&x=0&y=0&this_doc_product=AWS+CloudFormation&this_doc_guide=User+Guide&doc_locale=en_us#facet_doc_product=AWS%20CloudFormation&facet_doc_guide=User%20Guide\"",
"problemMatcher": [],
"presentation": {
"reveal": "never"
}
},
{
"label": "CF Resource List",
"type": "shell",
"command": "open -a \"Google Chrome\" \"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html\"",
"problemMatcher": [],
"presentation": {
"reveal": "never"
}
}
]
}
上面的範例是開啟 Google Chrome .. 所以沒裝 Chrome 就會不能用。
CloudFormation linting
寫 Infra as Code 當然少不了 Lint 工具,CloudFormation 可以用 cfn-python-lint 去驗證程式碼。
- 先安裝 cfn-lint
$ pip install cfn-lint
$ cfn-lint --version
- VSCode 也要安裝 vscode-cfn-lint plugin。
透過一些工具的輔助讓 CloudFormation 可以快速開發是工程師必要之物
References