LoginSignup
0
1

More than 1 year has passed since last update.

超初心者がAWSについて勉強してみた①~EC2編~

Last updated at Posted at 2021-06-28

概要

アラフォーのAWS初心者が学んだことをつらつら書いていきます。

今回の目標

EC2インスタンスを作成して、自宅からログインする

教材

AWS CloudTechで学びはじめました。
AWSを学びたい人は心者でも丁寧にまた安価(参考書1冊分+コーヒー2缶)で学べるのでお勧めです。

前提

インターネットゲートウェイ編が完了していること。

用語集

EC2インスタンス・・・AWS上で起動するOSを乗せた仮想サーバのこと。

AMI・・・Amazon Machine Imageの略で、インスタンス作成時に選択するOSイメージのこと。

キーペア・・・EC2にログインするための鍵の事。流出すると悪用される可能性があるため、厳重に管理すること。

インスタンスタイプ・・・EC2を作成する時に選択する、スペック。当然スペックが高いほど料金が上がる。

ElasticIP・・・IPアドレスを固定したいときに使用する。料金は以下

概要 料金
起動中のEC2に割り当てたIPアドレス(1台目) 無料
それ以外 0.005ドル/1時間

※EC2削除時、ElasticIPを消し忘れて、どこにも割り当てられていないElasticIP
が出来て、課金され続けることもあるので注意すること。(ElasticIPを削除すれば問題ない。)

セキュリティグループ・・・EC2に設定するファイアーフォール機能。通信を制御する。

ネットワークACL・・・サブネットに設定するファイアーウォール機能。通信を制御する。

NATゲートウェイ・・・プライベートサブネットからインターネット等を接続できるようにする。

構成図

一気に作成しちゃいます。少し長いかも・・・
構成図.png

EC2作成(パブリック)

パブリックサブネットに設置するEC2を作成します。

まず、AWSマネージメントコンソールでEC2を検索して、EC2のダッシュボードを開きます。

EC2検索.png

インスタンスを選択します。
インスタンス選択.png

インスタンスの起動を押します。
インスタンス起動.png

AMIを選択します。今回は標準的なAmazon Linux2の64ビット(x86)を選択します。
AMI選択.png

インスタンスタイプを選択します。
ここでは一番オーソドックスで無料枠でもあるt2.microを選択します。
次のステップ:インスタンスの詳細の設定を押します。
インスタンスタイプ選択1.png

インスタンスの詳細の設定をします。
ネットワーク・・・test-vpc
サブネット・・・Public_subnet_1a_0
自動割り当てパブリック・・・有効

次のステップ:ストレージの追加を押します。

インスタンス設定選択.png

ストレージの追加はデフォルトのまま次のステップ:タグの追加を押します。
ストレージ追加.png

タグの追加で、EC2の名前を記入します。
タグの追加.png

キー・・・Name
値・・・Public_EC2
タグ追加11.png

セキュリティグループは一旦このままで。確認と作成ボタンを押します。

セキュリティーグループ1.png

起動ボタンを押します。
起動ボタンを押す.png

プルダウンから新しいキーペアの作成を選択します。
キーペア名としてPublic_keyと入力します。
キーペアのダウンロードを任意の場所にします。
※キーペアのダウンロードは1度だけしかできないので、慎重に実施すること。また
流出した場合、悪用されるため、厳重に管理すること。

その後、インスタンスの作成を押します。

key選択.png

この画面に遷移したらインスタンスの表示を押して待ちます。
しばらく待ちます。
インスタンスの表示.png

更新ボタンを1分間に1回ぐらい押しながら、ステータスチェックが変わるまで待ちます。
statusチェック.png

インスタンスの状態が実行中、「ステータスチェックが2/2のチェックに合格しました。」となれば、起動に成功しました。その後、Nameの左のチェックボックスにチェックを入れてください。情報が表示されます。
インスタンスの状態.png

次に、セキュリティーグループの設定をしていきます。セキュリティーグループはデフォルトで付与されていて、ログインできるようになっていますが、練習のため、作成します。

下のwindowからセキュリティータブを選択してください。デフォルトでlaunch-wizard-1が
付与されているのがわかります。
セキュリティーグループ設定.png

では作成していきましょう。EC2のダッシュボードより、セキュリティグループを選択します。
セキュリティーグループ(EC2ダッシュボード).png

