.. include:: ../module.txt .. _section-automation-infra-devops-cloudformation-3-label: 【第23回】AWS CloudFormationを用いた基盤自動化(3)各種検証プラグインインストールと統合開発環境の設定 ------------------------------------------------------------------------------------------------------------------------------------- |br| 本連載では、以下のイメージの構成のようなマイクロサービスアーキテクチャにおける、基盤自動化環境の構築を実践していきます。 |br| .. figure:: img/automation_infra_devops_overview/MicroServiceArchitecture.png |br|  前回は、CloudFormationでのテンプレート作成を効率化するための環境構築のポイントやCLIのインストール方法を概説しました。 引き続き、テンプレートのコード補完・文法チェック等を実行する検証プラグインインストールや、統合開発環境(IntelliJ IDEA)の設定を行います。 |br|  CloudFormationのテンプレート記法のチェックを行うツールは2019年11月現在、いくつか種類がありますが、代表的なものの特徴は以下の通りです。 |br|  .. list-table:: CloudFormationのテンプレート検証機能をもつ代表的なツール :widths: 5, 5, 5, 10 * - 名称 - 提供元 - 実行環境 - 説明 * - `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があり、各々プラグインが提供されています。 |br| テンプレート記述を行う上で、特に利用を薦めたいのがcfn-python-lintとIntelliJ CloudFormationプラグインです。これらのIntelliJ IDEAでの環境設定方法について以降解説します。 |br| .. _section-cloudformation-lint-plugin-setting-label: cfn-lintのインストールとIntelliJ IDEAでのプラグイン設定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |br| cfn-python-lintは、AmazonCLIコマンド同様、pipコマンドにて、cfn-lintをインストールが可能です。 |br| .. sourcecode:: bash pip intall cfn-lint |br| インストール後、コマンドラインからcfn-lintコマンドで対象のテンプレートをパラメータに指定して実行できます。詳細は上記の表のcfn-python-lint公式ページのリンクにあるBasicUsageを参考にしてください。 コマンドラインからも実行は可能ですが、IntelliJ IDEAのエディタ上でcfn-lintコマンドが動作するよう、IntelliJでプラグインのインストールを行います。 |br| .. warning:: 2019年9月現在、IntelliJ IDEAの最新バージョンは2019.2ですが、`cfn-lintの最新版v0.1.6では正常に動作しない状況 `_ が続いているようです。筆者の手元の環境ではIntelliJ 2019.1では正常動作していますので、最新のFIX状況を確認しながら環境構築を実施してください。 |br| IntelliJ IDEAのPreferenceメニュー > Plugins > Marketplaceタブでcfnーlintプラグインを検索し、インストールします。 |br| .. figure:: img/automation_infra_devops_cloudformation/intellij-install-cfn-lint-plugin-1.png |br| インストール後、IntelliJ IDEAの再起動を行い、同じくPreferenceメニュー > Other Settings > CFNLintで、Enableをチェックし、上記でインストールしたcfn-lintコマンドのパスを指定します。 |br| .. figure:: img/automation_infra_devops_cloudformation/intellij-install-cfn-lint-plugin-2.png |br| 同様に、CloudFormation Pluginもインストールします。 |br| .. figure:: img/automation_infra_devops_cloudformation/intellij-install-cloudformation-plugin-2.png |br| インストール後、再起動した後、エディタ上でテンプレートを作成していくと、コード補完・サジェストやテンプレートのバリデーションが有効になります。 |br| .. figure:: img/automation_infra_devops_cloudformation/intellij-editor-with-lint-check.png |br| 記載が誤っていると、下記の通り自動でエラー検出され、該当箇所がハイライトされます。 |br| .. figure:: img/automation_infra_devops_cloudformation/intellij-editor-with-lint-check-error.png |br| 以上で、IntelliJ IDEAでテンプレートをチェックツールで検証しながら、効率的に実装できる環境が整いました。次回は、テンプレートの基本的な記述要領や、作成したテンプレートをIntelliJ上から実行するヘルパースクリプト、エラー発生時のデバッグの方法について概説します。 |br| 著者紹介 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理 .. figure:: img/automation_infra_devops_overview/pic_image01.jpg 金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。 Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなど様々な開発プロジェクト支援にも携わる。 `2019 APN AWS Top Engineers & Ambassadors `_ 選出。