エンジニア

2022.09.29

これからAWS CloudFormationを始めるあなたに伝えたい5つのこと(前編:構築・運用編)

これからAWS CloudFormationを始めるあなたに伝えたい5つのこと(前編:構築・運用編)


ごきげんよう!ハンズラボの小川です。

みなさん、AWS CloudFormation使っていますか?
AWS CloudFormationは、IaC(Infrastructure as Code)を実現するサービスです。

使い慣れると非常に便利なサービスですが、数あるAWSサービスの中でもテンプレートの作成や
運用等の面で、やや取っ付きにくさのあるサービスではないでしょうか(個人の見解です)。

そこで、この記事では、CloudFormationのちょっとしたコツを前編・後編の2回に分けてお送りします。

前編となる本記事では、CloudFormationを利用した環境構築や運用に関するコツをお伝えします。
「先にテンプレートの作成編じゃないの?」と思われた方も多いかもしれませんね。
でも今回ご紹介するコツは、作成のコツにも関連しています。さっそく見ていきましょう!


番外編:Serverless Frameworkを利用する


いきなりの番外編で大変恐縮なのですが、もし可能であればServerless Frameworkの利用をぜひ
ご検討ください。

Serverless Framework(公式サイト)は、その名前の通りサーバーレスなアプリケーションを簡単に開発、デプロイするためのツールです。

Serverless Frameworkを使うと受けられる恩恵には、
・プラグインが使える
・一部の設定をServerless Frameworkがよしなにやってくれる
といったものがありますが、個人的に特に推したいポイントが「デプロイコマンドが短くて済む」です。

CloudFormationのデプロイコマンドは、正直少々長いです。
Serverless Frameworkの場合は、最低限だと「sls deploy」で済んでしまいます。短いですね!

Serverless Frameworkは、名前に「サーバーレス」とついていますが、サーバーレスな環境しか構築できないわけではありません。EC2のようなリソースも構築が可能です。しかも、リソース部の記述にはCloudFormationテンプレートをほとんどそのまま利用できます。

サーバーレス環境を構築するのであればもちろんですが、そうで無い場合でも、ぜひServerless Frameworkの利用を検討してみてください。

コツ番外編:Serverless Frameworkでデプロイを簡単に!


コツ1:こまめにデプロイする


さて、ではいよいよコツの1つ目です。
テンプレートが書けたな、と思ったら、こまめにデプロイしてみましょう。

CloudFormationテンプレートは慣れないうちはややこしく、デプロイ時にエラーが発生したり
構築した環境の設定が意図しないものになったり、ということもままあります。

ですので、もしあなたが、開発環境のような自由に触れるAWSアカウントをお持ちでしたら、
作成したCloudFormationテンプレートをこまめにデプロイすることをおすすめします。

えっ、デプロイにお金がかかるんじゃないかって?
いえいえ、その心配は無用です。

あなたがCloudFormationで管理したいリソースのタイプが「AWS::*」「Alexa::*」「Custom::*」の
いずれかであれば(大半は「AWS::*」でしょう)、CloudFormationそのものは無料で利用できます!
どんどんデプロイしましょう。

(デプロイが正常に完了してAWSリソースが無事に作成されたら、そのリソースにはリソースに応じた
所定の料金が発生しますので、その点にはご注意くださいね。)

デプロイ時にエラーが発生してしまった場合は、AWSマネジメントコンソールにサインイン後、CloudFormationのコンソールから「スタック」 -「該当のスタック」を選んで「イベント」タブを
見てみましょう。発生したエラーの内容や原因を確認できます。原因が潰せたら、再デプロイ!
基本はこの繰り返しです。

デプロイが正常に完了した場合も、一度マネジメントコンソールから一通り設定を確認しましょう。
設定が漏れていたり意図しない値になっていた場合はテンプレートを修正して再デプロイでOKです。

自由に触れるAWS環境が無い場合は、テンプレートの検証だけでも行うと安心です。
検証コマンドではリソースや設定の妥当性までは確認できませんが、構文が合っているかどうかは
確認できます。

コツ1:こまめにデプロイしてエラーを潰す!


コツ2:リソース更新時の動作にご用心


次に、2つ目のコツです。
リソースの更新を行う際は、提供しているサービスに影響が出ないか確認しましょう。

AWSリソースのプロパティの中には、更新すると一時的なサービスの中断やリソースの置換が
発生するものがあります。意図せぬ影響を未然に防ぐため、リソースの更新を行う際は更新時
どのような挙動になるかを確認しておきましょう。

各プロパティの更新時の挙動は、リファレンスの「Update requires」部分で確認できます。
例えば、EC2インスタンスの場合
・IamInstanceProfileの更新 → Update requiresは「No interruption」なので、サービスの中断なし
・ImageIdの更新 → Update requiresが「Replacement」なのでリソースが置換される
といった具合です。

更新時の挙動についてはAWSの公式ドキュメントにも記載があるので、ぜひご確認ください。

また、いきなり更新をかけるのではなく、一度変更セットを作成するのもおすすめです。
変更セットを作成すると、マネジメントコンソールなどで「その変更によって各リソースに
どのような影響が発生するか」を確認できるので、うっかり大事なリソースを置換しちゃった!
といった事故を未然に防げます。

コツ2:リファレンスや変更セットを確認して、予期せぬサービス影響を防ぐ!


運用・構築編はここまで!
次の記事ではいよいよテンプレート作成時のコツをご紹介していきます。お楽しみに!

一覧に戻る