60
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS CloudFormation を開発・テストする際に役立つツール纏め

Last updated at Posted at 2021-04-10

#はじめに#

CloudFormation テンプレートを作成する際に、一から作成するのではなく、

などを利用し、独自にカスタマイズし作成するかと思います。

ただし、このような問題に

  • 作ってみたはいいけど、必要なリソースや必須のパラメータが足りなく、いざデプロイしようとしたら、動かない。
  • そもそもあまり理解していない、触ったことないサービスなのに、いきないテンプレートで作成するのには、レベルが高い。

などといったことがあると思います。

#開発#

##エディタ##

個人的に利用しているエディタは、Visual Studio Code です。
以降は、VS Code を利用する前提で書いていきます。

なお、事前準備としてデフォルトのままだと!Sub, !RefなどのCloudFormation固有のスキーマがYAMLの構文エラーとなるため、settings.json に次の記事の設定をしておくと構文エラーとならずに済みます。

##cfn-lint##

cfn-lint は入力した値の整合性をチェックし、不要なパラメータがある、必須のパラメータの定義がされていない場合に warning や error で検出してくれます。

導入手順は⬇︎の記事に書かれていたので、割愛します。

次の例では、存在しないセクションがあると、エラーを出してくれています。
スクリーンショット 2021-04-07 22.21.19.png

開発時に適宜確認できた方が効率が上がると思います。

##自動補完##

CloudFormation template schema を利用することで、自動補完してくれます。
入力のミスも防いでくれますし、必須のパラメータもわかるのでとても便利かと思います。
このような拡張機能を利用していかないと一から作成するには時間がかかりますし、そもそも無理です。

拡張機能からインストールすることが可能であり、反映にはVS Codeを再起動する必要があります。

スクリーンショット 2021-04-07 20.38.26.png

利用方法は簡単。例えば、vpc と打ち、vpc を選択すると、

スクリーンショット 2021-04-07 20.46.32.png

vpc のパラメータを表示してくれます。

スクリーンショット 2021-04-07 20.46.46.png

#テスト#

##cfn-nag##

テンプレートのセキュリティ的な問題を開発プロセスの初期段階で気づくことができるサードパーティのOSSツールです。

インストール手順は⬆︎のGitHubに公開されている通りです。

例えばMACの場合は、brewで必要なものをインストールする。

brew install ruby brew-gem
brew gem install cfn-nag

cfn_nag_scan で実行した結果、⬇︎の通り VPC Flow log が添付されている必要があるという Warnings が表示されました。

$ cfn_nag_scan --input-path vpc.yaml
------------------------------------------------------------
vpc.yaml
------------------------------------------------------------------------------------------------------------------------
| WARN W60
|
| Resources: ["myVPC"]
| Line Numbers: [9]
|
| VPC should have a flow log attached

Failures count: 0
Warnings count: 1

##CloudFormation Guard##

独自にルールを定義し、ポリシーへの適合性をチェックするツールです。

試されて見たい方は、classmethodさんが試して見たシリーズを書かれている様なので、そちらから。
以下2つのルールを定義しているようです。

  • EBSボリュームで暗号化がされていること
  • ボリュームサイズが100GB以下であること

##TaskCat##

複数リージョンに同じテンプレートでデプロイする際に簡単にテストできるツールです。
1つのテンプレートやスタックをテストしたのではわからない問題を検知することができます。

こちらも試されて見たい方は、classmethodさんが試して見たシリーズを書かれている様なので、そちらから。

#その他#

##former2##

既存のリソースをテンプレート化してくれる大変優秀なツールです。
※AWS公式のツールではありませんが、blackbeltの資料ややreinvent などの登壇でも紹介されています。

テンプレートを一から作成するのはハードルが高い!
動作確認のためにコンソールから作成して、動作確認が取れたら一からテンプレートを作成するのには手間がかかる。
といったケースに向いていると思います。

former2のサイトにアクセスする。

1.Introduction
Setup >> Introduction より、利用するブラウザの拡張をインストールする。(私は今回、Chrome を利用しました。)

former2-1.png

2.Credentials
ReadOnlyAccess を付与したIAMユーザを準備して認証情報を取得しておき、credentials を設定します。

下記2つを設定しておけば、動作はします。

  • Access Key
  • Secret Access Key

今回設定はしていませんが、一時的なセキュリティ認証情報を埋め込むといったことも可能なようです。

  • Session Token
  • Assumed Role ARN

スクリーンショット 2021-04-09 19.00.48.png

3.Parameters
今回は特別設定していません。
要するにCloudFormation の Parameters セクションです。

4.Settings
今回はデフォルトの状態から、Enable Related Resourcesを on の状態にしました。
スクリーンショット 2021-04-10 16.58.13.png

テンプレート化したいリソースを選択すると、先程Enable Related Resourcesを on にしたことより、関連するリソースも拾ってくれるので、「Add Selected」 で追加し、「Generate」をクリックします。
スクリーンショット 2021-04-10 17.13.59.png

もう見ての通りですが、これでテンプレート化してくれるだけです。
スクリーンショット 2021-04-10 17.17.09.png

また、組み込み関数擬似パラメータにしたほうがいい箇所やいい感じに出力してくれる点が便利です。

"arn:aws:ec2:ap-northeast-1:123456789012:vpc/${MyVPC}"

⬇︎

"arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${MyVPC}"
60
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?