はじめに

こんにちは。澤井です!
最近AWSを触る機会が増えました。

なかでもAWS CloudFormationを触っています。
AWS CloudFormationは、IaCを実現するとても強力な仕組みです。

AWS CloudFormationはメリットがとても多いですが、それなりにコード量が多くなります。
他のプログラム言語同様に開発環境を整えると開発体験が大きく向上します。
今回はすぐにできる開発環境整備について紹介したいと思います。

またCI/CDなど、AWSの実務フローではAWS CLIを使用する機会が多いかと思います。
合わせてAWS CLIやAWS Copilot CLIなどのコマンド補完についても紹介したいと思います。

具体的に紹介するツールは、以下のとおりです。

  • AWS CloudFormationのlint&コード補完
  • AWS CLI&AWS Copilot CLIのコマンド補完

AWS CloudFormationのlint&コード補完

開発体験を向上させるツールとして、lintコード補完が挙げられるかと思います。

AWS CloudFormationでもlintコード補完を使用できます。

今回は利用者の多いVisual Studio Code(以下VS Code)で、上記ツールを使用する方法を紹介したいと思います。

導入フローは、以下の通りです。

  1. VS Code拡張機能 YAMLをインストール
  2. cfn-lintをインストール
  3. VS Code拡張機能 CloudFormation Linter をインストール
  4. CloudFormation Linterとcfn-lintを連携

cfn-lintのインストール方法は、下記記事で分かりやすく紹介されています。
https://aws.amazon.com/jp/blogs/news/git-pre-commit-validation-of-aws-cloudformation-templates-with-cfn-lint/

CloudFormation Linterとcfn-lintの連携は、CloudFormation Linterの設定画面でcfn-lintのパスを指定するだけです。
具体的には以下キャプチャーを参照にしてください。

設定_—_quartetcom_github_io

またCloudFormation Linterは、コード補完も提供しており、
内部でcloudformation-template-schemaが使用されているようです。

以上でVS Codeを使ってAWS CloudFormationのlintコード補完ができるようになります。

AWS CLI&AWS Copilot CLIのコマンド補完

AWSはコマンドラインツールとして、AWS CLIやAWS Copilot CLIを提供しています。
コマンドは、補完ができると便利です。

MacでのZshの使用を前提に、AWS CLIとAWS Copilot CLIのコマンド補完について紹介します。

AWS CLI

以下を参考にして、.zshrcにコードを追加します。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-completion.html

autoload -Uz compinit && compinit
autoload -U bashcompinit && bashcompinit
complete -C '/usr/local/bin/aws_completer' aws

AWS Copilot CLI

Zshは共通のコマンド補完機構があります。
AWS Copilot CLIは、コマンド補完機構を使用します。

具体的には決められたパスに補完定義ファイルを配置することで、補完ができるようになります。

以下を参考にして導入します。

https://aws.github.io/copilot-cli/ja/docs/commands/completion/

簡単に導入方法をご紹介します。

$ source <(copilot completion zsh)
$ copilot completion zsh > "${fpath[1]}/_copilot" # to autoload on startup

${fpath[1]}/_copilotにAWS Copilot CLI用の補完定義ファイルが作成されます。
${fpath[1]}を、.zshrcで使用するので${path[1]}を確認しておくと良いです。

$ echo ${fpath[1]}
// .zshrcに設定するために補完定義ディレクトリを確認

.zshrcに補完定義ディレクトリのパスを設定します。
例えばecho ${fpath[1]}の値がhogeの場合、.zshrcは以下のようになります。

+ fpath=(hoge $fpath)


autoload -Uz compinit && compinit
autoload -U bashcompinit && bashcompinit
complete -C '/usr/local/bin/aws_completer' aws

以上でAWS Copilot CLIの補完ができるようになります。

まとめ

開発環境を整備することで開発体験がとても向上しました。
参考になれば幸いです。