1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】VPCとEC2を作成してインターネットへ接続してみる

Last updated at Posted at 2024-11-14

概要

  • SAAの勉強をしていたが、知識ばかりで手を動かしてないなと思ったため実際にVPCとEC2を作成して、EC2からインターネットへの接続を行ってみる

やることとゴール

  • VPCを作成
  • 作成したVPC内にパブリックサブネットとプライベートサブネットを作成
  • インターネットGWとNATゲートウェイをアタッチしルートテーブルを作成
  • パブリックサブネット内とプライベートサブネット内それぞれに1台ずつEC2を作成
  • それぞれのEC2からインターネットへ接続(pingが通る)できることを目標とする

構成図

  • 下記の構成となるよう進めていく

image.png

VPC作成

  • 新たにVPCを1つ作成する
  • 同時にパブリックサブネットとプライベートサブネット、インターネットGW、NATゲートウェイも作成しVPCへアタッチする
  • それぞれのサブネットのルートテーブルを作成する

手順

  • IAMでマネジメントコンソールへログイン
  • VPCを選択
  • VPCを作成を選択

image.png

  • VPCの設定は下記の通り
項目
作成するリソース VPCなど
名前タグの自動生成 自動生成
IPv4 CIDRブロック 10.0.0.0/16
IPv6 CIDRブロック なし
テナンシー デフォルト
アベイラビリティゾーンの数 1
パブリックサブネットの数 1
プライベートサブネットの数 1
NATゲートウェイ 1 AZ内
VPCエンドポイント S3ゲートウェイ (これはなしでもよかったかも)
DNSオプション どちらもチェック
  • 以下、参考としてキャプチャ

image.png

image.png

  • こんな感じでプレビュー表示もされる

image.png

  • VPCを作成ボタンを押すと作成が始まり、下記の画面になれば完了

image.png

  • VPCダッシュボードはこんな感じ

image.png

  • パブリックサブネット

image.png

  • プライベートサブネット

image.png

  • インターネットGW

image.png

EC2作成

パブリックサブネットに設置するインスタンス

  • インスタンスを起動を選択

image.png

  • 下記の設定でインスタンスを作成
項目
名前 yamashun-server1-pub
AMI Ubuntu Server 22.04 LTS(x86)
インスタンスタイプ t2.micro
キーペア RSA、pem
VPC 上記で作成したVPC
サブネット 上記で作成したパブリックサブネット
パブリックIPの自動割り当て 有効化
セキュリティグループ 新規作成
(タイプ:ssh、ソースタイプ:自分のIP)
ストレージ 8GiB、gp3
  • 以下、参考としてキャプチャ

image.png

image.png

image.png

image.png

  • 作成ボタンを押すとインスタンスが作成される
  • 起動していることを確認

image.png

パブリックインスタンスへSSH

  • pemファイルを置いているフォルダに移動し権限を変更
    (これをやらないとSSHするときに権限が緩すぎるとエラーが出る)
ローカル
$ chmod 400 "yamashun-server1.pem"
  • 権限変更が完了したらいざSSH
  • ちなみに今回はAMIにUbuntuを選択しているためユーザー名をUbuntuにしているが、AMIがAmazon-Linuxの場合はec2-userになる
ローカル
$ ssh -i "yamashun-server1.pem" ubuntu@54.199.8.98
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Nov 12 15:12:55 UTC 2024

~中略~

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-10-0-3-1:~$
  • 無事にインスタンスへ接続できた
  • インターネットへの疎通確認のためwww.google.comにpingを飛ばしてみる
EC2(pub)
$ ping www.google.com
PING www.google.com (142.250.199.100) 56(84) bytes of data.
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=1 ttl=58 time=2.31 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=2 ttl=58 time=2.24 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=3 ttl=58 time=2.47 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=4 ttl=58 time=2.80 ms

--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.235/2.452/2.798/0.216 ms
  • 無事にインターネットへの疎通確認ができたためいったんログアウト
EC2(pub)
$ exit

プライベートサブネットに設置するインスタンス

  • 基本的にパブリックサブネットに設置したインスタンスと同じ
  • 変更点は下記
