全名為 Amazon Virtual Private Cloud,為虛擬的私有雲端,
當我們的 EC2 (機器) 有多台,並且想對這些機器做區隔的時候,就可以透過 VPC 來達成這個效果
在 VPC 裡面,會有 Subnet (子網路),我們可以在 Subnet 底下,架設 EC2
這邊讓大家對於 VPC 先有一點架構概念,接著我們會邊設定邊介紹
事前作業
還沒有 AWS 帳號可以先去官網辦一個
Step 1. 開始架設 VPC
已經有帳號就可以直接進入並且搜尋 VPC
接著,點選 Create VPC
接著來設定吧
Resource to create
請選擇 VPC only
(但如果你要選 VPC and more 也行,但這樣就不用看這篇文章了)Name
填寫 VPC 的名稱IPv4 CIDR block
由於我們這次做得不需要用到那麼多 IP,只要一個小範圍就好,因此選擇 IPv4 CIDR manual input
就好IPv4 CIDR
填寫他提供的隨機 IPIPv6 CIDR block
一樣我們不需要那麼多 IP ,IPv4 就足夠,所以選 No IPv6 CIDR block
Tenancy
我們不需要專用硬體,所以選 Default
即可
都填完後,就可以 Create VPC 了
接著我們就可以設定 Subnet 了
Step 2. 設定 Subnet
Subnet 分成很多種,先介紹 Public Subnet / Private Sunbet 這兩種
他們都是為在 VPC 裡面的 (詳見架構圖)
Public Subnet
可以透過 Internet Gateway 來跟外網溝通Private Subnet
沒辦法透過 Internet Gateway 來跟外網溝通,只能透過 NAT Gateway,且外網沒辦法無法跟 Private Subnet 溝通
我們先到左邊選單選取 Subnets
再來點選 Create subnet
點選我們剛剛建立的 VPC ID
接著填寫設定
Subnet name
填寫你的 Subnet 名稱(會特別加上 public 讓自己知道這是 Public Subnet)Availability Zone
選取離你最近的 AZIPv4 subnet CIDR block
給你的 Subnet 一個 IP 位置,但必須要在 VPC 的 IP 範圍內
都填寫完就可以 Create subnet
囉
Subnet 建立完成後,我們就要來建立 Internet Gateway
Step 3. 設定 Internet Gateway
Internet Gateway 就像對外溝通的橋樑,EC2 必須透過 Internet Gateway 才能跟外網做聯繫
而 Internet Gateway 是設定在 VPC 上的 (詳見架構圖)
那我們就來開始吧!
先在左邊選單點選 Internet gateways
接著點選 Create internet gateway
填寫 Internet Gateway 的名稱
再點選 Create internet gateway
這樣就建立成功囉!
不過我們還要幫他掛在 VPC
先到右邊 Actions
點選 Attach to VPC
接著選取要掛上去的 VPC
最後點選 Attach internet gateway
Internet Gateway 就設定好了
不過要讓 EC2 有辦法跟外網溝通,我們還要在 Subnet 的 Route Table 加上 Internet Gateway
Step 4. 設定 Route Table
每個 Subnet 會有一個 Route Table
Route Table 中會記錄有哪些 Route
我們先點選到 Subnet
選取你的 Subnet 後,點選到 Route Table
接著再點選該連結進去
進入到 Route Table 介面後,再點選連結進入
點選 Edit routes
再來點 Add route
後填寫設定
Destination
指哪些網路流量可以透過 Internet Gateway 進行溝通,而 0.0.0.0/0
是所有 IPv4 的網路流量Target
溝通目標,也就是 Internet Gateway 了,記得選取你剛剛建立的 Internet Gateway
按下 Save changes
就完成囉
到這邊我們的架構都設定的差不多囉,接著可以來設定機器 (EC2) 了
Step 4. 建立 EC2
每個 Subnet 下都可以放置多台 EC2
在 EC2 中,我們會將應用程式或專案跑起來
可以把 EC2 想像成一台電腦,我們要在這台電腦跑起專案或應用程式
開始來建立吧!點選 EC2
接著點選 Launch instance
填寫 instance 的名字
選取該機器要用的系統 (通常我都選 Amazon Linux ,並且使用免費方案可用的 image)
Instance type 選取專案適用的規格(專案小就可以選免費方案可用的)
建立金鑰,並下載 (登入 ssh 的時候驗證用)
機器的設定就差不多到這邊,接著下面有 Network Settings 區塊
我們就要進入設定 Network 與 Security Group 囉
Step 5. 設定 Network 與 Security Group
Network 是綁在 Subnet 上的,而 Security Group 是管控 Network 網際網路協議存取權限的 (不是管 EC2 的喔!!!)
EC2 透過該 Network 才會有 IP 並且跟外網溝通
我們選取剛剛建立的 VPC / Subnet
並且給這個 EC2 一個公開的 IP ,好方便跟外網做聯繫
當 Network 設定完成後,我們要幫這個 Network 設定 Security Group
來管理網際網路協議的存取權限
因為之前沒有建立過 Security Group
所以我們這次就建立一個新的,並給他一個名稱及描述
接著我們要來看 Inbound Security Group Rule
所謂的 Inbound 指的是外部要連進來的流量
OutBound 指的是內部要出去的流量
預設會帶 ssh ,這也是為什麼我們可以透過 ssh 可以進入到機器中
我們今天只有要試試是否能 ping 到 EC2 的 IP,所以只要設定 All ICMP - IPv4
如果是要讓其他使用者存取到該應用程式,或者使用該網頁,就需要設定 TCP 這個網際網路協議
因為我們要讓外部所有地方都可以 ping 到,所以 Source Type 為 Anywhere
Source 就會自動帶 0.0.0.0/0 囉
如果沒有額外要設定的,就可以到右方的 Launch Instance 建立 EC2 了
到這邊基本上就完成了 VPC & Public Subnet & EC2 的建立囉
我們來看一下架構圖,就可以接著去試試 ping IP 了
Step 6. 進入機器 & 外部 ping 機器 IP
先到 EC2 並且點選 connect
我們來透過本地的終端機進入機器(不過要直接從 EC2 console 進去也可以唷),點選 SSH client
接著在終端機先到剛剛下載金鑰的地方,下指令
chmod 400 "0722.pem"
改變該 pem 的權限為只有所有者能讀
接著輸入指令進入 EC2,並且同意繼續連線
ssh -i "0722.pem" [email protected]
接著就進入到機器中了,我們可以在機器中去 ping 外部的網路,以 google IP 為例
當你收到 xxx bytes from 8.8.8.8 ,並且有回應時間時,就代表成功囉
接著我們可以離開機器,在一般的終端機中 ping 機器的 ip
機器的 ip 哪裡看,在剛剛 SSH client
接著輸入 ping 54.180.247.118
,有回應時間就可以囉
在 AWS 架設服務是會被收錢的唷,
分別要
- 關掉 EC2
- 刪除 VPC (刪除後需要檢查一下 VPC / Subnet / Internet Gateway / Route Table / Network ACLs )
- 釋放 IP address (在 EC2 左邊選單的 Elastic IP addresses,點進去把 IP release 即可)
上面步驟可以參照官方文件去做
以上若有任何疑問或指教也歡迎留言!有幫助的話也歡迎給個讚,謝謝!