13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS基礎から学習①-EC2の環境構築-

Last updated at Posted at 2021-01-23

今回、AWSの基礎を学び直す目的でEC2の環境構築と接続まで行ったので、その過程と自分なりに気になったポイントを書いていこうと思います。
自分用の備忘録として残していますが、これからAWSの基礎学習を始める方の参考になればと思います。
今回は踏み台用EC2を使って作業用EC2にログインするところまで。

#環境
・MacOS
※macOsとwindowsでは操作方法が異なる部分があるので、ご注意してください。
・AWSサービス(2021/1/22時点)
※各種設定画面は都度アップデートされていますので画像と異なる場合があります。

#目次
1.VPCの作成
2.サブネットの作成
3.インターネットゲートウェイの作成とアタッチ
4.サブネットのルートテーブルの設定
5.EC2踏み台サーバーの作成
6.EC2踏み台サーバーに接続
7.EC2作業サーバーの作成
8.EC2作業サーバーの作成
9.構成図の拡張
10.まとめ

#目標構成図
aws-test.png

#構成図の概要
今回作成する構成図は踏み台サーバーを使って作業サーバーにログインする構成となっています。この構成のポイントは作業サーバーにアクセスするためには必ず踏み台サーバーを経由しなければならない点です。このサーバーがあると誰がどの作業サーバーにアクセスしたかを監視することができるため、セキュリティを高めることが出来ます。

#1.VPCの作成
まずEC2を起動する場所を確保するため、VPCから作成していきます。
VPC1.png
各種設定を行います。
VPC2.png
名前タグ:作成するVPCに任意の名前を与えます。
例→ test-vpc

IPv4 CIDR ブロック:こちらはAWSが指定する○.○.○.○/16〜○.○.○.○/28のプライベートIPアドレスの範囲で設定します。

■プライベートIPアドレス(○.○.○.○)
・10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
・172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
・192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

※プライベートアドレスを使う理由としてはIPアドレスが競合することを防ぐためです。AWSでもプライベートアドレスを使うことが推奨されているのでこちらに従っていきましょう。

またCIDRについての内容を書いてしまうと長くなってしますので、割愛させていただきますが、AWS内のネットワークから自分が使うVPCのネットワークの範囲を借りるようなイメージです。
CIDRイメージ.png
以下の記事でわかりやすく解説されているので合わせて確認してみてください。

https://wa3.i-3-i.info/word11989.html
引用:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

#2.サブネットの作成
次にサブネットの作成を行います。
サブネット1.png
先程作成したVPCを選択し、「パブリックサブネット」、「プライベートサブネット」の2つのサブネットの各種設定を行います。

・パブリックサブネット…直接インターネット接続可能なサブネット
・プライベートサブネット…直接インターネット接続不可なサブネット

1つ目のパブリックサブネット
サブネット2.png
2つ目のサブネット
サブネット3.png
サブネット名:任意の名前を設定します
例→ test-public-subnet
アベイラビリティーゾーン(AZ):アジアパシフィック(東京)/ap-northeast-1aを選択します。

追記:パブリックサブネット、プライベートサブネットの両方を
ap-northeast-1aとしていますが、片方を別AZに設定すると安全性を高められるので安全性を高めたい場合は別AZに設定しましょう。
(こちらご指摘頂きましたので追記致しました。ご指摘頂きありがとうございます。)

IPv4 CIDR ブロック:VPCで指定した範囲内で更に範囲を設定していきます。
サブネットはパブリックとプライベートが判断できる名前としておきましょう。

#3.インターネットゲートウェイの作成とアタッチ
次にサブネットがインターネットに接続できるようするためにインターネットゲートウェイを作成します。
インターネットゲートウェイ.png
名前タグ:インターネットゲートウェイの名前を設定します。
例→ test-internetgateway

インターネットゲートウェイ2.png
作成後、作成したVPCにインターネットゲートゲートウェイをアタッチ(VPCにインターネットに接続するため入り口を用意)するためにアクションからVPCにアタッチを選択。
インターネットゲートウェイ3.png
作成したVPCを指定し、インターネットゲートウェイにアタッチをクリックする。

