カテゴリ: AWS 更新日: 2026/02/17

AWS CloudFormation(クラウドフォーメーション)でEC2(イーシーツー)インスタンスを自動作成する方法を完全解説

AWS CloudFormationでEC2インスタンスを自動作成する方法
AWS CloudFormationでEC2インスタンスを自動作成する方法

先生と生徒の会話形式で理解しよう

生徒

「AWS(エーダブリューエス)でサーバーを作るときって、毎回画面をポチポチ操作しないといけないんですか?」

先生

「AWS CloudFormation(クラウドフォーメーション)を使えば、画面操作をしなくてもEC2(イーシーツー)インスタンスを自動で作れますよ。」

生徒

「自動で作れるんですか?プログラミング初心者でもできますか?」

先生

「大丈夫です。テンプレートという設計図を書くだけなので、順番に見ていきましょう。」

1. AWS CloudFormation(クラウドフォーメーション)とは?

1. AWS CloudFormation(クラウドフォーメーション)とは?
1. AWS CloudFormation(クラウドフォーメーション)とは?

AWS CloudFormation(クラウドフォーメーション)は、AWS(エーダブリューエス)のインフラ構成を自動化するためのサービスです。サーバーやネットワークを人の手で作るのではなく、文章で書いた設定をもとにAWSが自動で環境を作ってくれます。

このような考え方は「インフラ自動化」や「Infrastructure as Code(インフラストラクチャー・アズ・コード)」と呼ばれ、最近のクラウド運用では欠かせない技術です。

2. EC2(イーシーツー)インスタンスの基本を理解しよう

2. EC2(イーシーツー)インスタンスの基本を理解しよう
2. EC2(イーシーツー)インスタンスの基本を理解しよう

EC2(イーシーツー)とは、AWS上で使える仮想サーバーのことです。パソコンの中にもう一台パソコンを作るようなイメージで、Webサイト公開やアプリ実行に使われます。

CloudFormation(クラウドフォーメーション)を使うことで、このEC2インスタンスを「何台」「どんな性能で」「どのOSで作るか」をまとめて指定できます。

3. CloudFormationテンプレートの仕組み

3. CloudFormationテンプレートの仕組み
3. CloudFormationテンプレートの仕組み

CloudFormation(クラウドフォーメーション)では「テンプレート」と呼ばれる設定ファイルを使います。テンプレートはYAML(ヤメル)またはJSON(ジェイソン)形式で書きます。

テンプレートには、EC2インスタンスの種類、AMI(エーエムアイ)、インスタンスタイプ、セキュリティ設定などをまとめて記述します。これが設計図の役割を果たします。

4. EC2インスタンスを作成するテンプレート例

4. EC2インスタンスを作成するテンプレート例
4. EC2インスタンスを作成するテンプレート例

以下は、最小構成でEC2(イーシーツー)インスタンスを自動作成するCloudFormation(クラウドフォーメーション)テンプレート例です。


AWSTemplateFormatVersion: '2010-09-09'
Description: EC2 instance sample

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t2.micro

このテンプレートでは、AMI(エーエムアイ)と呼ばれるOSの元になるイメージと、インスタンスの性能を指定しています。t2.microは無料枠でも使われることが多いサイズです。

5. AWSマネジメントコンソールから実行する方法

5. AWSマネジメントコンソールから実行する方法
5. AWSマネジメントコンソールから実行する方法

AWSマネジメントコンソールからCloudFormation(クラウドフォーメーション)を開き、「スタックの作成」を選びます。そこに先ほどのテンプレートを貼り付けるだけで準備は完了です。

画面の指示に従って進めると、数分後にはEC2(イーシーツー)インスタンスが自動的に作成されます。手動操作と比べて、作業ミスが減るのが大きなメリットです。

6. コマンドラインでCloudFormationを実行する

6. コマンドラインでCloudFormationを実行する
6. コマンドラインでCloudFormationを実行する

AWS CLI(エーダブリューエス・シーエルアイ)を使えば、コマンド操作でもEC2インスタンスを作成できます。サーバー管理や自動化に慣れてきたら便利です。


aws cloudformation create-stack \
--stack-name sample-ec2-stack \
--template-body file://ec2.yml
{
    "StackId": "arn:aws:cloudformation:..."
}

7. CloudFormationを使うメリット

7. CloudFormationを使うメリット
7. CloudFormationを使うメリット

CloudFormation(クラウドフォーメーション)を使う最大のメリットは、同じ構成を何度でも再現できる点です。テスト環境、本番環境を同じ設定で簡単に作れます。

また、設定内容が文章として残るため、後から見返しても内容が分かりやすく、チーム作業にも向いています。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がつまずきやすいのは、AMI(エーエムアイ)IDの指定ミスや、リージョン違いです。AMIは地域ごとに異なるため、使うリージョンに合ったものを選ぶ必要があります。

エラーが出た場合は、CloudFormationのイベント画面を見ることで原因を確認できます。焦らず一つずつ確認することが大切です。

まとめ

まとめ
まとめ

今回の記事では、AWS CloudFormation(クラウドフォーメーション)を活用して、EC2(イーシーツー)インスタンスを自動で作成・管理する方法について詳しく解説してきました。クラウドでのシステム運用において、もはや「手動での設定」は時代遅れになりつつあります。Infrastructure as Code(インフラストラクチャー・アズ・コード)という言葉に代表されるように、設定をコードとして管理することで、ヒューマンエラーを排除し、誰が作業しても同じ結果が得られる「再現性」が非常に重要視されているからです。