最初にいくつかデフォルトで出来上がっていますが、今回は新規で作成するので、セキュリティグループを作成を押します。
セキュリティグループの作成ボタン.png
以下入力して、セキュリティグループの作成を押します。

基本的な詳細
セキュリティーグループ名・・・SG_Public
説明・・・SG_Public
VPC・・・test-vpc

インバウンドルール
タイプ・・・SSH
ソースのIPアドレス・・・0.0.0.0/0

インバウンドルールというのは、インターネットからの入ってくる許可をするルールとなります。0.0.0.0/0はすべての送信先という意味です。
よって、SSH接続をすべての送信先で許可するというルールになります。

セキュリティーグループ作成.png

確認画面より、セキュリティグループの作成内容を確認します。

セキュリティグループ確認.png
ではセキュリティグループをEC2に付け替えます。

EC2のダッシュボードより、インスタンスを選択。対象のEC2を選択して
アクション→セキュリティ→セキュリティグループを変更を選択します。

まずは、付与されているセキュリティグループを削除します。
セキュリティーグループ削除.png

次に先ほど作成したSG-Publicを選択してセキュリティグループの追加を押してください。
セキュリティグループ追加1.png

付与されているのが確認出来たら、保存を押します。
セキュリティグループ保存.png

またセキュリティタブのインバウンドルールより付与されているのが確認できます。

セキュリティグループ確認1.png

ここで、EC2にアクセスしたい所ですが、念のため、サブネットに付与されているネットワークACLを確認します。

VPCのダッシュボード→サブネット→対象のサブネットを選択。下のwindowからネットワークACLタブを選択します。
インバウンド・アウトバウンドで0.0.0.0/0でAllowとなっていれば、
すべてのIPアドレスの通信が許可されています。

ネットワークACL.png

ではEC2にアクセスしていきましょう。私のPCはWindowsなので、Windowsでのアクセスとなります。
Windowsからログインする場合はTeratarmというツールを使用します。
PCに入っていない場合はteratarmをGoogleなどから検索して、インストールしておいてください。

ログインする前に、対象のパブリックIPアドレスを確認します。
EC2のダッシュボードを開き、対象のインスタンスを選択したら、下のWindowにパブリックIPアドレスがあります。パブリックIPアドレスはインターネットから接続できるIPアドレスになります。
パブリックIPアドレス確認.png
3.XXX.XXX.XXX.XXXという所を確認します。

それでは、teratarmを開きましょう。
teratarm.png

先程確認したIPアドレスを入れます。

teratarmログイン.png

次に出るWindowは初回ログイン時に必ず出ますので、そのまま続行を押します。

ログイン1.png

ユーザ名に「ec2-user」と入力します。これはデフォルトで設定されています。

そして、パスフレーズは空白、秘密鍵に前にダウンロードした「Public_key.pem」を選択してOKを押します。

ログイン3.png

はいログイン出来ました。おめでとうございます!!

    __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-136 ~]$

ここからはLinuxコマンドが必要ですが、簡単なコマンドは書籍やgoogleで学んでおいていただければと思います。今回使用するコマンドは以下となります。
cd
cp
ls
chmod
pwd
exit
これくらいですかね。

では一旦、teratarmを閉じます。

[ec2-user@ip-10-0-0-136 ~]$ exit

次に、ElasticIPアドレスを設定します。作成したEC2にはパブリックIPアドレスが設定されていますが、これはインスタンスを停止したり、再起動するとIPアドレスが変わってしまいます。それを変えないためにElasticIPアドレスを設定します。
個人的な勉強とかなら設定する必要ありませんが、持続しているホームページなど、インスタンスが停止するたびにIPアドレスが変わってたら困りますよね? 要はIPアドレスを固定したい時に利用します。

ではElasticIPを設定していきます。左ペインからElasticIPを選択します。
ElasticIP選択.png

ElasticIPアドレスの割り当てをクリックします。

ElasticIP割り当て.png

ネットワークポータルグループ・・・ap-northeast-1
パブリックIPv4アドレスプール・・・AmazonのIPアドレスプール
を選択して、割り当てを押します。

ElasticIPアドレス割り当て.png

はい。ElasticIPアドレスを取得しました。ここからアクションのElasticIPアドレス関連付けを押します。

