はじめに
本記事はJapan AWS Ambassadors Advent Calendar 2023の5日目の記事になります。
先週はre:Inventに行っていてAWS漬けの毎日を送っていました。
帰国して膨大なメールを前に途方にくれているところです。。
さてアドカレ5日目は私の好きなサービスであるCloudFormationのネタを記載したいと思います。
質問
この記事を読んでいる皆さんは普段CloudFormationを利用する際に静的解析を実施していますか?
そんなの当たり前っしょ!って方はこの記事のコメント欄にお勧めのツールやこんなやり方あるよ~をドシドシ記載してもらえればと思います。
エっ何それ?今までやった事ないんだけど・・や静的解析ってそもそも何すんねんって方はこのブログを読んでCloudFormationの静的解析に一歩足を踏み入れてもらえればと思います。
静的解析をやる目的
一言で言えばコードの品質を上げる為です。
私はSier(システムインテグレータ)という仕事上、お客様の本番ワークロードを触る機会が多いです。
AWSのベストプラクティスに準拠するのであれば本番・開発・ステージングといわゆる本番環境と同等の環境を用意して、本番環境への変更の前にその同一環境でテストする事が求められますが、全てのAWSユーザがそうしているかと言うと、コストの面であったり、管理・運用といった様々な要因があり、本番環境相当の環境が準備できていないユーザもいます。そういったユーザに対しては本番ワークロードに直接変更を加える事になる為、当たり前ですが失敗する事が許容されません。ではどうしたらいいのかというとコードをデプロイする直前まで、可能な限りリスクを潰す事が求められます。そのリスクを潰す手段として静的解析が存在します。今回はそのリスクを潰すツールの1つとして私が利用した事のある静的解析ツールを紹介したいと思います。
AWS CloudFormation Linter
私が紹介するツールはcfn-lintになります。
https://github.com/aws-cloudformation/cfn-lint
利用方法
cfn-lintでできること
VSCodeの場合作成したテンプレートを選択して View->Problems (Ctrl+Shift+M)でチェックできます。
重要なエラー
修正必須
警告
注意が必要、修正が要らない場合もある
インフォメーション
知って損はない情報
cfn-lint対応エディタ
以下のエディタをサポートしてます。
ちなみに私はVSCodeのプラグインを入れて使ってます。
まとめ
ツールを使う意義というところでは人間は完璧ではないので、最後は機械的にチェックする事で人間の見落としも含めてレビューの質を高めるところが目的であると考えます。人がチェックする場合はチェックシートを作成してレビュー観点一つ一つをチェックするといったやり方を私自身した事がありましたが、ツールを利用する事でそういった手間をいい意味で省いて開発者もレビュアーも双方で幸せになれますね。この記事をきっかけに静的解析やってみよっかな?って思った人がいたら幸いです。
P.S.
re:InventにてVSCodeからApplication Composerが利用できるようになったと発表がありました。
聴くところによるとVSCodeからダイレクトに利用可能でD&Dでアイコンを置いていくだけでCFnテンプレートが自動生成されていくそうです。
これはいままでゼロベースまたはサンプルテンプレートベースにCFnを書いていた自分にとっては凄く便利な統合がされたな!といった感想です。
まだ試してみていないので確かな事は言えないですが、以前Application Composerがリリースされた当初は利用可能なサービスに制限があったので、今回の機能アップデートによって可能であれば全てのサービスが利用できるようになっているとよりgoodだと思いました。
利用してみた感想は追ってブログ書こうと思います。
さて明日のアドカレ6日目はGEEKFEEDのAmazon Connect大好き西山さんです。