インターネットゲートウェイ4.png
アタッチ後、状態を確認しアタッチされたことを確認します。

#4.サブネットのルートテーブルの設定
VPCにインターネットゲートウェイをアタッチしてもサブネットはインターネットには接続できませんのでルートテーブルでサブネットがインターネットに接続できるように設定します。
(※自分の経験談ですが、ここを設定し忘れてEC2と接続出来ない!ということが多々あるので忘れないようにしましょう。)
ルートテーブル1.png
パブリックサブネットのルートテーブルタブをクリックし、上記赤枠で囲まれたルートテーブルクリックし、設定画面に移ります。
ルートテーブル2.png
上記ルートタブのルートの編集をクリック。
ルートテーブル3.png
送信先:0.0.0.0/0(インターネット)
ターゲット:作成したインターネットゲートウェイを指定
ルートの保存をします。
ルートテーブル4.png
ルートテーブルにインターネットゲートウェイが設定されたことを確認。
これでパブリックサブネットがインターネットと接続可能になります。

ここで注意したいのは、先ほど編集したルートテーブルがプライベートサブネットにも適用されてしまう点です。これは各サブネットを明示的に関連付けを行わなかったためです。
そこで
①パブリックサブネット用のルートテーブルの追加
②各ルートテーブルをサブネットの関連付け
を行います。
###①プライベートサブネット用のルートテーブルの追加
ルートテーブル5.png
まずはVPCメニューのルートテーブルをクリックし、下記画面のルートテーブルを作成をクリックします。
ルートテーブル6.png
名前タグ:任意の名前を設定
VPC:作成したVPCを選択
2つの値を設定し、作成ボタンで作成します。
ルートテーブル7.png
作成後、最初に作成されたルートテーブル(※パブリックサブネット用)Nameが設定されていないので区別しやすいように設定します。
###②各ルートテーブルをサブネットの関連付け
ルートテーブル8.png
ルートテーブルを作成後、それぞれをサブネットの関連付けを行います。
・パブリックサブネットのルートテーブル
ルートテーブル9.png
・プライベートサブネットのルートテーブル
ルートテーブル10.png
それぞれ選択後保存ボタンで設定を保存します。
これでプライベートサブネットのルートテーブルからインターネットへの接続設定がなくなっているかと思います。
ルートテーブル11.png

###現時点の構成図
aws-test_1.png

#5.踏み台サーバーの作成
次は本命のEC2インスタンスを作成を行います。
EC2_1.png
AWSのEC2サービス画面からインスタンスの起動ボタンをクリック。
EC2_2.png
AMIを選択していきますが、ここではさまざまなOSを選択することが出来ます。
今回は標準のAmazonLinux2を選択します。
EC2_3.png
次にインスタンスタイプを選択します。
インスタンスタイプは簡単に言うとEC2の性能を選択する画面になります。
今回は無料枠のt2.micro選択します。
その他を選択すると課金対象となってしまうので気をつけてください。
各パラメータの名称は以下の通り

・「t2」部分…インスタンスファミリー
→「t」が各用途に応じて変更する。(機械学習用など)
→「2」世代を表す。値が大きいほど性能の高いものになります。

・「micro」部分…インスタンスサイズ
→EC2のメモリ、vCPUの数を表しており、EC2の性能を表している。
EC2_4.png
ネットワーク:作成したVPCを選択
サブネット:パブリックサブネットを選択
自動割り当てパブリックIP:有効

EC2_5.png
EC2_6.png

