本連載では、以下のイメージの構成のようなマイクロサービスアーキテクチャにおける、基盤自動化環境の構築を実践していきます。
前回は、CloudFormationでのテンプレート作成を効率化するための環境構築のポイントやCLI(Command Line Interface)のインストール方法を概説しました。続く今回は、テンプレートのコード補完/文法チェックなどを実行する検証プラグインのインストールや、統合開発環境「IntelliJ IDEA」の設定について説明します。
CloudFormationのテンプレート記法のチェックを行うツールは2019年11月現在、いくつか種類がありますが、代表的なものとその特徴は以下の通りです。
名称 | 提供元 | 実行環境 | 説明 |
---|---|---|---|
validate-templateコマンド | AWS | Amazon CLIコマンド | CLIが提供するテンプレートの検証コマンドです。公式ページにも記述がある通り、テンプレートの構文を確認するためのもので、リソースに対して指定したプロパティの値などが有効であることを確認するためのものではありません |
IntelliJ CloudFormationプラグイン | IntelliJ ThirdParty | IntelliJ IDEA | IntelliJ IDEAで動作するテンプレート検証プラグインです。IDEAのみならずJetBrains社で提供されているIDEであれば動作します。ResourceTypeとPropertiesの定義/参照検証などを実行します。ただし、同プラグインでは、簡単な構文チェックなどは行えますが、必須/任意パラメータの有無などの検証はできません |
cfn-python-lint | AWS | Pythonがインストールされた実行環境/各種エディタ | Pythonがインストールされた環境で実行可能なテンプレート検証Linterです。必須/任意パラメータの有無などのテンプレートの検証機能に加え、エディタ上でコード補完/サジェスト機能があります。サポートするエディタとして、Atom、Emacs、NeoVim、SublimeText、IntelliJ IDEA、VisualStduioがあり、各々プラグインが提供されています |
テンプレート記述を行う上で、特にお薦めなのがcfn-python-lintとIntelliJ CloudFormationプラグインです。以降では、これらのIntelliJ IDEAでの環境設定方法について解説します。
cfn-lintのインストールとIntelliJ IDEAでのプラグイン設定
cfn-python-lintは、AWS CLIコマンド同様、以下のようにpipコマンドでインストール可能です。
pip intall cfn-lint
インストール後、コマンドラインからcfn-lintコマンドで対象のテンプレートをパラメータに指定して実行できます。詳細はcfn-python-lintの公式サイトにある「BasicUsage」を参考にしてください。コマンドラインからも実行は可能ですが、IntelliJ IDEAのエディタ上でcfn-lintコマンドが動作するよう、IntelliJでプラグインのインストールを行います※。
IntelliJ IDEAのPreferenceメニュー > Plugins > Marketplaceタブでcfn-lintプラグインを検索し、インストールします。
インストール後、IntelliJ IDEAの再起動を行い、同じくPreferenceメニュー > Other Settings > CFNLintで、Enableをチェックし、上記でインストールしたcfn-lintコマンドのパスを指定します。
同様に、CloudFormation Pluginもインストールします。
インストール後、再起動し、エディタ上でテンプレートを作成していくと、コード補完/サジェストやテンプレートのバリデーションが有効になります。
記載が誤っていると、下記のように自動でエラー検出され、該当箇所がハイライトされます。
※ 本稿執筆時点のIntelliJ IDEAの最新バージョンは2019.2ですが、cfn-lintの最新版であるv0.1.6が正常に動作しない状態が続いているようです(参考:GitHub Issues「Incompatible with Intellij 2019.2 #7」)。筆者の手元の環境でIntelliJ 2019.1では正常に動作することを確認しているので、最新のFIX状況をチェックしながら環境構築を実施してください。
* * *
以上で、IntelliJ IDEAでテンプレートをチェックツールで検証しながら、効率的に実装できる環境が整いました。次回以降は、テンプレートの基本的な記述要領や、作成したテンプレートをIntelliJ上から実行するヘルパースクリプト、エラー発生時のデバッグの方法、マルチリージョン環境等含めテストを行う環境構築の方法について解説します。
著者紹介
川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理
金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。
Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。2019 APN AWS Top Engineers & Ambassadors選出。
本連載の内容に対するご意見・ご質問は Facebook まで。