🏞️

AWS で Web サーバ (Apache) の AMI を作ってみる

2021/06/27に公開

こんにちは、Masuyama です。

検証で Web サーバを何回も立てる際、毎回 Linux をゼロから立てて Apache をインストールしたり、もしくはユーザデータで初期インストールと起動を行ったりするのもよいのですが
最初から準備が整った状態の AMI を使った方が手間が少なく済むので便利です。

ということで、今回は Web サーバとしての準備が整った EC2 インスタンスから AMI を作成し、それを用いてまた別なインスタンスを立ててみましょう。

まずは手動で Web サーバを立てる

AMI の素となるインスタンスは手動でまずは立てます。

今回は SSM の Session Manager を用いてインスタンスに入り、コマンドを叩いてインストールしてみますが、ユーザーデータや CloudFormation で一気に作ってしまっても OK です。
(もちろん SSH でも)
※参考1:手動でユーザーデータからインストールする方法
※参考2:CloudFormation とユーザーデータでインストールする方法

sudo yum -y update
sudo yum -y install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

後で AMI を作成し、AMI からインスタンスを作成した時に自動で Apache が起動するように enable httpd を忘れないことがポイントです。

インスタンスのパブリック IP にブラウザでアクセスし、Apache のテストページが表示されればとりあえず成功です。

AMI を作成する

EC2 インスタンスの一覧画面で該当のインスタンスを選択し、[アクション] > [イメージとテンプレート] > [イメージを作成] を選択します。

次の画面でイメージ (AMI) の名前や説明をつけます。
また、[再起動しない] を有効化しておかないと、イメージを作成する時にオリジナルインスタンスが再起動することになります。

再起動させたくないインスタンスである場合にはチェックをつけてください。

その他は必要に応じ変更してもよいですが、今回はデフォルトのまま [イメージを作成] を選択します。

数秒程度もあれば作成が完了し、SUCCES メッセージが表示されます。

なお、AMI を作成するために作成したインスタンスは削除してしまって構いません。

オリジナル AMI からインスタンス作成

最後に、作成した AMI から早速 Web サーバを立ち上げてみます。

EC2 のコンソールで [インスタンスを起動] を選択し、AMI の選択画面に移動します。
通常であれば Amazon Linux2 等、デフォルトで使える AMI を選択して起動していましたが
ここでは [マイ AMI] を選択し、先程作成した AMI を選択します。

他の設定はほぼデフォルトで問題ありませんが、パブリック IP でアクセスした時に Apache の起動を確かめたいので、[自動割り当てパブリック IP] だけは有効化しておきましょう。

また、セキュリティグループでは HTTP のインバウンドを開けておきます。

インスタンスの作成が完了し、インスタンスのパブリック IP にアクセスしたら
オリジナルのインスタンスの時と同じく、Apache のテストページが表示されているはずです。

Apache のインストールぐらいであればユーザーデータを設定して自動インストールする手間とほとんど変わりませんが、
もう少し込み入った、例えば自作のアプリケーションを動かしているインスタンスで Auto Scaling をしたい時には AMI を取得してスケーリングする必要がありますので、基本的な使い方は覚えておくことをオススメします。

Discussion