AWS CloudFormation(クラウドフォーメーション)をマスターする価値

CloudFormationを利用することで、ネットワーク構成、サーバーのスペック、セキュリティグループの設定などをすべてYAML(ヤメル)やJSON(ジェイソン)といったテキストファイルに落とし込むことができます。これにより、システムの構成変更が必要になった際も、コードを修正して再適用するだけで環境を更新できるようになります。これは、開発スピードを飛躍的に向上させるだけでなく、運用コストの削減にも直結します。

実践的なテンプレートの拡張:タグ付けとストレージ設定

先ほどの基本的なテンプレートをさらに実用的にするために、サーバーに「名前(Nameタグ)」を付けたり、ストレージのサイズを指定したりする設定を追加してみましょう。実際の業務では、どのサーバーが何のために動いているかを識別するために、タグの設定は必須の作業と言えます。


AWSTemplateFormatVersion: '2010-09-09'
Description: Extended EC2 instance template with Tags

Resources:
  MyAdvancedEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t3.micro
      Tags:
        - Key: Name
          Value: My-Web-Server
        - Key: Environment
          Value: Production
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeSize: 20
            VolumeType: gp3

このように、`Tags`セクションを追加することで、AWSマネジメントコンソールのEC2一覧画面で名前が表示されるようになり、管理が非常に楽になります。また、`BlockDeviceMappings`を使用すれば、標準のディスク容量を変更することも可能です。

AWS CLI(コマンドラインインターフェース)による効率化

CloudFormation(クラウドフォーメーション)の真価は、コマンドラインからの操作によって発揮されます。シェルスクリプトやCI/CDツールと組み合わせることで、完全に人の手を介さずにインフラをデプロイできるようになります。

例えば、現在作成されているスタックの一覧を確認したいときは、以下のコマンドを実行します。


aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE
{
    "StackSummaries": [
        {
            "StackId": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/sample-ec2-stack/...",
            "StackName": "sample-ec2-stack",
            "CreationTime": "2024-05-20T10:00:00.000Z",
            "StackStatus": "CREATE_COMPLETE"
        }
    ]
}

コマンド一つで現在の状況が把握できるため、大規模な環境になればなるほど、この一覧性は大きな武器となります。

最後に

AWSを使い始めたばかりの頃は、設定項目が多くて難しく感じるかもしれません。しかし、CloudFormation(クラウドフォーメーション)を使えば、一度作った正解の設定を何度でも使い回すことができます。まずは小さなEC2(イーシーツー)インスタンスの作成から始め、徐々にVPC(ブイピーシー)やRDS(アールディーエス)といった他のサービスもテンプレートに組み込んでみてください。一歩ずつ、自動化のメリットを肌で感じながら学習を進めていきましょう。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!CloudFormation(クラウドフォーメーション)を使うと、設定をファイルとして保存しておけるのが本当に便利ですね。これなら後から『あの時どう設定したっけ?』と悩む必要がなさそうです。」

先生

「そうですね。それに、テンプレートさえあれば、同じ環境を5分で複製することもできます。例えば、開発チームが自分たちのテスト環境をボタン一つで作れるようになるんですよ。」

生徒

「なるほど。さっきのYAML(ヤメル)コードを見て思ったんですが、もし間違った設定を書いて実行してしまったら、AWS側で壊れたりしませんか?」

先生

「良い質問ですね。CloudFormationには『ロールバック』という強力な機能があります。もし作成中にエラーが起きたら、自動的に作成途中のリソースを削除して、元の状態に戻してくれるんです。だから、失敗を恐れずに挑戦できるんですよ。」

生徒

「それは安心です!でも、AMI(エーエムアイ)のIDを間違えて指定してしまったときはどうなりますか?」

先生

「その場合は『AMI IDが存在しません』といったエラーメッセージがCloudFormationのイベントログに表示されます。エラーを読んで修正するのも、エンジニアとしての重要なスキルですね。ぜひ実際の画面でログを確認してみてください。」

生徒

「分かりました。まずはタグを付けるところから練習してみます。YAMLのインデント(字下げ)にも気をつけないといけないですね。」

先生

「その通り!インデント一つでエラーになることもあるので、そこは丁寧に。慣れてきたら、自分で作ったテンプレートをGitHubなどのリポジトリで管理すると、さらにプロの現場に近づけますよ。頑張ってくださいね!」

カテゴリの一覧へ
新着記事
New1
ファイル操作コマンド
pwdコマンドの使い方を完全ガイド!初心者でもわかるLinuxで現在のディレクトリを確認する方法
New2
AWS Shield
AWS Shieldの課金体系とコスト対策を徹底解説!初心者でもわかるDDoS対策の料金構造
New3
S3(オブジェクトストレージ)
AWS S3のクロスリージョンレプリケーションを設定する方法を初心者向けにやさしく解説!
New4
RDS(データベース)
AWS RDSのメンテナンスウィンドウの設定方法を解説!初心者でもできるクラウドデータベースの管理
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ構造
Linuxの/homeディレクトリとは?役割と構造を初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
プロセス・ジョブ管理
LinuxのプロセスID(PID)とは?仕組みと管理方法を初心者向けに徹底解説
No.5
Java&Spring記事人気No5
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.6
Java&Spring記事人気No6
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本