hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

EC2インスタンスの生成

AWSアカウントのリージョン設定

リージョンとは、AWSの物理的なサーバの場所を指定するもの。リージョンは世界各地に10箇所以上存在し、そのうちの一つは東京にある。

リージョン間でEC2の設定は独立していて、あるリージョンのEC2を他のリージョンへ移動することはできない。

なので、EC2を立ち上げる際には、「どのリージョンの設定か」を意識するようにする。

 以下の指示に従って、リージョンを選択する

まずはAWSアカウントにログイン。以下の画像の手順に従い、リージョンを東京に設定する。
ページを更新した際に、「東京」と表示されていれば、正しく設定出来ている。

 あるリージョンで作成したEC2や他の設定は、他のリージョンでは表示されないので、注意する。
https://tech-master.s3.amazonaws.com/uploads/curriculums//51832aef26a6cc6d565fe8bf6019afba.png

EC2インスタンスを作成

「サーバーを生成する」といっても、AWSが全てのサーバを物理的に用意しているわけではなく、実際には「仮想マシン」と呼ばれるソフトウェアを利用して、仮想的に一つのLinuxサーバを利用できる仕組みを利用する。この「仮想マシン」のことをAWSでは「EC2インスタンス」と呼んでいる。

EC2インスタンス作成の作業が2回目以降の方は、費用が発生する場合がある。

 以下の指示に従って、EC2インスタンスを作成

まずは、AWSアカウントにログインします。トップページに遷移したら、左上の「サービス」から「EC2」を選択。

https://tech-master.s3.amazonaws.com/uploads/curriculums//8aa3850b7b6cc14d78f402e943e8ec67.png

操作画面を旧バージョンに切り替えるため、左上のスイッチのアイコンをクリック。

https://tech-master.s3.amazonaws.com/uploads/curriculums//b8a915c49b9f29850c84af38d3a62bd9.png

アンケート用のダイアログが開くのでキャンセルする。

https://tech-master.s3.amazonaws.com/uploads/curriculums//6d24c57248b8efe83e5c81e72830db78.png

以下の画像のように「インスタンスの作成」をクリック。

https://tech-master.s3.amazonaws.com/uploads/curriculums//10ad61a4bbb8c5884c949a10949503d4.png

AMIの選択

AMIとは、「Amazon Machine Image」の略語で、サーバのデータをまるごと保存したデータのこと。この中には、OSやWEBサーバなどが事前にインストールされているものもあり、自分でゼロからインストールする手間を削減することができる。

今回は「 Amazon Linux AMI 」という、AWSが独自にカスタマイズしたAMIを利用する。

 「 Amazon Linux2 AMI 」ではなく、「 Amazon Linux AMI 」を選択する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//1c8f643be5a1508198df274a862d6f6b.png

EC2インスタンスのタイプ選択

EC2インスタンスのタイプを選択。EC2ではさまざまなインスタンスタイプが用意されており、CPUやメモリなどのスペックを柔軟に指定することができる。
今回は、無料枠で利用できる「t2.micro」を選択する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//905d450ae5744b85123dfedbed1295a1.png
起動をクリック。
https://tech-master.s3.amazonaws.com/uploads/curriculums//fbe1198a6088977bc8c1039bedeba292.png

キーペアのダウンロード

内容を確認する際に、「キーペア」をダウンロードすることが出来る。こちらはインスタンスSSHでログインする際に必要となる「秘密鍵」。これがないとEC2インスタンスにログインできないので、必ずダウンロードしてパソコンに保存しておく。また、間違って他人に渡さないよう気をつける。

キーペアの名前はご自身で決めて構わない。

キーペアの名前にスペースが含まれているとこの後の作業でエラーが発生する可能性がある。 スペースを含まない名前の秘密鍵を作成する!

https://tech-master.s3.amazonaws.com/uploads/curriculums//6c95b174278c701dbd137eb03f62aaa4.png

インスタンスの作成

キーペアのダウンロードが完了すると、クリック出来ない状態になっていた「インスタンスの作成」が、クリックできるように変更される。そちらをクリックして、EC2インスタンスを作成する。

その後、インスタンス一覧画面に戻り、作成した「インスタンスID」をコピーしてメモしておく。

https://tech-master.s3.amazonaws.com/uploads/curriculums//b1294ea2334ac077df3066fb6efc1bb1.png

Elastic IPの作成と紐付けをする

作成したEC2インスタンスには、作成時にIPアドレスが自動で割り振られている。これをパブリックIPと言う。しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っている。IPが変わってしまうということは、設定ファイル等をその都度書き換えなければならない。これを解決してくれるのが、Elastic IPである。

 Elastic IP

Elastic IPとは、AWSから割り振られた固定のパブリックIPアドレスのことを言う。このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動、停止に関わらず常に同じIPアドレスで通信をすることが可能になる。

 以下の指示に従って、Elastic IPの作成と紐付けをする

まずはElastic IPを取得するために、以下の画像の手順に従って作業する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//4606e905b17c4ebc204e6bd9878fd1c6.png

「使用範囲を選択して新しいelastic ip アドレスを割り当てる」と表示され、「AWSプール」か「ユーザー保有」の選択をする必要がある場合は、「AWSプール」を選択。

https://tech-master.s3.amazonaws.com/uploads/curriculums//0b53abdd98d051b4fb7545ec0fba2774.png