項目
名前 yamashun-server1-pri
サブネット 上記で作成したプライベートサブネット
パブリックIPの自動割り当て 無効化
セキュリティグループ(ソース) ※ Anywhere-IPv4

※後ほど変更するので作成時はいったん既存のセキュリティグループにしてしまってもOK

image.png

  • 作成ボタンを押すとインスタンスが作成される
  • 合計2台のインスタンスが動いていることを確認

image.png

プライベートインスタンスにSSH

  • プライベートインスタンスにはパブリックIPがないため、パブリックインスタンスを踏み台にしてSSHする
  • まずは、キーファイルであるyamashun-server1.pemをパブリックインスタンスの./tmpディレクトリにコピーする
    • 先にインスタンス側でtmpディレクトリを作成しておくといいかも
    • scpするときにPermission deniedが何度か出て躓いたので、インスタンス側のtmpディレクトリの権限を一時的に上げておくかユーザーを変更するかなどしておくといいかも。。。
ローカル
$ scp -i "yamashun-server1.pem" yamashun-server1.pem ubuntu@54.95.10.191:./tmp
yamashun-server1.pem                                     100% 1674   252.4KB/s   00:00
  • パブリックインスタンスに再度接続すると、無事に./tmpディレクトリにキーファイルがコピーされていることを確認できた
EC2(pub)
$ ls ./tmp/
yamashun-server1.pem
  • 次にプライベートインスタンスがパブリックインスタンスからのSSHを許可するためにセキュリティグループを変更する
  • ソースをAnywhere-IPv4(0.0.0.0)に変更

image.png

  • 準備が整ったためいざSSH
  • まずはパブリックインスタンスへ接続
ローカル
$ ssh -i "yamashun-server1.pem" ubuntu@54.95.10.191
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

~中略~

Last login: Wed Nov 13 14:23:46 2024 from 60.147.206.215
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-10-0-3-1:~$
  • 次にパブリックインスタンスの./tmpディレクトリへ移動し、そこからプライベートインスタンスへSSHすると無事に接続することができた
EC2(pub)
$ cd tmp/
$ ssh -i "yamashun-server1.pem" ubuntu@10.0.143.9
The authenticity of host '10.0.143.9 (10.0.143.9)' can't be established.
ED25519 key fingerprint is SHA256:Pv700B6Tj3iYVVQXrmvcnrRFqiSJlZj59RPJRAmUtck.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.143.9' (ED25519) to the list of known hosts.
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Wed Nov 13 14:40:50 UTC 2024

  System load:  0.0               Processes:             101
  Usage of /:   23.1% of 7.57GB   Users logged in:       0
  Memory usage: 20%               IPv4 address for eth0: 10.0.143.9
  Swap usage:   0%

~中略~

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-10-0-143-9:~$
  • 無事にプライベートインスタンスへ入れたので、インターネットへの疎通確認も行う
  • NATゲートウェイがアタッチされているためプライベートインスタンスからもインターネットへの接続は可能なはず
  • pingを飛ばしてみる
EC2(pri)
$ ping www.google.com
PING www.google.com (172.217.26.228) 56(84) bytes of data.
64 bytes from nrt12s51-in-f4.1e100.net (172.217.26.228): icmp_seq=1 ttl=116 time=1.74 ms
64 bytes from bom05s09-in-f4.1e100.net (172.217.26.228): icmp_seq=2 ttl=116 time=1.42 ms
64 bytes from bom05s09-in-f4.1e100.net (172.217.26.228): icmp_seq=3 ttl=116 time=2.16 ms
64 bytes from nrt12s51-in-f4.1e100.net (172.217.26.228): icmp_seq=4 ttl=116 time=1.61 ms

--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.419/1.730/2.161/0.272 ms
  • 無事に接続できたことを確認
  • これで、VPCを作成してEC2からインターネットへ接続可能な環境の構築が完了した

まとめ

  • SAAを勉強している割に全然ハンズオンしたことがなく頭でっかちになっていたが、VPCの作成を行うことで解像度は間違いなく上がったと感じる
    (EC2は以前何度か作ったことはあった)
  • この調子で色々なサービスを触っていきたい
  • 次はLambdaかコンテナあたりかなぁ

参考にしたサイト

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?