※ElasticIPアドレス関連付けを行わないと、時間単位で課金されるので、必ずElasticIPアドレスとセットで行うようにしましょう。

IPアドレス関連付け(ElasticIP).png

作成したEC2のインスタンス名とプライベートIPアドレスを選択して、
関連付けるを押します。
ElasticIPアドレス関連付け1.png

関連付けられたインスタンスにEC2のインスタンスが入っていれば成功です。
ElasticIPアドレス割り当て確認.png

では、ログインしてみましょう。
ログイン手順は新しいIPアドレスになるだけで、手順は同じ(同じ鍵でteratarmへ接続)になります。

接続されました。成功です。

new接続.png

次にプライベートサブネットのEC2を作成します。
今までやった手順で以下を作成してみましょう。
ネットワーク・・・test-vpc
サブネット・・・Private_subnet_1a_2
キーペア・・・Private_key.pem
インスタンス名・・・Private_EC2
※キーペアはPublic_EC2とは別のものを使用します。
セキュリティーグループ・・・SG_Private
※デフォルトのSSHが20番ポートで通信のみ出来れば良いです。
ElasticIP・・・有

最終的には、プライベートサブネットなので、インターネットからはログインできないようにするのですが、まずは、ログインできるか確認するために、ここで一度ログインしてみましょう。

はい。まずはログイン出来ました。
Public-EC2.png

今は、インターネットから接続できるので、パブリックになっています。
これを、プライベートにすれば良いわけです。それには2つの工程が必要となります。
1、パブリックサブネットにある、Public_EC2を踏み台としてプライベートサブネットにあるPrivate_EC2にログインする。

2、NAT_gatwayを設置して、インターネットに出る出口のみを作成する。
プライベートサブネットのEC2にログインする入り口を設置しない。

まず、1をやります。

では、Public_EC2にログインしましょう。
次に、keyディレクトリを作成します。

[ec2-user@ip-10-0-0-136 ~]$ mkdir key
[ec2-user@ip-10-0-0-136 ~]$ ls
key
[ec2-user@ip-10-0-0-136 ~]$

keyディレクトリにPrivate_key.pemを転送します。
転送方法は色々ありますが、teratarmへクリック&ドロップをすれば
視覚的にわかると思います。

[ec2-user@ip-10-0-0-136 key]$ ls -l
total 4
-rw-r--r-- 1 ec2-user ec2-user 1700 Jun 13 14:28 Private_key.pem
[ec2-user@ip-10-0-0-136 key]$

転送したkeyのパーミッションが644になっています。パーミッションについては難しくないので、ググってください。
このパーミッションを400にします。
※Linuxで使用する場合、パーミッションを400にする必要があるようです。

[ec2-user@ip-10-0-0-136 key]$ chmod 400 Private_key.pem
[ec2-user@ip-10-0-0-136 key]$ ls -l
total 4
-r-------- 1 ec2-user ec2-user 1700 Jun 13 14:28 Private_key.pem

Private_EC2へログインするためのkeyをPublic_EC2で使用する準備が出来ました。

ではPublic_EC2からPrivate_EC2へログインします。Private_EC2にログインするにはプライベートIPアドレスを使用するので、確認します。

PrivateIPアドレス.png

コマンドはssh -i [キーの場所] [ユーザー名]@[IPアドレス]になります。

[ec2-user@ip-10-0-0-136 key]$ ssh -i Private_key.pem ec2-user@10.0.2.7
Last login: Wed Jun 23 13:39:20 2021 from 10.0.0.136

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-2-7 ~]$

はい。ログイン出来ました。ただ、これだけでは、EC2からログインできただけで、
インターネットからでもログインできます。これをNAT_gatwayを設置して
インターネットからは接続できないように、インターネットへ接続できるようにして
初めてPrivate_EC2をプライベートサブネットに設置したことになります。

VPCのダッシュボードよりNATゲートウェイを選択します。
NATGatWAY.png

NATGatway作成ボタンを押します。
NatGatwayボタン.png

名前-オプション・・・Nat gateway
サブネット・・・Public_subnet_1a_0
接続タイプ・・・パブリック
その後、Elastic IPの割り当てを押して、Elastic IP割り当てIDに値が入るようにします。
そして、NATゲートウェイ作成ボタンを押します。

NATGatWAY2.png

