#はじめに
これからのクラウドエンジニアはAWSができるだけではだめで、
CloudFormation(以下CFn)を使いこなしInfrastructure as Codeを常に意識しなくてはいけないのではないか!!!
と思い立ったのでCFnをYAML形式で書き始めました。
仕事でVSCodeを使っているので(個人的に)快適な環境を構築したのでメモとして残させていただきます。
これからCFnを書き始める方々の一助になれば幸いです。
#CloudFormationってなんやねん
AWS内の構成管理をCodeで行えるという代物です。
全てをCFnで行えるわけではありませんが、多くのサービスは網羅されているようです。
同じ構成のVPCをたくさん作る必要がある
といった場合にも活躍すると思われます。
詳しくは下記を参考に...
AWS公式
#なぜYAMLで書くのか
CFnはYAML/JSON形式に対応しています。
しかし、JSON形式は{ }
がかなり多くなってわかりにくいですし、
何よりもコメントアウトが残せないのがつらいです。
自分一人で書く分には問題ないのですが、
チームで書く場合や引き継ぐ場合に無駄なコストが発生するので私はYAML推しです。
#環境構築
動作環境
- Windows10
- 64ビット
VSCodeのインストール
公式サイトまたは下記からダウンロードできます。
拡張のインストール
VSCodeの言語モードをYAMLに変更してstrat
と入力するだけでCFnの骨組みをざっくりと作成してくれるという便利な拡張です。
インストールして有効化するだけでOKです。
2.cfn-lint
CFnのエラー等を教えてくれる便利ツールです。
入力ミス等はだいたいこれで撃退できます
pip
を使ってインストールします。
pip install cfn-lint
※Pythonのインストールは下記を参考にしてください。
Pythonインストール(Win10)編
settings.jsonにフルパスを追加します。
VSCodeのトップ画面でCtrl + ,
右上の**Open Settings(JSON)**を選択します。
settings.jsonに下記を追加して保存します。
{
## cfn-lint.exe へのフルパス
## (ユーザー名は適宜変更して、コメント分は削除してください)
"cfnLint.path": "C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python38-32\\Scripts\\cfn-lint.exe"
}
3.YAML
YAML構文自体のチェックを行ってくれます。
CFn特有のタグはエラーとして認識されてしまうので下記をsettings.jsonに追加します。
{
"yaml.customTags": [
"!Ref",
"!Sub scalar",
"!Sub sequence",
"!Join sequence",
"!FindInMap sequence",
"!GetAtt scalar",
"!GetAtt sequence",
"!Base64 mapping",
"!GetAZs",
"!Select scalar",
"!Select sequence",
"!Split sequence",
"!ImportValue",
"!Condition",
"!Equals sequence",
"!And",
"!If",
"!Not",
"!Or",
"!And sequence",
"!If sequence",
"!Not sequence",
"!Equals",
"!Or sequence",
"!FindInMap",
"!Base64",
"!Join",
"!Cidr",
"!Sub",
"!GetAtt",
"!ImportValue sequence",
"!Select",
"!Split"
]
}
インデントがカラフルになって見やすいです。
拡張をインストールして有効化するだけです。この辺りはお好み次第です。
インデントの深さを強調してくれます。
こちらもインストールして有効化するだけです。お好みでどうぞ。
6.Japanese Language Pack for Visual Studio Code
動作の様子
まとめ
以上、CFnを書く環境構築を行ってきました。
私もまだ入門者なので他にもおすすめ等ございましたらご教授ください。
ここまで読んでいただきありがとうございました。