45
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】作成済みのEC2インスタンスを複製する方法~AMIの作成~

Posted at

はじめに

似たようなEC2インスタンスを何個も作る際にAMIを使うととても便利だったのでまとめておきます
これによってRubyやNginx、Node.jsなどのパッケージのインストール作業などを何度もやらなくて済み、数分でインスタンスを複製できるのでとても便利でした

前提

AWSで作成済みのEC2インスタンスがある

対象読者

EC2インスタンスを新規で作成したいけど、パッケージのインストールなど諸々の作業がめんどくさいと思っている人

AMIって何?

Amazon Machine Imageの略
インスタンスの作成に必要なソフトウェア構成 (OS、アプリケーションサーバー、アプリケーション) を含むテンプレートのこと

EC2インスタンスを作成する際に出てくる以下の画面で選択するのがAMIです
通常はここからAWSが提供しているAmazon Linux 2 AMIなどを選択してEC2インスタンスを作成しますが、
今回はこのAMIを自分で作ってそこからEC2インスタンスを作成するという流れになります
スクリーンショット 2020-02-09 18.33.55.png

作業の流れ

  1. 複製元となるEC2インスタンスからAMIイメージを作成する
  2. AMIイメージから新規のEC2インスタンスを作成する
  3. 作成したインスタンスにssh接続して、インスタンスの中身を確認する

1. 複製元となるEC2インスタンスからAMIイメージを作成する

まずは複製するインスタンスを決めて停止させます
*停止させなくてもできるのですが、AWS非推奨でデータの整合性が取れない場合があります

今回は停止したChat-spaceという名のインスタンスを複製することとします
*Elastic IPアドレスがEC2インスタンスに紐づいていないと課金されてしまいますので、必ずアドレスの関連付け解除と解放をしてから停止させましょう
1.png

複製するインスタンスを選択し、アクションからイメージの作成をクリックします
スクリーンショット 2020-02-09 18.47.33.png

次に実際のAMIの設定を入力していきます
イメージの説明はあとで変更可能ですが、イメージ名は変更できないので注意してください
今回はtest-serverとします
ボリュームタイプなども選べますが、今回はデフォルトの設定とします
イメージの作成を押すとAMIの作成が始まります
スクリーンショット 2020-02-09 18.47.49.png

左側のタブのイメージ>AMIをクリックすると、作成したAMIを確認できます
しばらくするとステータスがavailableになったAMIが作成されます
スクリーンショット 2020-02-09 18.47.57.png

2. AMIイメージから新規のEC2インスタンスを作成する

次に新規のEC2インスタンスを起動していきます
作成されたAMIを選択して、起動ボタンをクリックします
すると、EC2インスタンスを作成するいつもの画面が出てくるので設定をしていきます

インスタンスタイプ

今回は無料枠のtc2.microとします
スクリーンショット 2020-02-09 18.47.00.png

インスタンスの設定

ネットワークの設定などを行います
自分で作成したVPCやサブネットがあればここで選択します
今回はデフォルト値のままとします
自動割り当てパブリックIPは有効になってないとインターネット通信ができないので注意してください
スクリーンショット 2020-02-09 18.48.14.png

ストレージの追加

ストレージを追加できます
今回はデフォルトのままとします
スクリーンショット 2020-02-09 18.48.22.png

タグの追加

必須ではないですが、タグ付けをしておくと何のインスタンスなのか一目でわかるのでつけておくと便利です
Nameキーで好きなインスタンス名をつけておくことが一般的です
今回はtest-serverとします
スクリーンショット 2020-02-09 18.48.30.png

セキュリティグループの設定

既存のセキュリティグループがある場合はそれを選択することもできますので適宜設定してください
今回は新規作成することとします
ルールの追加を押し、HTTP, HTTPS, ポート3000をフルオープンで許可します
スクリーンショット 2020-02-09 18.48.41.png

最後にキーペアを選択してください
今回は既存のdeploytestというキーペアを使います
インスタンスの作成を押すと作成が始まります
スクリーンショット 2020-02-09 18.55.20.png

3. 作成したインスタンスにssh接続して、インスタンスの中身を確認する

EC2インスタンスが作成されたらパッケージがインストールされているか確認していきます

その前に今回はパッケージがインストールされていないとどういう表示になるかを先に見てみます
nginxやnode.jsがインストールされてるかを確認しましたが、下記のように何も出力されません
3.png

ではいよいよ作成したインスタンスにssh接続します
先ほど設定したキーペアを使ってください
Elastic IPアドレスは必要であれば適宜設定してください
なければインスタンスのパブリックIPアドレスを@以降に記述して接続します

インスタンスに接続した状態でnginxやnode.jsがインストールされているかを確認すると、下記のようにインストールされていることが確認できました
4.png

このようにAMIを使うと、あるインスタンスに対して行った設定を引き継いで複製することができます

ちなみに今回はchat-spaceというアプリケーションを入れたインスタンスだったので下記のようにそのアプリケーションディレクトリまで複製されてしまっています

今回はこのアプリケーションは使わないので下記コマンドで削除しています
これでchat-spaceのディレクトリは消去されました
あとは好きなアプリをgit cloneするなりしてください
スクリーンショット 2020-02-09 17.11.34.png

まとめ

パッケージのインストール作業はめんどくさいことが多いですが、1つ作っておけば今回の方法で複製できるのでとても便利です
作成時間も10分くらいでできちゃいますので、同じようなインスタンスを作成する場合はぜひ使ってみてください

間違いなどあれば指摘していただけると嬉しいです

45
38
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
45
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?