0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

インフラ構築を簡単にするAWS CloudFormation

Last updated at Posted at 2024-10-28

皆さん、こんにちは! おすすめの牛は短角牛、ITエンジニアのSkyfox(なかやま)です!
この記事を読んで、AWS CloudFormationを使ってくださると嬉しいです!

この記事について

対象者

  • 手作業でAWS環境構築するのに疲れた方
  • CloudFormationに興味がある方
  • AWSリソースをマネージドコンソールで作成したことがある方

本記事のゴール

  • CloudFormationの概要がわかること
  • CloudFormationを使用してみようかという気持ちになること

背景

AWS環境をマネージドコンソールで作成したことがある皆さん、こんなことを思ったことはありませんか?

image.png

今回の記事では、このようなお悩みを解決します。

CloudFormationの概要

AWS CloudFormationとは

AWS CloudFormationは、AWSのインフラ構成をコードで作成・管理してくれるサービスです。
いわば、あなたの作業チームの
インフラ構築・管理をしてくれる、 もう1人のメンバー
です!

メリット・デメリット

メリット

  • インフラ構成をコード化できる
    CloudFormationを使用すると、AWSリソースの設定をコードとして管理できます。
    これにより、リソースの構成が管理しやすくなり、誰でも同じ環境を構築することができるようになります。

  • 作業効率がUPする
    インフラ構成をコード化してしまえば、複数のAWSリソースを一度に自動で作成、更新、削除することができます。
    手動の設定作業が不要になるため、作業効率が大幅に上がります。

  • 環境・用途ごとに柔軟に対応できる
    AWSリソースを作成するとき、開発環境や本番環境などに合わせて、リソースの設定をすることができます。

  • 変更履歴を管理できる
    リソースの更新や変更履歴がCloudFormationで管理できるため、誰が何を変更したかがわかるようになっています。
    そのため、問題が起きたときに原因を特定しやすくなります。

デメリット

  • エラーメッセージがわかりにくい
    コード側でエラーが発生したとき、エラーメッセージがわかりにくく、原因を特定することが難しいことがあります。

  • コード化には慣れが必要
    コードを書くルールがあるため、CloudFormationを使い始めた方だと、はじめはコード作成に慣れが必要です。
    (最近は身近なAIもあるので、簡単な構成であれば、コードを書かずにできるやも)

  • 複雑なコードにすると読みづらい
    コード化するときに内容が複雑になると、読みづらく、保守が難しくなることがあります。

  • デプロイに時間がかかることがある
    多くのリソースを管理している場合、コードの変更やリソースの削除に時間がかかることがあります。

CloudFormationを使用するための前知識

前章までで、CloudFormationの概要や良さは、わかったかと思います。
それでは、実際にみなさんが使えるようになるため、ここからは必要な知識をインプットしていきましょう!

主なキーワード

  • テンプレート
    • リソースの設定や構成など、インフラ構成に必要な情報を定義するファイル
    • YAML形式 or JSON形式で書きます
    • ※前章まで「コード化」と言っていたのは、これのことです

  • スタック
    • テンプレートをもと作成されたAWSリソースのコレクション(集合体)
    • スタック単位でリソースの作成・更新・削除をおこない、一括管理ができます
    • ※テンプレートをもとに作成されたリソースたちを、まとめて管理する単位としても呼ばれています

  • 変更セット
    • スタックを更新する前に、その内容をプレビューする機能
    • どのリソースが追加・更新・削除されるかを一目で確認できます

リソース作成までの流れ

流れはたったの3ステップです。

  1. テンプレートの作成
  2. デプロイ(スタックの作成)
    ※AWS マネージドコンソール or CLI
  3. スタックをもとに設定されたAWSリソースが自動的に生成

image.png


それでは、詳しくみていきましょう!

テンプレートの書き方

テンプレートを作るときは、作りたいシステム構成を思い描いてから作りましょう!
今回はyaml形式で書いていきます。

テンプレートは、以下の7つのセクションで構成されています。
重要なのは、赤枠がついた5つです。

image.png

  • Parameters
    • ユーザーがスタック作成時に入力する値を設定するセクション
    • スタックを作成・更新する度に設定値を変えたい場合に便利です

  • Mappings
    • 3階層「Key, Key, Value」で、マップ定数を定義するセクション
    • 開発環境・本番環境などの環境によって、異なる値を設定したい場合に便利です
    • 「Parameters」や「Conditions」セクションと組み合わせて使われます

  • Conditions
    • リソースや設定値の作成条件を定義するセクション
    • IF分岐する場合などに使います
      • ▶︎ ある環境ではリソースを作成し、他の環境では作成しないといった柔軟な設定ができます

  • Resources
    • 実際に作成・管理するAWSリソースを記入するセクション
    • メインとなるセクションで、テンプレートには必須で書きます

  • Outputs
    • スタック外(別のテンプレート)にリソース情報をアウトプットするセクション
    • 例えば、Aスタックで作成したS3バケットを、Bスタックで使いたいときに便利です

スタック(AWSリソース)のデプロイ方法

今回は、一例として事前に作成したテンプレートを使用し、AWSマネージドコンソールでデプロイする方法を簡単に書きます。

<今回の構成>
image.png

ステップ1

CloudFormationのコンソールを開き、「スタックの作成」の「新しいリソースを使用(標準)」(画像の赤枠)をクリックします。

image.png

ステップ2

「スタックの作成」ステップでは、今回すでに作成してあるテンプレートを使いたいので、画像のように設定していきます。
テンプレートの設定は、「テンプレートの指定」項目の「ファイルの選択」ボタン(画像の赤枠)をクリックし、指定します。

image.png

ステップ3

「スタックの詳細を指定」ステップでは、以下の設定をします。

  • 設定
    • スタック名を提供
      • スタック名: ※適したスタック名をつけてください
    • パラメータ
      • ※ テンプレートの内容により変化します
        • テンプレートの「Parameters」セクションで設定した項目が表示されます
        • ここで今回作成したいスタックの設定値を選択していきます

image.png

ステップ4

「スタックオプションの設定」ステップでは、適宜設定します。

image.png

ステップ5

「確認して作成」ステップで、設定した項目を確認し、大丈夫でしたら、「送信」ボタンをクリックします。

ステップ6

画像のように、CloudFormationと作成したリソースが以下のように確認できましたら、完成です

  • CloudFormationのスタック確認
    • 作成したスタックの「ステータス」項目が「CREATE_COMPLETE」になっている
      image.png

  • 作成したリソース(今回はEC2など)の確認
    • 作成したかったリソースができているか確認します
      image.png

Appendix

変更セットについて

今回は詳細には書きませんが、スタック更新時に以下の赤枠のように、変更があるリソースを「変更セットのプレビュー」項目で表示してくれます。
これで変更した内容が合っているか確認してから、スタックを更新することができます。
(「間違って必要なリソースを消してしまった」ということも防げます。)

image.png

さいごに

AWS CloudFormationのイメージは、つきましたでしょうか?

この記事を導入としてもらい、
AWSリソースを一括作成・管理する
インフラ構築・管理をしてくれる、 もう1人のメンバー
として、AWS CloudFormationで快適なインフラ構築を実施してもらえればと思います。

使用イラスト

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?