$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

CloudFormationでVPCを構築し、CloudFormationに入門する方法を知った

最近CloudFormationに入門しようとしている。それで、AWS CloudFormation への入門に「Amazon Web Services 基礎からのネットワーク&サーバー構築」を使ってみた - えいのうにっきの記事をみて、これはいい入門の仕方だなあと思い、「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」を購入して、CloudFormationで構築するということをやっている。

今回はChapter2の「ネットワークを構築する」をCloudFormationでやってみた。

CloudFormationの概念や使い方を理解するには

やってみようとすると、まずCloudFormationの概念を理解するのに戸惑う。公式のチュートリアルを見ても、???となるだけだった。そこで参考にしたのが以下の資料。

dev.classmethod.jp

ただし、これを読んだだけだと、「入門3 VPCにサブネットやルーティングテーブルやインターネットゲートウェイを構築する」の設定ファイルの記述量がそこそこある & 僕はVPCをちゃんと触ったことが無かったなどの理由から、ちゃんと理解は出来なかった。

そこで、一気にVPCを全部構築するのではなくて、「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」で解説されているコンソールでの操作を模倣するように、一つずつリソース定義して実行を繰り返してみた。これをすると、だいぶ理解が進んで、自分で考えてCloudFormationの設定ができるようになった。

こういう感じで進めていくのがおすすめ。また https://github.com/a-know/aws-network-basicid:a-know さんが構築していった記録が残っているので、これを見ると作ってく様子をトレースできるのでおすすめ。

CloudFormationでVPCの設定

YAMLで定義した。https://github.com/shibayu36/aws-network-basis/pull/1 のPRのとおり。

どういう流れで進めていったかというと、

  • 例えば、本でVPCを作る操作をしているのを見るとすると
  • 本の操作をコンソールで実際にやってみて、VPCを作る
  • 「cloudformation vpc」でググると、AWS::EC2::VPC - AWS CloudFormationが出て来る
  • これに従って、自分で定義を書いてみる
  • CloudFormationで実行する
  • 自分でコンソールで作ったのと、CloudFormationで作ったものの情報を見比べて、同じものが出来ていることを確認する

という流れで、パブリックサブネット作成や、インターネットゲートウェイの作成・アタッチなどなどを一つずつ行った。一気にやると何がおかしくなったのかわからなくなるので、一つずつ記述して実行してみるというのがポイント。

まとめ

今回は「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」のChapter2の「ネットワークを構築する」をCloudFormationでやってみた。CloudFormationの考え方を理解できて非常に良かった。