その他のパラメータはデフォルトのままとしステップを進めていきます。
EC2_9.png
ステップ6でセキュリティグループを作成します。
・セキュリティグループ名:任意の名前を設定する。例:test-securitygroup
・タイプ:SSH
・プロトコル:TCP
・ポート範囲:22
・ソース:カスタム、0.0.0.0/0
※今回はどのIPアドレスからでもSSHでアクセスできますが、警告メッセージが推奨するようにアクセスできるIPアドレスを設定するのがおすすめです。例えば自分のPCのみから接続させたい場合はPCのIPアドレスを設定しておきます。
セキュリティグループ作成後、起動ボタンをクリック。
EC2_11.png
セキュリティグループでタイプSSHを選択しているためキーペアを作成します。キーペア名を設定しキーペアを任意の場所にダウンロードします。
※キーペアを紛失した場合、再度キーペアの作成と別手順を実施する必要が出てきますので注意してください。
下記参照urlにキーペアを紛失した場合の手順が書かれているので確認してみてください。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/user-data-replace-key-pair-ec2/
AWSより引用

キーペアダウンロード後、インスタンスを作成します。
EC2_12.png
インスタンスが起動するまで少しかかるのでその間に次のElasticIPの設定を行います。
###ElasticIPの設定
EC2は何も設定をしていないと停止して再起動するとIPアドレスが変更されてしまい、何かと不便になるのでIPアドレスを固定します。
(例:アクセスを制限したいときなど)

EC2メニューのネットワーク&セキュリティ>Elastic IPをクリックします。
ElastickIP2.png
ElasticIPアドレスの割り当てを行います。
ElastickIP3.png
ネットワークボーダーグループ:デフォルトの「ap-northeast-1」を設定
おそらく東京リージョンはこの設定になる。
パブリックIPv4アドレスプール:AmazonのIPv4アドレスプールを選択
その他の設定はオンプレミス用途で使われるので一般の人はおそらくあまり使用しないと思います。

ElastickIP4.png
ElasticIP割り当て後、
アクション>ElasticIPアドレスの関連付けを選択。
ElastickIP5.png
インスタンス:起動したEC2を選択。
他はそのままで関連付ける。
ElasticIPアドレスの設定は以上です。

#6.踏み台サーバーに接続
ここで一旦踏み台サーバーに接続できるか確認します。
MacのLaunchpadから
Launchpad>その他>ターミナル の順でターミナルを開きます。

###キーペアの権限設定
ここで先程ダウンロードしたキーペアのあるフォルダまで移動します。
キーペア.png
(※すみません、Linuxコマンドについては割愛させていただきます。)
このままEC2に接続をするとキーペアファイルの権限の弱さが原因で接続できないので権限の設定を行います。
ちなみに接続しようとすると下記のように警告されます。
スクリーンショット 2021-01-23 21.50.29.png
下記のコマンドでキーペアの権限を変更します。
chmod 400 test-keypair.pem
キーペア3.png
-rw-r--r-- → -r-------
に変更しました。
この変更で具体的に
・所有者権限:読み込み、書き込み可→読み込み可
・グループ権限:読み込み可→権限なし
・その他:読み込み可→権限なし
と権限が厳しく設定されました。これでEC2へ接続可能となります。
接続後.png
コマンドで設定したElasticIPアドレスのEC2に接続します。
EC2_13.png
パブリックIPv4アドレスまたはElasticIPアドレス(両方同じ)をコピーし、
EC2への接続コマンド:
ssh -i [キーペア] ec2-user@[ElasticIPアドレス]
で接続する。

※注意…上図の付与したElasticIPアドレスがタイムラグの関係でパブリックIPv4と同一となっていない場合があります。その場合は一度コンソール画面の更新後、再度確認を行ってください。

接続後.png
上記のようにターミナルでec2-user@〇〇となっていたら接続成功です。
###現在の構成図
aws-test4.png

#7.作業サーバーの作成
踏み台サーバーへの接続が確認できた段階で、作業サーバーを作成していきます。
EC2の作成については一度行っているので相違点の部分だけピックアップします。
■サブネットの設定
EC2_21.png
・サブネット:作成したプライベートサブネットを指定します。
・自動割り当てパブリックIP:使用しないのでそのままとします。
※インターネットへ接続しないEC2のため今回は無効としています。
■セキュリティグループの設定
EC2_22.png

