🤖

CloudFormation道 ~Part1~

2021/07/28に公開

はじめに

皆さん、CloudFormationはお使いでしょうか?
筆者はAWS歴1年になるのですが、AWSリソースの構築にはCloudFormationを使っていました。最近ではTerraformでの構築も主流になってきていますが、PJの都合上、CloudFormationで構築することが大半でした。CloudFormationの操作やテンプレートの記載などにはだいぶ慣れましたが、ここで復習として改めて、CloudFormationについてまとめたいと思います。

CloudFormationとは

CloudFormationとは、yamlやjsonで記載したテンプレートを元にAWS環境にリソースを自動的に構築するサービスです。画面でぽちぽちとリソースを作成すると人的ミスやが起きたり、同じ構成を複数作成する時にかなりの労力を使うことになりますが、CloudFormationは、IaC(Infrastructure as Code)のため、一度コードとしてあるべき状態を定義してしまえば、AWSリソースの管理や、運用、構築がとても楽に実現することができます。筆者のPJでは、本番環境の他に、検証環境を数面用意する必要があったのでCloudFormationを利用することで迅速な構築を行うことができました。
CloudFormation_image

CloudFormationを利用するまで

筆者がCloudFormationを使うまでに行ったことや、準備について記載します。

CloudFomationの理解

CloudFormationとはなんだ?どういうサービスなんだ?といった疑問を払拭するために以下の動画と資料を見ました。

BlackBletはAWSサービスの概要を掴むには、とても良い資料です。お昼休みにご飯を食べながら見ていました。公式ドキュメントは、テンプレートファイルを記載する時に各サービスで定義するプロパティや、文法などを調べる際に利用していました。

各種ツールのインストール

筆者はCloudFormationのテンプレートを記載する時にはVSCodeを使用しているのですが、VSCodeにはCloudFormationのテンプレートを記載する時にサポートしてくれる便利なプラグインがあります。

  • Cloudformation Liner
    記載したテンプレートの整合性チェックを行ってくれるツールです。文法の記載ミスなどを指摘してくれます。
  • CloudFormation
    テンプレート記載時のプロパティの入力補完を行ってくれるツール

テンプレート保管場所の準備

CloudFormationでリソースを作成するときの、テンプレートファイルの利用方法として

  1. S3に保管してあるものを利用する
  2. ローカルからファイルをアップロードする
    の2パターンがあります。チームで開発するときは、最新のテンプレートファイルを他のメンバーも閲覧したり編集したりしたいので、S3に保管します。
    そのため、テンプレート保管用のS3バケットを用意します。
    筆者は、my-devopsといったバケットを作成して、cloudformation用のプレフィックスを用意しました。
    S3バケットの用意

作業環境

CloudFormationのテンプレート作成->リリースまでのフローは以下の図のように行っていきます。
CodePipelineを利用したCICDでリリースまで行うフローもありますが、それはまた今度に、、、
S3へのテンプレートファイルアップロード、スタックの作成・更新・削除などはAWSCLIから行います。
CloudFormation_work

終わりに

今回はCloudFormationについての概要や利用するまでに準備するこ都などを中心に解説していきました。
次回からは簡単なインフラ構成を作成するテンプレートの作成と解説を行っていきたいと思います。
ご覧いただきありがとうございました。

Discussion