SAMのtemplate.yamlを記述する際に、公式ドキュメントを見ながら書くことが多かったのですが、あまりに非効率だったので環境を整えようと思いました。
VSCodeを利用しているので、VSCode前提のお話です。
続き↓
要約
CloudFormationの拡張機能を 使用&少しカスタマイズ してSAMテンプレートをサクサク書こう
SAMはCloudFormationの拡張
SAMテンプレートはCloudFormationテンプレートの拡張です。
参考:SAM公式ドキュメント
まず、CloudFormationで利用できる文法はSAMテンプレートでも利用することができます。
CloudFormationの拡張機能をVSCodeに導入すれば、CloudFormationで記載できる部分は導入できることになります。
CloudFormationの拡張機能は、無難にaws-scripting-guy.cform
を入れておけば良いでしょう。
SAM独自の記述方法は独自にスニペットを記載していく
VSCodeでは独自にSnippetを記載することができます。
VSCodeの ファイル > ユーザー設定 > ユーザースニペット にて、独自のSnippetを記述可能です。
書き方の参考:snippetsの書き方
こちらで作成したxxxxxxxxx.code-snippetsで、例えば以下のように記載をします。
{
"sam-lambda": {
"prefix": "sam-lambda",
"body": ["AWS::Serverless::Function"],
"description": "Lambda Function"
}
}
拡張機能でも同じように実現している
さて、ここからは余談です。
私が暇なときにやろうかなーと思っている話です。
拡張機能のスニペットも、先ほどと同じようにjsonファイルに記載して実現しています。
以下のリンクを見ていただければわかるかと思います。先ほど紹介したCloudFormationの拡張機能のgithubリポジトリです。
https://github.com/aws-scripting-guy/cform-VSCode/blob/develop/snippets/yaml-snippets.json
よって、SAMテンプレートも同様にスニペットの設定ファイルを記載し、VSCodeの拡張機能として出せば同じように使えるようになります。
現在SAMテンプレートの入力補完をしてくれるような拡張機能は、調べた限りでは1つしか存在せず、その1つも実用するには完成度が高くない感じでした。
なので、今後合間を縫ってこちらのsnippetsを作成していこうかと思っております。
今回は私としては中間報告的な記事でした。
参考資料
続き↓