状態がPendingになっているので、Natゲートウェイ作成画面に戻り、更新ボタンを押しつつ作成されるまで待ちます。

作成中.png

更新ボタンを数回押し、状態がAVailableになれば、作成完了です。
N作成済.png

続きましてプライベートサブネットからNATゲートウェイにルーティングします。
VPCのダッシュボードからルートテーブルを選択します。
R-1.png

ルートテーブルを作成を押します。

R2.png

名前-オプション・・・private-route

VPC・・・test-vpc

ルートテーブルを作成を押します。

R-3.png

はい、作成されましたね。

R4.png

ルーティングを実施します。手順は2つです。

①インターネットへ出るために0.0.0.0/.0 NATgatewayのルーティング追加。
②Private_SubnetからNatgatewayへのルーティング追加。

ルートの編集を押します。

R-5.png

ルートの追加を押し、
送信先・・・0.0.0.0/0
ターゲット・・・nat・・・

とし、変更を保存を押します。

R-6.png

サブネットの関連付けを選択します。

R9.png

サブネットの関連付けを編集を押します。
サブネットの関連付けを編集を押します.png

Private_subnet_1a_2を選択して、関連付けを保存を押します。
R関連付け.png

はい、プライベートサブネットからNAT gatewayへのルーティングを行いました。

R-P.png

はい、これで完成です。

以下の構成図が出来ました!!
Untitled(1) (4).png

これから2つテストして、正常性を確認します。

①Private_EC2にインターネットからログインできないこと。

②Private_EC2にpublic_EC2にログインし、インターネットへ接続できること。

はい、teratarmからPrivate_EC2のIPアドレスを入力してもログインできませんでした。

T_1.png

つづいて、Public_EC2からPrivate_EC2にログインします。
やり方は覚えていると思いますが、Public_EC2から以下のコメントを入力します。

[ec2-user@ip-10-0-0-136 ~]$ cd key
[ec2-user@ip-10-0-0-136 key]$
[ec2-user@ip-10-0-0-136 key]$ ls
Private_key.pem
[ec2-user@ip-10-0-0-136 key]$
[ec2-user@ip-10-0-0-136 key]$ ssh -i Private_key.pem ec2-user@10.0.2.7

その後、pingコマンドでgoogleに疎通確認します。
※pingコマンドは、ネットワーク上にあるパソコンやルーターなどに対しパケットを送り、きちんと届いて帰ってきているか調べることができます。

[ec2-user@ip-10-0-2-7 ~]$ ping -c 4 google.com
PING google.com (172.217.26.46) 56(84) bytes of data.
64 bytes from nrt12s17-in-f46.1e100.net (172.217.26.46): icmp_seq=1 ttl=104 time=3.30 ms
64 bytes from nrt12s17-in-f46.1e100.net (172.217.26.46): icmp_seq=2 ttl=104 time=2.88 ms
64 bytes from nrt12s17-in-f46.1e100.net (172.217.26.46): icmp_seq=3 ttl=104 time=3.05 ms
64 bytes from nrt12s17-in-f46.1e100.net (172.217.26.46): icmp_seq=4 ttl=104 time=2.94 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.880/3.048/3.307/0.166 ms

はい、インターネットに出れることを確認できました。

長かったですが、「超初心者がAWSについて勉強してみた①~EC2編~」はここまでとなります。

次回はこの基本動作を使用しながらWordPress構築をやりたいと思います。

削除について

これまで作成した部品は今までのままだとお金がかかってしまうため、削除しましょう。

流れとしては
EC2インスタンス削除→NATゲートウェイ削除→VPC削除となります。

①EC2インスタンス削除

EC2を2つ選択し、インスタンスの状態画面からインスタンスの終了を選択します。
EC2インスタンス削除1.png

更新ボタンを数回押し終了済になったら終了です。
終了済111.png

NATゲートウェイの削除

NATゲートウェイの画面からNATゲートウェイの削除を選択します。
N削除.png

更新ボタンを数回押して、Deletingになったら終了です。

NA削除.png

VPCの削除

VPCの選択画面から対象のVPCを選択して、アクションからVPCの削除を押します。
そうすることで、関連付けられているサブネットやインターネットゲートウェイ、ルーティングも削除されます。

V削除.png

はい。VPCがなくなったら成功です。

V削除111.png

0
1
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
0
1