作成したAWS構成図を実現する

・前提

以前作成したAWS構成図(draw.ioを使用してAWS構成図を作る – 日曜エンジニアの学習記録)を実現して動作を確認してみる

①リージョンを選択

右上のデフォルトの[北米]から[東京]リージョンに変更する

②VPCを作成

バーからVPCを検索して、CIDRと名前を入力して作成

※ここで一回CIDRのサイズを設定間違いを行ってしまった

この時、CIDRのサイズを変更することが出来ず、CIDRを追加することしかできなかったので要注意

後から追加を繰り返して視認性が悪くなるのは避けたい

③サブネットを作成

以降はVPCのコンポーネントを作成していく

VPCのサイドバーからサブネットを選択してサブネットを作成から所属するVPCを選択する

構成図に従い上記のように設定する(プライベートサブネットも同様に作成)

※完成したサブネットにARNが付与されていることに注意

④インターネットゲートウェイを作成

VPCのサイドバーから[インターネットゲートウェイ]を選択して名前を入力して[VPCへアタッチ]を選択して作成

⑤ルートテーブルを作成

VPCのサイドバーから[ルートテーブル]を選択して名前と所属するVPCを埋めて作成

その後作成したルートテーブルの画面から[サブネットの関連付け]を選択して作成済みの二つのサブネットにめいめい割り当てる

更に、ルートを編集からインターネットゲートウェイ向けのルートを作成する(宛先NWがデフォルトルートでターゲットがインターネットゲートウェイ)

これによって、ルートテーブルを割り当てたサブネットの通信はルートテーブルに記載のある経路情報に従い通信を行う(※この際、プライベートサブネットにはインターネットゲートウェイ向けの経路情報がないことに注意)

⑥パブリックサブネット上にEC2を作成

バーに[EC2]と入力して[インスタンスを作成]を選択してインスタンス作成画面に移動

設定項目は名前とキーペア(作成したキーの取り扱いは要注意)、ネットワーク設定は所属するVPCの情報とそれに紐づく情報(サブネットなど)を入力

※この際セキュリティグループの作成で今回の検証のためにSSH接続を確認する関係からポート22だけ許可する

その後EIPを作成してEC2にアタッチしていく(EIPは[割り当て]を選択するだけで作成できて、それを[アクション]からインスタンスに関連付ける)

⑦検証1.ローカルPCから作成したEC2にSSH接続してみる

※前回つまづいた点として、EC2のOSをAmazonLinux2023に指定しているときはTeratermのバージョンは5である必要がある

接続方法はTeratermにてEIPのアドレスを入力してSSH接続を指定し、ユーザ名に[ec2-user],認証方式にDLしたキーを入力する

ログイン成功!

⑧プライベートサブネット上にEC2を作成

⑥と手順はほぼ変わらずキーペアも⑥で作成したものを使用する

⑥との相違点として、[ネットワーク設定]について、サブネットをプライベートサブネットに指定すること

※このときセキュリティグループについて⑥で作成したセキュリティグループをソースにカスタムすることも可能でこれによって⑥で作成したセキュリティグループからのSSH接続を受け入れてくれる

⑨検証2.パブリックサブネットのEC2を踏み台にプライベートサブネットのEC2へログイン

この検証を実現するためにまず⑥で作成したローカルPCの鍵をEC2にアップロードする

手順として今までteratermを使ってSCPを行って転送してきたものの、新しくローカルPCから鍵を送ってみます

コマンドプロンプトにて以下のコマンドを入力

scp -i <鍵名> <鍵名> ec2-user@<EC2のグローバルIP>:<EC2の格納先ディレクトリ> /* SCPでローカルPCからEC2へ鍵を転送*/
ssh -i <鍵名> ec2-user@<EC2のグローバルIP>

teratermを使わなくてもログイン成功!

確かに指定したディレクトリに鍵が転送されている!

ここまで来たら後は前述のやり方をほぼそのまま踏襲して、踏み台EC2にログインした状態で以下のコマンドをローカルPCから入力

ssh -i <鍵名> ec2-user@<プライベートサブネットEC2のプライベートIP>

しかし、以下の趣旨のエラーが表示されてしまった…

PS C:> ssh -i C:\key\test\test\KeyFile.pem root@000.000.00.00
Load key "C:\\key\\test\\test\\KeyFile.pem": Permission denied
root@000.000.00.00: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

検索したところ鍵に権限変更をする必要があるとのこと

ただし、OSがwindowsなのでLinuxのように単純にchmodすればよいわけではない…

以下を実施

🐚【Windows PowerShell】SSH接続する際にパーミッションエラーが発生した場合の権限変更 #Windows – Qiita

しかし、ログインしているユーザ名がなんのことか分からず立ち尽くす…

色々思案した結果、EC2はLinuxOSなのだからそこで鍵の権限を編集すればよいと思い以下のように実行

踏み台からパブリックサブネットのEC2にログイン成功!

※このSSH接続は基本ではあるが実務ではSSMセッションマネージャーによる接続が主流

⑩プライベートサブネットからインターネットへ接続する

プライベートサブネットからインターネットへ抜けるためにパブリックサブネットにNATゲートウェイを設定する

※NATゲートウェイを設定するのはパブリックサブネットであることに注意

その後EIPを割り当て、プライベートサブネットのルートテーブルを編集する

デフォルトルートのターゲットをNATゲートウェイに向ける

そして改めて踏み台サーバからプライベートサブネットのEC2にログインしてインターネットへアクセスを試みると…

疎通確認成功!

※NATゲートウェイは一日150円発生する(=高額)なので使用する際は諸々考慮するべき

・雑感

踏み台サーバを利用するためのトラブルシューティングを除けば全体で10分くらいで実現できてしまった…

クラウドが簡単に構築できるという威力を改めて実感した

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です