77Lifeworkベータ版

77Lifeworkベータ版

ITツール開発・インフラ構築をメインとして、その他投資等雑記用のブログです。ブログの内容が少しでも皆様の参考となれば嬉しいです。

【AWS】rainを用いてCloudFormationの利用を効率化する

はじめに

AWS環境のインフラ構築においては、CloudFormationを利用しInfrastructure as Code(IaC)による運用をしている例も多いです。
CloudFormation運用を支援するCLIツール「rain」がシンプルで便利だったので、利用方法などを書いていきます。

rainとは

rainは、CloudFormationテンプレートの管理・デプロイを補助するオープンソースCLIツールで、コミュニティを中心に広く利用されています。
主な機能として、以下が挙げられます。

  • テンプレートの整形・検証(fmt、validate)
  • 差分確認(diff)
  • デプロイの実行(deploy)
  • スタック情報の確認・管理(ls、statusなど)

rainのインストール方法

以下より、動作させる環境に応じたものをダウンロードし、展開します。
github.com

今回は、AWS上のCloudShellで実行できるようにセットアップします。AWSコンソールにサインインし、CloudShellを起動、以下のコマンドを実行しましょう。(以下をシェルスクリプトとしてファイル化した上で、実行すると便利です)

#! /bin/sh
# Version
VER="v1.23.0"

# Install
curl -OL https://github.com/aws-cloudformation/rain/releases/download/${VER}/rain-${VER}_linux-amd64.zip 
unzip rain-${VER}_linux-amd64.zip
sudo mv rain-${VER}_linux-amd64/rain  /usr/local/bin/
rm -rf rain-${VER}_linux-amd64*

インストール後、以下のようにバージョンが正しく表示されればOKです。

aws-cfn-code $ rain --version
Rain v1.23.0 linux/amd64

rainの使い方

まず、スタックのデプロイは以下のコマンドにて実行できます。

rain deploy <CFnスタック名> <CFnテンプレートファイル名>

rain fmtはYAML/JSONのテンプレートを整形し、可読性を向上させます。
rain validateではCloudFormationの構文チェックにより、実際にデプロイする前にエラーを検出可能です。

rain fmt <CFnテンプレートファイル名>
rain validate <CFnテンプレートファイル名>

rain diffは、テンプレートファイルと既存のスタックとの差分を出力します。これにより、更新対象リソースを確認できます。

rain diff <CFnスタック名> <CFnテンプレートファイル名>