AWS — 學習筆記(1) Deploy ENV/EC2

黃馨平
Jackycsie
Published in
8 min readSep 29, 2021

Hi, All

本篇文章將會介紹從無到紀錄如何在 AWS 環境中,模擬出一個與地端相同 server 環境下圖是本次實驗的架構圖與 follow action,本篇文章主要是記錄每一個步驟,若是有元件概念不懂或者寫得不夠詳細的歡迎來信詢問。

  1. 建立自己的 VPC
  2. VPC 切開分群為 public subnet & private subnet
  3. 設定 IGW, 建立對外的 route table
  4. 建立 ACL 與 SG
  5. 建立 EC2
  6. 透過自己的 terminal 連接 AWS EC2

前提概要:

VPC: 172.16.0.0/16

Public Subnet, jackysideproject-web-1a: 172.16.10.0/24

Private Subnet, jackysideproject-db-1a: 172.16.20.0/24

EC2 Private IP: 172.16.10.10

Create Security Group: jackysideproject-web-sg

Security Group Allow Port: 22

Create IGW routing table: jackysideproject-web-rtb

標籤:

VPC: jackysideproject-vpc

Public Subnet: jackysideproject-web-1a

Private Subnet: jackysideproject-db-1a

IGW: jackysideproject-igw

Routing Table: jackysideproject-web-rtb

Security Group: jackysideproject-web-sg

建立自己的 VPC

參考文章: 什麼是 AWS VPC

第一步,點開我們的 VPC,Create VPC.

建立 VPC,設定 VPC subnet,建立 vpc tag。

建立完成。

Create Public/Private subnet

建立完 VPC 後開始切割網段,在這個部分我們將會分為 172.16.10.0/24, 172.16.20.0/24 兩個網段。

Public Subnet, jackysideproject-web-1a: 172.16.10.0/24

Regin: 1a

Tag: jackysideproject-web-1a

Private Subnet, jackysideproject-db-1a: 172.16.20.0/24

Regin: 1a

Tag: jackysideproject-db-1a

設定完成。

Setting IGW and routing table

參考文章: 什麼是 IGW

設定完兩個 subnet 以後此時 subnet 還沒有對外連網的功能,我們將 jackysideproject-web-1a 設定外網的功能。

設定 IGW。

從這裡可以看的到,目前設定好的 igw 是 detached 的狀態所以需要將 VPC attach 到 igw中。

選擇我們 create 好的 VPC。

接著我們需要設定 routing table,下圖這個是 default 的 routing table,主要的目的在於同一個 VPC 內的 IP 都能夠互通,但為了能夠連外網我們需要再建立一個 routing table。

建立 jackysideproject-web-rtb,這個 routing table 依賴於我們所建立的 jackysideproject-vpc。

從下圖可以看到我們建立完 routing table 了,接著將外網的流量導入進來。

設定 0.0.0.0/0, Target 我們自己設定的 IGW,此時所有的流量都會導入進來了。

但是我們還沒設定導入到哪一個 subnet 當中,所以我們選擇 routing table,並且將 routing table 導入到 web-1a 的 subnet 當中。

將 routing table 導入到 web-1a 的 subnet 當中。

接著我們去 subnets 的頁面看,就可以看到 web-1a 的 routing table 中多了一個對外的 0.0.0.0/0 的 content,此時我們就可以知道所有非 172.16.0.0/16 的流量都會被導入到 igw 做轉送。

建立 ACL 與 SG

參考文章: 什麼是 ACL什麼是 SG

做完上述的步驟以後,我們可以思考,在一個沒有安全機制的狀況下,所有 IP, Port 都可以連進到一個公開的 server 中,是否不太合理,因此本節的目標就是將我們的網路多設一層防護網,我們將只允許 SSH port 22, 可以流進我們的 EC2 當中,當然之後若是你想要再多開 80, 443, 8888 都可以。

點選 Security Group, Create security group.

建立 jackysidepojrect-web-sg,Inbound rules 設定 22 port, source 這裡設定 0.0.0.0/0,但其實這是不好的,比較佳的方式是輸入你自己的 IP,增加安全控管程度。

另外小 tips,aws 的 inbound 策略是,進得來的流量都出得去,大家可以去看參考文章有詳細講解喔。

建立 EC2

參考文章: 什麼是 EC2

安全跟基礎的網路建立起來後,我們就可以 create 我們的 EC2 instance 了。

在這裡我們選擇的是 Amazon Linux 2 AMI, 當然你也可以選擇 CentOS 或者 Ubuntu 都可以。

接著我們選擇免費的 Instance。

選擇我們前面建立好的 VPC, 以及我們對外的 web-1a subnet,另外 enable Public IP 這樣我們才可以從外網設備連的到 AWS 的網路

選擇 private IP

設定 tag name

選擇我們剛剛所建立的 Security Group,增加我們的安全性。

若是你是第一次使用 AWS 就選擇 create new key, 然後下載下來,下圖是我已經建立好的 ssh key,記得 ssh key 記得保存好喔。

確認 download 後儲存的位置。

# Setting your file permission 
chmod 400 aws_ssh_key.pem

到剛剛 EC2 的地方,找一下你的 public IP,這個部分我碼起來了,哈哈,就是黑色框框的那個,把它記錄下來。

# SSH your EC2 
ssh -i aws_ssh_key.pem ec2-user@Your_EC2_Public_IP

登入成功。

下集預告

下次會把 EC2 的 web 服務建立起來,以及連線到 private 的 DB,開始做一些有趣的應用。

--

--

黃馨平
Jackycsie

閱讀本是尋常事,繁華靜處遇知音