対象読者
- AWS?何それ美味しいの?状態の人
- これからAWSの勉強を始めたい
- コピペしてたらなんとなくできてしまったけど概念も含めてちゃんと理解したい
- VPC, リージョン、アベイラビリティゾーン、サブネット、internet gateway, Nat gateway,EC2あたりを詳しく説明していきます(逆にこれ以外はほぼ説明しません)
今回の構成図
超基本的ですね。
今はこれがなんだかわからなくても大丈夫です。
初めはまずインフラの構成を考えて図に書き起こすことが非常に重要です!
迷ったときは構成図を見直して頭の中を整理しましょう!!
VPCって??
VPCとはAWSが提供する仮装環境です。このVPCの中に作ったものを繋ぎ合わせていきます!
##リージョンって?
リージョンとは日本語で領域を表す単語です。
AWSは世界各地に複数のリージョンで分割しリージョンごとにクラウドコンピューティングサービスを提供します!!
日本には東京と大阪リージョンがあります!!
自分は関東に住んでいるので東京リージョンを選択します!
例えば日本にいるのに、アメリカのリージョンを選択してるとします。
そうするとアクセスした際にアメリカまでデータを取りに行って戻ってくる。といったイメージになります。
必ず日本にいるならば日本のリージョンを選択しましょう!
アベイラビリティゾーン(AZ)って??
AZとはデータセンターの役割をしています!
リージョンを囲むように配置されています!
アベイラビリティゾーンはデータを分散して管理しており、東京に4つ、大阪に3つ配置されています。
ちなみに東京の1bのリージョンは古いもので最新版だと出てこないそうです!
##サブネットって??
サブネットとは簡単にいうとIPアドレスの範囲を指定しネットワークを小さな単位に切り分けることです!
IPアドレス...インターネット上の住所のようなもの。
0〜255の数字で4ブロックで構成される
0.0.0.0/0 ...これは全てのIPアドレスという意味です!
10.23.59.223/32 ...スラッシュ32であれば一つのIPアドレスを表します!
つまり 10.21.59.223です
10.23.59.22/24 ... スラッシュ24は第4オクテッドが自由に使える状態です!
10.21.59.* つまり0~255の好きな状態が使えるということですね!
10.21.59.23/16 ...スラッシュ16は第3、第4オクテッドが自由に使える状態です!
10.21.. こちらも0~255がしようできます!
このようにIPアドレスを単位で切り分けるのがサブネットです。
パブリックサブネットとプライベートサブネット
違いとしてはインターネットに接続できるか接続できないかの違いです。
パブリックサブネット ...インターネットに接続できる
プライベートサブネット... インターネットに接続できない
ここで登場するのがinternet gatewayとNat gatewayです!
パブリックサブネットのEC2はinternet gatewayと繋がることによってインターネット接続が可能になります!!
internet gateway...VPCないのAWSリソースとインターネットをつなげる役割をしている。
自動でスケールするので可用性が非常に高い。
そして実はプライベートサブネットもNat gatewayに繋がることによってインターネットに繋がることができるのです!!
図を見るとわかりやすいかと思いますが、インターネッとgatewayとNat gatewayが繋がりそれとプライベートサブネットが繋がることによりこちらもインターネットにアクセス可能になります。
Nat gateway... プライベートサブネットからインターネッとへの接続を可能にする。
ただし発信はできるが受信はできません!!!
プライベートサブネットにはデータベースなどのデータを保管することが多いです。
そしてこれらの設定をするのがRoute tableです!
Route table...サブネットに関連付けて使用する。サブネットからの通信のルールを設定することができる
最後にEC2
ここまで普通にEC2といってきましたが、EC2とはAWSの仮装サーバーのことです!!
サーバーなので当然中身は
OS, CPU, SSD, メモリ, NICのような構成になっています。
OS...スマートフォンやパソコンに搭載されたソフトウェア(MacOSとかWindowsOSとか)
CPU...これはコンピューターの脳味噌とか言われたりします、CPUが強いほどパワーのあるマシーンだと思っていてください。
メモリ...これは作業環境の広さだと思ってください。メモリが大きいほど、同時にタスクを行えます。
例えば...動画編集をしながらchromeを開いて、フォトショで写真加工をしている。
こんな同時タスクをすると当然パソコンは重くなります、メモリが多ければ多いほどこういった同時タスクが快適に行えるイメージです!
SSD...これは単純に容量ですね。
NIC...ネットワークカード、線をつないでインターネッとに接続する時に必要な部品
EC2では
OS→AMI
CPU, メモリ→インスタンスタイプ
SSD→EBS
NIC→ENI
のような構成になっています!
説明は以上です!!
ここから実際に管理画面を触っていきましょう!!
AIMユーザーでログイン
AWSにはルートユーザーとIAMユーザーというものが存在します!
始めにルートユーザーでクレジットカードなどを登録し、請求などはこちらで見れる状態になります。
基本的にはルートユーザーでは作業せずIAMユーザーで通常の作業をすることをAWSは推奨しています!
まるで囲んでいる部分がリージョンになります!!
こちらが東京になっていることを確認しましょう!!!
大阪が近ければ大阪でもいいと思います!!!
VPCを作成する
まずはVPCを作成していきます!
VPCはAWSの仮装環境でしたね!
つまり一番大枠の部分になります。
検索ウィンドウからVPCと検索しましょう!
初めからデフォルトVPCが一つある状態になっています!!
VPCは今回あh10.0.0.0/21でしたね!!
名前の部分は自分でかっこいい名前をつけてあげましょう!!
今回はtest-vpcにします!!
これでVPCを作成。
ここができた状態ですね!!
大枠のVPCができたので次はその中のサブネットを分割していきます!!
サブネットを分割する
サブネットとはIPアドレスを小さな単位に分けることでしたね!!
今回は予定通り10.0.0.0/24と10.0.2.0/24で分けていきたいと思います!!
VPCが作成されるとこんな画面になってると思うので、次はサブネットを選択しちゃいましょう!!
そしてミグ上のサブネットを作成をクリック!!
VPCは先ほど作成したVPCを選択しましょう!!
サブネット名は今回はtest-subnet1とします!こちらは自由煮付けて問題ないです。
リージョンはデータセンターのことでしたね。
今回は4つ(新しいと3つ)あるうちの1aを選択していきます。
10.0.0.0/24で作成しましょう!!
こちらはPublic subnetにします!
作成をクリック!
次はprivate subnetを作成していきます!!
先ほどと同じ手順でIPアドレスの部分を
10.0.2.0/24で作成しましょう!!
名前はわかりやすいよう今回自分はtest-subnet2とします!
正常に作成されていればこのように2つサブネットができてるかと思います!!!
インターネッとゲートウェイをアタッチする
では作成したVPCにインターネッとゲートウェイをアタッチしていきます!
インんターネットゲートウェイはVPCにアタッチするんでしたね!!
これをアタッチすることによりインターネットに接続可能になります!!
左側のタブからインターネットゲートウェイを選択し、右上の作成をクリック!!
名前だけつけて作成です!!
これは作成しただけでは意味がありません!
もちろんVPCは先ほど作成したVPC(test-vpc)を選択してください!
こちらで正常にアタッチされます!!
今やって行ったのがここですね!
VPCににアタッチされているのがよくわかると思います!!
始めに構成図を作成するメリットがだんだんわかってきたのでしょうか??
必ず手書きでもいいので初めは構成図を書きましょう!!!
internet gatewayはRoute tableで設定していく必要があります!
Route table...サブネットに関連付けて使用し、サブネットから外に出る通信をどこに向けて発信するかルールを決めることができる。
サブネットを選択し、Public Subnetのていで作成したtest-subnet1を選択し、ルートテーブルを選択しましょう!!
デフォルトではlocalのデフォルトルートが設定されているかと思います!
localとはVPCの中、といった意味です!
こちらに先ほど作成したinternet gatewayを設定していきましょう!
ではルートテーブルのページを開きこちらでルートテーブルの追加を行っていきます!
こちらにそってルートの編集をチェックします!!
そこからルートの追加です!
今回は全ての通信を意味する0.0.0.0/0を選択しもちろんinternet gatewayを選択してください!!
これでルートの保存です!
今行って行ったのがこちらの部分ですね!
internet gatewayを設定できたので、次はEC2とNatgateWayを作成して行ったら良さそうですね!!
まずはEC2からやっていきましょう!
EC2を作成する
EC2とはAWSの仮装サーバーのことでしたね!!(ここからはEC2のことをインスタンスと呼んでいきます!)
EC2を選択しインスタンス→インスタンスを起動を選択
次にインスタンスの種類を選択していきます!!
AMIって??
AMIとは簡単にいうとAWSのサーバーのOSを意味するものです!
インスタンスを作成する際は必ずこのAMIを選択していきます!
今回は一番上のAmazon Linux 2を選択していきます!
サーバーOSで一番有名な物はLinuxです、Amazon Linux 2はこのLinuxをAWSがカスタムしたものになります。
こう言ったカスタムされたLinuxをディストリビューションといいます!!(CentOS, Ubuntuなど)
次はインスタンスタイプの選択をしていきます!
インスタンスタイプって??
インスタンスタイプとはサーバーのCPU, メモリの部分を表します
こちらはいろいろな種類がありますが、今回はt2microを選択していきます!
色々な種類がありますが、頭文字のアルファベットで判断していくとこの辺りはわかりやすいです。
t系...テスト向きのインスタンス
M系...汎用タイプの万能タイプ(迷ったらTかMを選択しておけば大きな失敗はないです)
R系...こちらはメモリをよく使うものに適しています
P系...高速コンピューティングが可能、唯一GPUがついている
H系...大容量のストレージがある
と言った感じになります。
色んな種類がありますが、とりあえず初めのうちはこれだけ抑えておけば全く問題ないです!
ではt2microを選択して
右下のインスタンスの詳細設定をクリックします!(ここで確認と作成を推しちゃうと作成されちゃうので気をつけましょう)
VPCはtest-vpcを選択し、サブネットはPublic Subnetのていのtest-subbet1を選択しましょう。
自動割当パブリックIPを有効にします。
次にストレージの追加です。
こちらはデフォルトの状態で問題ありません。
次にタグ追加で名前をつけてあげましょう!
ではそれで確認と作成です!
起動を押すとキーペアの作成画面に入るのでこちらは新しいキーペアを作成でキーペア名を自由に決めてください!
ダウンロードをおして今回はデスクトップに保存しておいてください!!
こちらあとで使用します!!
インスタンスを作成です!!
インスタンスのページに言ってtest-ec-1が実行中になれば成功です!!
セキュリティグループの作成
では次にセキュリティグループを作成していきましょう!!
こちらはAWSの仮装ファイヤーウォールです。
セキュリティグループの作成をクリック!
今回はSSH接続をしていきたいのでインバウンドルールにSShを選択します。
インバウンドは入ってくる通信、アウトバウンドは出ていく通信を意味します!
またセキュリティグループ名などを選択し、VPCは必ず作成したものにしてくださいね!!
では作成したのでこちらを先ほどのインスタンスに設定していきましょう!
再びインスタンスの画面から先ほど作成したインスタンスを選択し、セキュリティグループを選考をクリックします!
先ほど作ったセキュリティグループを追加し、デフォルトの物を削除します!
こちらで保存です!
セキュリティの部分からセキュリティグループが変更されているか確認することができます!!
EC2 にSSHでログインする
まーつまりクライアント(今から行うターミナル)から暗号化された通信で安全んいEc2にアクセスするってことです!笑
先ほどのキーペアはサーバーにアクセスするための鍵だと思っていてください!
ではターミナルを開いていきましょう!
まずは権限を設定していきましょう!
cd Desctop/
まずはキーペアのあるデスクトップに移動していきます
ls -l
-r--------@ 1 ユーザー名 staff 1700 2 11 07:19 key.pem
ls -lで権限を確認することができます。
ユーザー名に書かれている前のが権限ですね.
こちらの権限が弱いとEC2にアクセスすることができないので権限を変更していきます
chmod 400 key.pem
key.pemの部分は自分で消えたkeyの名前にしてください!
chomd 400はUnix系のOSで使えるコマンドで、権限の変更を行います。
400とは所有者のみ読み込みの権限を与えると言った意味です!
ssh -i キーペア名 ec2-user@パブリックIP
パブリックIPは
インスタンスの詳細から確認してコピーしましょう!!
__| | )
| ( / Amazon Linux 2 AMI
|_||
こんな感じのが出たら成功です!
ちなみにこちらのパブリックIPアドレスはインスタンスを更新や再起動をすると変更されてしまいます。
これを静的に固定するのがElastic IP addressです
Elastic IP addressって??
インスタンスにアタッチ、でタッチ可能な、静的なパブリックIPアドレス
静的なのでインスタンスが再起動や停止しても同じアドレスが保たれます!!
VPCの画面からElastic IP addressを選択しアドレスの割当をクリックします!!
その後割当をします。
割り当てができたら次は関連付けを行っていきます!
アクションから関連付けをクリックしましょう!!
インスタンスは作成したtest-Ec2インスタンスを選択します。
関連付けをクリック!
これで関連付けが完了になります!
これでPublic SubnetのEC2は接続完了になります!!
次にprivate SubnetのEC2を作成していきましょう!
private SubnetのEC2 を作成
こちらの部分になります!
Public Subnetと同様にEC2→インスタンス→インスタンスを起動を選択します!
またAMIはt2microを選択してください!
サブネットの部分を先ほどと違うtest-subnet2のプライベーとSubnetを選択します。
そのあとは次のステップに進んでいきタグの追加の部分で名前をまたつけてあげましょう!
今回はtest-ec2-2とします!
そのあとは全て進んでいただいて起動をクリックします!
今回は先ほど作成したキーペアをまた使用していきたいので、既存のキーペアを作成を選択します!
今回はssh接続で一度test-ec2-1に入りそこから今作成したtest-ec2-2に入るような形で実装していきます!!
まずはキーペアの情報をtest-ec2-2に送る必要があります!
scp -i key.pem key.pem ec2-user@54.150.118.26:/tmp/
ここではscpコマンドをつかっています!
scpコマンド...リモートマシンとローカルマシン、またわリモートマシン同士でファイルをコピーする際に使用するLinuxのコマンド。こちら通信にはsshを使用するのでsshコマンドと同じでデータはしっかりと暗号化されます!!
-iのオプションはssh接続に使用する鍵ファイルを指定するオプションです!!
key.pemは自分んおキーペア名、IPアドレスはec2-1の物を選択しましょう!
つまりコードの意味としてはkey.pemを/tmp/ファイルにコピーしてね!
みたいな感じになります!
yesかnoで聞かれたらyesでしましょう!f
ではまずこれでtest-ec2-1にログインします
ssh -i key.pem ec2-user@54.150.118.26
cd /tmp/
ls
tmpに移動しlsコマンドを使うと、キーペアがコピーされているのがわかると思います!
これが先ほどのコマンドです!
さらにこちらからtest-ec2-2にログインします!
ssh -i key.pem ec2-user@10.0.2.105
今回のIPアドレスはec2-2の方のプライベーとIPアドレスを使用します!
![スクリーンショット 2021-02-14 22.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/d00a72b7-9139-0ef7-7f47-
これでログインできます!!
では最後にこちらをNat gatewsyを経由してインターネットに接続していきたいと思います!
## Nat gatewayを作成する
VPC→NAT gateway→NAT gatewayを作成の順番でクリックしていきます!
サブネットはPublic Subnetの方に配置するんでしたね!
Elastic IP addressを割り当てていきます!
こちらで作成します!
そして通信の設定に関してはRoute tableで行うんでしたね!
VPC→ルートテーブルで
ルートテーブルの作成を行っていきましょう!
こちらで先ほど作成したNAT gatewayを選択してルートの保存をクリックで編集完了です!
ではtest-ec2-2のルートテーブルの関連付けを編集していきましょう!
写真のようにように関連付けの編集をクリックします!!
こちらで先ほど作成したRoute table を選択します!!
これで完成です!!
お疲れ様でした!!!
最後に
ちなみに作った環境をそのままにしていくと料金が発生するので運用しない場合は環境を壊して置くことをおすすめします!!
手順としてはEC2の削除→NAT gatewayの削除→Elastic IPの開放→VPCの削除です!!
今回はAWSクラウドテックで勉強した内容をアウトプットしていきました!
かなり深く学べるのでAWSの学習を検討している方は本当におすすめです!!