概要
アラフォーの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ゲートウェイ・・・プライベートサブネットからインターネット等を接続できるようにする。
構成図
EC2作成(パブリック)
パブリックサブネットに設置するEC2を作成します。
まず、AWSマネージメントコンソールでEC2を検索して、EC2のダッシュボードを開きます。
AMIを選択します。今回は標準的なAmazon Linux2の64ビット(x86)を選択します。
インスタンスタイプを選択します。
ここでは一番オーソドックスで無料枠でもあるt2.microを選択します。
次のステップ:インスタンスの詳細の設定を押します。
インスタンスの詳細の設定をします。
ネットワーク・・・test-vpc
サブネット・・・Public_subnet_1a_0
自動割り当てパブリック・・・有効
次のステップ:ストレージの追加を押します。
ストレージの追加はデフォルトのまま次のステップ:タグの追加を押します。
セキュリティグループは一旦このままで。確認と作成ボタンを押します。
プルダウンから新しいキーペアの作成を選択します。
キーペア名としてPublic_keyと入力します。
キーペアのダウンロードを任意の場所にします。
※キーペアのダウンロードは1度だけしかできないので、慎重に実施すること。また
流出した場合、悪用されるため、厳重に管理すること。
その後、インスタンスの作成を押します。
この画面に遷移したらインスタンスの表示を押して待ちます。
しばらく待ちます。
更新ボタンを1分間に1回ぐらい押しながら、ステータスチェックが変わるまで待ちます。
インスタンスの状態が実行中、「ステータスチェックが2/2のチェックに合格しました。」となれば、起動に成功しました。その後、Nameの左のチェックボックスにチェックを入れてください。情報が表示されます。
次に、セキュリティーグループの設定をしていきます。セキュリティーグループはデフォルトで付与されていて、ログインできるようになっていますが、練習のため、作成します。
下のwindowからセキュリティータブを選択してください。デフォルトでlaunch-wizard-1が
付与されているのがわかります。
では作成していきましょう。EC2のダッシュボードより、セキュリティグループを選択します。
最初にいくつかデフォルトで出来上がっていますが、今回は新規で作成するので、セキュリティグループを作成を押します。
以下入力して、セキュリティグループの作成を押します。
基本的な詳細
セキュリティーグループ名・・・SG_Public
説明・・・SG_Public
VPC・・・test-vpc
インバウンドルール
タイプ・・・SSH
ソースのIPアドレス・・・0.0.0.0/0
インバウンドルールというのは、インターネットからの入ってくる許可をするルールとなります。0.0.0.0/0はすべての送信先という意味です。
よって、SSH接続をすべての送信先で許可するというルールになります。
確認画面より、セキュリティグループの作成内容を確認します。
EC2のダッシュボードより、インスタンスを選択。対象のEC2を選択して
アクション→セキュリティ→セキュリティグループを変更を選択します。
次に先ほど作成したSG-Publicを選択してセキュリティグループの追加を押してください。
またセキュリティタブのインバウンドルールより付与されているのが確認できます。
ここで、EC2にアクセスしたい所ですが、念のため、サブネットに付与されているネットワークACLを確認します。
VPCのダッシュボード→サブネット→対象のサブネットを選択。下のwindowからネットワークACLタブを選択します。
インバウンド・アウトバウンドで0.0.0.0/0でAllowとなっていれば、
すべてのIPアドレスの通信が許可されています。
ではEC2にアクセスしていきましょう。私のPCはWindowsなので、Windowsでのアクセスとなります。
Windowsからログインする場合はTeratarmというツールを使用します。
PCに入っていない場合はteratarmをGoogleなどから検索して、インストールしておいてください。
ログインする前に、対象のパブリックIPアドレスを確認します。
EC2のダッシュボードを開き、対象のインスタンスを選択したら、下のWindowにパブリックIPアドレスがあります。パブリックIPアドレスはインターネットから接続できるIPアドレスになります。
3.XXX.XXX.XXX.XXXという所を確認します。
先程確認したIPアドレスを入れます。
次に出るWindowは初回ログイン時に必ず出ますので、そのまま続行を押します。
ユーザ名に「ec2-user」と入力します。これはデフォルトで設定されています。
そして、パスフレーズは空白、秘密鍵に前にダウンロードした「Public_key.pem」を選択してOKを押します。
はいログイン出来ました。おめでとうございます!!
__| __|_ )
_| ( / 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アドレスの割り当てをクリックします。
ネットワークポータルグループ・・・ap-northeast-1
パブリックIPv4アドレスプール・・・AmazonのIPアドレスプール
を選択して、割り当てを押します。
はい。ElasticIPアドレスを取得しました。ここからアクションのElasticIPアドレス関連付けを押します。
※ElasticIPアドレス関連付けを行わないと、時間単位で課金されるので、必ずElasticIPアドレスとセットで行うようにしましょう。
作成したEC2のインスタンス名とプライベートIPアドレスを選択して、
関連付けるを押します。
関連付けられたインスタンスにEC2のインスタンスが入っていれば成功です。
では、ログインしてみましょう。
ログイン手順は新しいIPアドレスになるだけで、手順は同じ(同じ鍵でteratarmへ接続)になります。
接続されました。成功です。
次にプライベートサブネットのEC2を作成します。
今までやった手順で以下を作成してみましょう。
ネットワーク・・・test-vpc
サブネット・・・Private_subnet_1a_2
キーペア・・・Private_key.pem
インスタンス名・・・Private_EC2
※キーペアはPublic_EC2とは別のものを使用します。
セキュリティーグループ・・・SG_Private
※デフォルトのSSHが20番ポートで通信のみ出来れば良いです。
ElasticIP・・・有
最終的には、プライベートサブネットなので、インターネットからはログインできないようにするのですが、まずは、ログインできるか確認するために、ここで一度ログインしてみましょう。
今は、インターネットから接続できるので、パブリックになっています。
これを、プライベートにすれば良いわけです。それには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アドレスを使用するので、確認します。
コマンドは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をプライベートサブネットに設置したことになります。
名前-オプション・・・Nat gateway
サブネット・・・Public_subnet_1a_0
接続タイプ・・・パブリック
その後、Elastic IPの割り当てを押して、Elastic IP割り当てIDに値が入るようにします。
そして、NATゲートウェイ作成ボタンを押します。
状態がPendingになっているので、Natゲートウェイ作成画面に戻り、更新ボタンを押しつつ作成されるまで待ちます。
更新ボタンを数回押し、状態がAVailableになれば、作成完了です。
続きましてプライベートサブネットからNATゲートウェイにルーティングします。
VPCのダッシュボードからルートテーブルを選択します。
ルートテーブルを作成を押します。
名前-オプション・・・private-route
VPC・・・test-vpc
ルートテーブルを作成を押します。
はい、作成されましたね。
ルーティングを実施します。手順は2つです。
①インターネットへ出るために0.0.0.0/.0 NATgatewayのルーティング追加。
②Private_SubnetからNatgatewayへのルーティング追加。
ルートの編集を押します。
ルートの追加を押し、
送信先・・・0.0.0.0/0
ターゲット・・・nat・・・
とし、変更を保存を押します。
サブネットの関連付けを選択します。
Private_subnet_1a_2を選択して、関連付けを保存を押します。
はい、プライベートサブネットからNAT gatewayへのルーティングを行いました。
はい、これで完成です。
これから2つテストして、正常性を確認します。
①Private_EC2にインターネットからログインできないこと。
②Private_EC2にpublic_EC2にログインし、インターネットへ接続できること。
はい、teratarmからPrivate_EC2のIPアドレスを入力してもログインできませんでした。
つづいて、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つ選択し、インスタンスの状態画面からインスタンスの終了を選択します。
NATゲートウェイの削除
NATゲートウェイの画面からNATゲートウェイの削除を選択します。
更新ボタンを数回押して、Deletingになったら終了です。
VPCの削除
VPCの選択画面から対象のVPCを選択して、アクションからVPCの削除を押します。
そうすることで、関連付けられているサブネットやインターネットゲートウェイ、ルーティングも削除されます。
はい。VPCがなくなったら成功です。