ここではSSH接続できるIPアドレスを踏み台サーバーのEC2のみに限定しています。○.○.○.○/32でアクセス可能にしたいIPアドレスを指定することが出来ます。
アクセス可能なIPアドレスを指定することでその他のアクセスを拒否しセキュリティを高めます。
※IPアドレスは同じVPC内からのアクセスのため作業サーバーのプライベートIPアドレスを指定します。
プライベートIPアドレスはEC2インスタンス設定画面の下記通りに確認。
EC2_23.png

その他の設定はデフォルトです。
キーペアも同じものを使用します。(新しく作成しても構いません。)

#8.作業サーバーに接続
作業サーバーのEC2が起動出来たら、次に踏み台サーバーから作業サーバーに接続するためのキーペアをローカルのPCから踏み台サーバーに置きます。
再度ターミナルでキーペアのあるフォルダまで移動し、下記コマンドでキーペアを踏み台サーバーにコピーします。
コマンド1.png
コマンド:
scp -i [キーペア] [キーペア] ec2-user@[ElasticIPアドレス]:/tmp/
これで踏み台サーバーからキーペアを使って作業サーバーにアクセス出来ます。
コマンド2.png
そして先程と同じように踏み台サーバーにアクセスします。
ssh -i [キーペア] ec2-user@[ElasticIPアドレス]
コマンド4.png
そして今度は作業用サーバーから踏み台サーバーにアクセスします。
キーペアがある場所に移動:
cd /tmp/
作業サーバーへ接続:
ssh -i [キーペア] ec2-user@[作業サーバープライベートIPアドレス]

これで踏み台サーバーから作業サーバーへのアクセスが出来ました。
###最終的な構成図
aws-test.png

#9.構成図の拡張
①今回作成した作業サーバーは一つだけでしたが、複数台の作業サーバーを使う場合は下図のようになって一つの踏み台サーバーから各作業サーバーにログインできるように構成していきます。
あとは踏み台サーバーに監視用のソフトウェアをインストールすることで誰がどの作業サーバーにアクセスしたか確認できるようになると実際のシステム運用に近づいて面白そうですね。
aws-test2.png

②作業サーバーはインターネットにアクセスできないようになっています。完全なオフラインでの作業サーバーの作成の業務場面は少ないと思います。作業サーバーにもインターネットに接続できる構成にする際は下記のようにNATゲートウェイを採用し、内部からインターネットに接続は可能として、外部からのアクセスは遮断する構成が一般的なので実運用に近づけるなら抑えておきたい構成の一つです。
aws-test3.png

#10.まとめ
以上が今回の踏み台サーバーと作業サーバーのEC2環境構築でした。
基本的な構成でしたが、自分としてはこの環境構築でVPC、EC2の基礎をかなり勉強できたなと感じています。
最初に試したときは、VPCのところでインターネット接続するためにサブネットのルートテーブルの設定を行いますが、あまり理解していない状態で設定したら案の定、インターネットに繋がらなかったりで大変でした。。

ですが改めて環境構築してみてAWSで簡単にインフラの環境構築が出来てしまうのはすごいと思いました。インフラの現場に実際には行ったことはありませんがこの作業は本来配線を一つ一つ確認して組むとかだと思うので、それをボタンと数値の入力でポチポチしてできてしまうのはなんて画期的なんだと。
インフラをやったことがない人でも気軽に扱えるというのは大変助かりますね。
実務ではかなり慎重にやらないといけないとは思いますが。。
これからの時代インフラとアプリを両方担当するのが主流となってきそうなので、大変ですが頑張って勉強してついていきたいですね。

以上です。

長くなりましたが、ここまで読んでいただきありがとうございました。
AWSを勉強する方の参考になれば幸いです。

#AWSの学習体験
当記事は動画学習サービスのAWSCloudTechの講座を参考に作成しました。
これからもっと普及するクラウドサービスの一角であるAWSを学びたい方におすすめです。

現在、無料講座を開放しているようなので気になった方はぜひ体験してみてください。

13
13
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
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?