https://tech-master.s3.amazonaws.com/uploads/curriculums//daa2e2eb2ba3fd2a42c661f45a0aba0c.png

次に、取得したElastic IPアドレスを、作成したEC2インスタンスと紐付ける。

https://tech-master.s3.amazonaws.com/uploads/curriculums//f82dfa7630fc13796a721341008e6b4b.png

https://tech-master.s3.amazonaws.com/uploads/curriculums//b570057964f8ae1119bff0b7e63e7f2f.png

上の画像のようにインスタンスを選択すると、その下にあるプライベートIPアドレスが自動で選択される。

再びインスタンス一覧画面に戻り、作成したインスタンスの「パブリック IP」と「Elastic IP」が同じものに設定されていることを確認。

以降、このIPアドレスはあなたの所有物のようになり、意図的にAWSに返却しない限り、変更されることはない。
https://tech-master.s3.amazonaws.com/uploads/curriculums//5210f7004f6c8bb620cc794775bd0832.png

ポートを開く

立ち上げたばかりのEC2インスタンスSSHでアクセスすることはできるが、HTTPなどの他の接続は一切つながらないようになっている。そのため、WEBサーバとして利用するEC2インスタンスは事前にHTTPがつながるように「ポート」を開放する必要がある。

セキュリティグループとは

ポートの設定をするためには、「セキュリティグループ」という設定を変更する必要がある。

セキュリティグループとは、EC2インスタンスが属するまとまりのようなもので、複数のEC2インスタンスのネットワーク設定を一括で行うためのもの。

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

下図の手順に従って、セキュリティグループのポートを設定する。

まず、EC2インスタンス一覧画面から、対象のインスタンスを選択し、「セキュリティグループ」のリンク(図中では「launch-wizard-1」)をクリック。

https://tech-master.s3.amazonaws.com/uploads/curriculums//7ee866ffd3f4791fc04ec4e7f820a260.png

すると、インスタンスの属するセキュリティグループの設定画面に移動するので、「インバウンド」タブの中の「編集」をクリック。

https://tech-master.s3.amazonaws.com/uploads/curriculums//5668fc324ef4003048568c7ca675d2a0.png

モーダルが開くので、「ルールの追加」をクリック。

タイプを「HTTP」、プロトコルを「TCP」、ポート範囲を「80」、送信元を「カスタム / 0.0.0.0/0, ::/0」に設定する。「0.0.0.0」や「::/0」は「全てのアクセスを許可する」という意味。

https://tech-master.s3.amazonaws.com/uploads/curriculums//66dca7590aaf906a435cf3e62cfc737d.png

 必ず「ルールの追加」を行い、元の「ssh」の設定がなくならないよう注意

以上で、ポートの開放が完了。

この作業が終わっていないと、WEBサーバを起動した時にアクセスできなくなるので注意。

EC2インスタンスへのログイン

EC2インスタンスを作成すると、ec2-userというユーザーと対応するSSH秘密鍵が生成された。本来はこのec2-userではなく、サービスを稼働させるためにより権限を小さくしたユーザーを作成して運用していくが、ここでは簡易化のためにこのec2-userを使って作業を進めていく。

ec2-userでログイン

 1. 以下の「ダウンロードした鍵の名前」の部分は、直前に自身がダウンロードした.pemというファイルの名前に置き換える。

 2. pemキーが本当にDownloads以下に存在するかFinderで確認。

※存在しなければ他のディレクトリを確認する

ターミナル(ローカル)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$ cd ~

$ mkdir ~/.ssh
# .sshというディレクトリを作成
# File existsとエラーが表示されたとしても、.sshディレクトリは存在しているのということなので、そのまま進みましょう。

$ mv Downloads/ダウンロードした鍵の名前.pem .ssh/
# mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動します。

$ cd .ssh/

$ ls
# pemファイルが存在するか確認しましょう

$ chmod 600 ダウンロードした鍵の名前.pem

$ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
#(例えばElastic IPが123.456.789であれば、shh -i ダウンロードした鍵の名前.pem ec2-user@123.456.789 というコマンドになります)
#(ダウンロードした鍵を用いて、ec2-userとしてログイン)

Elastic IP は、以下の画像を参考に、各自のAWSアカウントから確認する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//11fd7237181854c466315d7b257c1d6c.png

以下の様なメッセージが表示されることがあるが、「yes」と入力。

ターミナル(ローカル)
1
2
3
4
$ ssh -i aws_key.pem ec2-user@52.68.~~~~~~
The authenticity of host '52.68.~~~~~~ (52.68.~~~~~~)' can't be established.
RSA key fingerprint is eb:7a:bd:e6:aa:da:~~~~~~~~~~~~~~~~~~~~~~~~.
Are you sure you want to continue connecting (yes/no)? 

ターミナルのコマンド待ちの際の左側の表示が、以下の画像のように
[ec2-user| ...

となればログイン成功!

ssh接続

ssh接続は一定時間操作をせずにいると、タイムアウトしてしまう。その場合は、同じコマンドを実行することで、サーバに接続できる。

まとめ

以上で、AWSの設定とEC2インスタンスの生成が完了!

 AWSには非常に多くの仕組みがあり、サーバに関して必要な問題をほとんど解決してくれる。しかし、EC2インスタンスを作ってサービスを公開することにフォーカスすれば覚えることはとても少なく、他のクラウドサービスを使っても流用できる知識となる。