初心者エンジニアや、AWS初めて触るよって方、あとがSAA受けたい!って方向けにEC2インスタンスの起動とVPCの設定について解説していきます。
何でたくさんあるような記事を書くのかって?自分の記事数を増やすためやっぱり記事はたくさんあるに越したことはないじゃないですか(?)
#ちょっとした説明
EC2(Elastic Compute Cloud)はAWSのメインサービスの1つ。
LinuxやWindows、その他にRedHatなどを実行する'仮想サーバー'です。
インスタンスという単位で管理され、インスタンスにはt2.microとかc4.largeとか複数のインスタンスタイプが用意されています。
インスタンスタイプ毎にスペックや、料金設定など変わってきます。また、同タイプでもリージョンによって多少前後します。
また、インスタンスにはオンデマンドインスタンスや、スポットインスタンス、リザーブドインスタンスなどがありますが、基本使うのはオンデマンドインスタンスだと思います。私がそれしか使ってないだけかもしれませんが。今回、インスタンスというと全てオンデマンドインスタンスを指すものとして読んでください。
それぞれ簡単に説明すると、
インスタンス | 説明 |
---|---|
オンデマンドインスタンス | インスタンスが動いてる時間で料金が発生 |
スポットインスタンス | よくわかってない。価格が変動する。この料金で使いたい!って言った金額が、その時点での価格より上だったら使えるらしい。 |
リザーブドインスタンス | 年間契約とか、長い期間使うことを前提に前払い、その分安い |
とのこと。
EC2の主なユースケースとしては、Webサーバーやアプリケーションサーバーなど、仮想サーバーという通り'サーバー'として使われる事が多いですね。
私は基本サーバーレス開発が多いので、普段EC2を使う事自体は少ないです。
ですが、もちろんそれだけじゃ解決出来ないような状況もありますので、そのような時に使用しています。
東京リージョンで作ろうとしましたが、すでに動いているモノもあり間違ったら面倒くさいので今回は適当に選んだシンガポールリージョンを使って行きます。
#マネジメントコンソールから作る
##EC2インスタンスの作成
AWSマネジメントコンソールにログインし、[インスタンスの作成]をクリック
AMIを選択します。今回は無料枠で作るので、Ubuntu Server 16.04LTS(ami-03221428e6676db69)を選択します。
AMIで設定するOS次第では、SSHでログインする時のユーザー名などが異なるので、今回Ubuntuで作るという事を覚えておきましょう。
インスタンスタイプの設定です。こちらは無料枠がt2.microのみなので、そちらを選択します。
「次の手順:インスタンスの詳細の設定」
インスタンスの詳細設定です。
VPCやIAMロール、起動時に実行する設定スクリプトなどを定義できます。
インスタンス数は、いくつ同時に起動するかです、今回は1つにしておきます。
スポットインスタンスは購入しません。
VPCはせっかくですので新しく作りましょう。「新しいVPCの作成」をクリック
###VPCとサブネットの作成
先程のボタンを押すと、VPCのダッシュボードが表示されます。何も設定していないと、デフォルトVPCのみが表示されます。1リージョン毎に複数のVPCを設定できます。1つのVPCを複数リージョンにまたがって使用することは出来ませんが、ピアリングがサポートされているので、似たような事ならできます。
VPCの作成を押して、設定をしていきましょう。
名前とIPv4CIDRブロックを定義します。IPv4?CIDRブロック?って人はAWSの前にネットワークの勉強をしましょう。近い内にネットワーク基礎みたいな感じの記事も書きます。
今回は適当に、qiita-hogeVPCと、123.45.0.0/16としておきます。
無事作成出来たら、サブネットを作っていきます。1つのアドレス空間を複数のネットワークに分割できる機能です。
左ペインからサブネットを選択し、サブネットの作成をクリック。
名前とVPC、アベイラビリティゾーン、サブネットのIPv4CIDRブロックを定義します。
アベイラビリティゾーンとは、AWSでの重要な概念で、そのリージョン内に存在する、1つ以上の独立したデータセンターの事を示します。
東京には4つありますが、一般的に使用できるのは3つです。ただし今回私が選択しているのはシンガポールですので、東京リージョンで勧めている人とは異なったアベイラビリティゾーンになっています。
VPCとサブネットが作成できたら、インスタンスの設定画面に戻ります。また、VPCは後々詳細設定を行います。
そして、設定を勧めていった後の画面はこうなります。
IAMロールに関しては、後から設定できるのと、EC2で何をやりたいかによって変わってくるので、後ほど。
「次の手順:ストレージの追加」
今回、ストレージは無料枠で利用できる範囲まで設定します。
「次の手順:タグの追加」
タグの追加です。わかりやすくするために、NameというキーにQiitaHogeという値をつけておきましょう。
「次の手順:セキュリティグループの設定」
セキュリティグループの設定です。どのタイプのどのソースからのアクセスを許可するか、というものです。
ソースを任意の場所にすると、誰でもアクセスできるようになります。Webサイトを公開したいなら、HTTPとHTTPSの2つのタイプを任意の場所として公開するようにしましょう。今回はSSHのみですので、SSHをマイIPで設定します。
最後に確認です。
おっと、無料利用の対象枠じゃないと警告が出ていますね。何故でしょうか。
答えはストレージの設定です。
ストレージ設定を編集してみましょう。
EBSの汎用SSDで30GBまでなら無料利用枠と書いてあるじゃないか!なぜダメなのか!
いーえよく見てください、もうすでに8GB分設定されてるでしょ?
てことでその分減らして22GBで指定しないと無料枠を超えてしまいますので、設定しなおしましょう。
今回は、削除まで含めて説明します。それに伴って、合わせて削除にもチェックを入れておきます。中に保存したデータだけは残したい場合は外しておきましょう。
はい、これで作成が完了できます。無料枠じゃないよ!と警告が出ていない事を確認して作成します。
キーペアの設定です。これがないとSSHで接続できないので、キーペア名とキーペアをしっかり保存しておきましょう。ダウンロードすると、インスタンスを作成できます。
インスタンスの状態がrunningになり、ステータスチェックが合格すると晴れてインスタンスの作成が完了しました。次はVPCの設定に移ります。
##VPCの設定
サービスからVPCと選択し、VPCダッシュボードを開きます
定義する設定は、インターネットゲートウェイ・ルートテーブル・ElasticIPです。
まず、インターネットゲートウェイを設定していきます。
左ペインからインターネットゲートウェイを選択し、インターネットゲートウェイの作成をクリックします。初期からあるのは、デフォルトVPC用のインターネットゲートウェイです。
次はインターネットゲートウェイをVPCにアタッチします。アクションからVPCにアタッチを選択します。
出来たら次はルートテーブルです。左ペインから、ルートテーブルを選択し、作ったVPCに関連付けられてるルートテーブルを選択。
すると画面下部にメニューが出てきますので、ルートタブを選択し、編集。
以下のように項目を追加します。
保存して、設定は終了です。
では最後にElasticIPを設定していきます。ElasticIPとは、IPアドレスを固定する機能です。AWSでは、仮想サーバを再起動したりすると。パブリックIPとプライベートIPが変更されます。一意のIPアドレスに対して設定を行うような場合、毎回変更されると、その度に設定を変える必要があるので、ElasticIPを使うことでその設定トラブルを避けることが出来ます。
まずは、左ペインからElasticIPを選択し、新しいアドレスの割り当てをクリックします。
次はこのアドレスを、先程作ったインスタンスに関連付けていきます。
関連付けることで、インスタンスのIPアドレスを、上記で表示されたものに固定出来ます。
アクションから、アドレスの関連付けを選択します。
インスタンスから選択するか、ネットワークインターフェースから選択するか選びます。
今回はインスタンスを選択します。先程作ったインスタンスを選択し、プライベートIPをそのインスタンスに割り当てられてるもので選択します。プライベートIPはEC2のダッシュボードから、インスタンスをクリックすると画面下部に表示されています。
アドレスの解放とは、いわばそのアドレスの削除に近い意味合いで捉えても大丈夫です。いわばアドレスとサーバの関連付けをなくし、そのアドレスは自身が使用できなくなるというものです。
では関連付けしていきます。
はい、上手く関連付けられました。
ここまで書いて、一つ設定し忘れてた事を思い出したので、設定していきます。左ペインからVPCを選び、自身が作ったVPCを選択。
アクションから、DNSホスト名の編集をクリックします。
これで全ての設定は終わりました。ではSSHで繋いでいきます。
今回はMacを使って、ターミナルからsshコマンドで接続します。windowsの方はPuTTYとかssh clientなどを使うと思いますが、各自調べてみてください。
先程のpemファイルをダウンロードしたディレクトリへ移動し、
chmod 400 hogeKey.pem
とコマンドを入力します。
私は、zshを使っているので、見た目など違う方もいると思いますが、コマンドは変わりません。
ls -al | grep hogeKey
で、ファイルモードが変わったことを確認したので、このkeypairを使ってsshでアクセスします。
EC2のダッシュボードへ移動し、自身で作ったインスタンスを選択。
パブリックDNSをコピーします。
そして、下記コマンドをターミナルで実行。@マーク以降の部分は、自身のDNS名にしてください。
ssh -i hogeKey.pem ubuntu@ec2-52-76-66-111.ap-southeast-1.compute.amazonaws.com
なにか聞かれるのでyesと答え、Enter。
おめでとうございます。
これで自身で作ったEC2インスタンスにsshで接続出来ました。
##インスタンスの削除
今まで作ったものを綺麗さっぱり削除していきます。
まずはインスタンスを削除します。
EC2ダッシュボードからインスタンスを選択し、アクションからインスタンスの状態→削除を選択します。
インスタンスの削除をするかのモーダルが出てくるので、ElasticIPの解放にチェックを入れ削除します。
ElasticIPは無料で使用できると、AWSは言っていますが、それはあくまでインスタンスに関連付けられてたりするような特別な場合のみで、何もせずただ存在するだけのElasticIPには時間あたりの料金がかかります。解放せずにインスタンスを削除すると、ただ存在するだけのモノになってしまいますので、解放してあげましょう。
削除には時間がかかるので、次はVPCの削除をします。
VPCのダッシュボードへ移動し、自身が作ったVPCを選択、アクションからVPCの削除をクリックします。
左ペインからVPC→サブネット→ルートテーブル→インターネットゲートウェイ→ElasticIPと順に見ていき、先程作ったものが無くなっていればVPCの削除は成功です。
恐らく、この辺りでインスタンスの削除も終わってると思うので、EC2ダッシュボードへ移動します。
先程のインスタンスの状況がterminatedになっていれば成功です、完全に消えるまでもう少し時間はかかりますが、削除はこれで大丈夫です。
左ペインからELASTIC BLOCK STOREのボリュームを選択し、なにもない。もしくは先程のインスタンスに関連付けられてるボリュームが無くなっていれば成功です。
これで他の環境にまで迷惑をかけず、イチから作成し、全て削除することが出来ました。
お疲れ様でした。
AWSを利用する方や、認定資格を取りに行こうとしている方は、一度はこの手順に沿って環境を作ってみる事をオススメします。
また、自身でAMIを選んでみたり、WordPressやAPIサーバ、バックエンドの処理を行うサーバなど、実際に使うモノをなにか一つ建ててみるのも良いでしょう。
ちなみに、インスタンス作成時にデフォルトVPCを選択すると、インスタンスを作るだけですぐにSSHで接続できるようになります。今回はVPCの作成まで含めてやりたかったので回りくどくなってしまいました。
次回はAWS CLIを使ったインスタンスの作成方法についてやっていきます。