AWS CloudFormation(クラウドフォーメーション)でEC2(イーシーツー)インスタンスを自動作成する方法を完全解説
生徒
「AWS(エーダブリューエス)でサーバーを作るときって、毎回画面をポチポチ操作しないといけないんですか?」
先生
「AWS CloudFormation(クラウドフォーメーション)を使えば、画面操作をしなくてもEC2(イーシーツー)インスタンスを自動で作れますよ。」
生徒
「自動で作れるんですか?プログラミング初心者でもできますか?」
先生
「大丈夫です。テンプレートという設計図を書くだけなので、順番に見ていきましょう。」
1. AWS CloudFormation(クラウドフォーメーション)とは?
AWS CloudFormation(クラウドフォーメーション)は、AWS(エーダブリューエス)のインフラ構成を自動化するためのサービスです。サーバーやネットワークを人の手で作るのではなく、文章で書いた設定をもとにAWSが自動で環境を作ってくれます。
このような考え方は「インフラ自動化」や「Infrastructure as Code(インフラストラクチャー・アズ・コード)」と呼ばれ、最近のクラウド運用では欠かせない技術です。
2. EC2(イーシーツー)インスタンスの基本を理解しよう
EC2(イーシーツー)とは、AWS上で使える仮想サーバーのことです。パソコンの中にもう一台パソコンを作るようなイメージで、Webサイト公開やアプリ実行に使われます。
CloudFormation(クラウドフォーメーション)を使うことで、このEC2インスタンスを「何台」「どんな性能で」「どのOSで作るか」をまとめて指定できます。
3. CloudFormationテンプレートの仕組み
CloudFormation(クラウドフォーメーション)では「テンプレート」と呼ばれる設定ファイルを使います。テンプレートはYAML(ヤメル)またはJSON(ジェイソン)形式で書きます。
テンプレートには、EC2インスタンスの種類、AMI(エーエムアイ)、インスタンスタイプ、セキュリティ設定などをまとめて記述します。これが設計図の役割を果たします。
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マネジメントコンソールから実行する方法
AWSマネジメントコンソールからCloudFormation(クラウドフォーメーション)を開き、「スタックの作成」を選びます。そこに先ほどのテンプレートを貼り付けるだけで準備は完了です。
画面の指示に従って進めると、数分後にはEC2(イーシーツー)インスタンスが自動的に作成されます。手動操作と比べて、作業ミスが減るのが大きなメリットです。
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を使うメリット
CloudFormation(クラウドフォーメーション)を使う最大のメリットは、同じ構成を何度でも再現できる点です。テスト環境、本番環境を同じ設定で簡単に作れます。
また、設定内容が文章として残るため、後から見返しても内容が分かりやすく、チーム作業にも向いています。
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などのリポジトリで管理すると、さらにプロの現場に近づけますよ。頑張ってくださいね!」