AWS EC2 伺服器
## 一、AWS EC2 簡介
Amazon EC2(Elastic Compute Cloud)是 AWS 提供的雲端虛擬伺服器服務。你可以在幾分鐘內建立一台伺服器,選擇:
- **作業系統**:Ubuntu、Amazon Linux、Windows Server 等
- **CPU 與記憶體規格**:例如 `t3.micro`
- **磁碟容量**:使用 EBS 磁碟
- **網路與防火牆規則**
- **是否配置固定公有 IP**
- **是否自動擴充或負載平衡**
EC2 本質上是虛擬機器執行個體(Instance),不是實體硬體伺服器。AWS 會負責底層硬體、機房及虛擬化環境,你則負責作業系統、套件、服務與安全設定。
---
## 二、建立 Ubuntu EC2 伺服器前的準備
建議先準備以下資料:
1. AWS 帳號
2. 選擇 AWS Region,例如:
- `Asia Pacific (Tokyo)`
- `Asia Pacific (Singapore)`
- `Asia Pacific (Hong Kong)`
3. 一個 SSH Key Pair,用來登入 Ubuntu
4. 了解預計開放的服務,例如:
- SSH:TCP `22`
- HTTP:TCP `80`
- HTTPS:TCP `443`
> 注意:EC2、EBS 磁碟、公有 IPv4 位址、流量及其他資源可能產生費用。建立前請確認 AWS 定價及 Free Tier 條件。
---
## 三、透過 AWS Console 建立 Ubuntu EC2
### 1. 登入 EC2 管理頁面
1. 登入 [AWS Management Console](https://console.aws.amazon.com/)
2. 在服務搜尋列輸入 **EC2**
3. 進入 **EC2 Dashboard**
4. 確認右上角 Region 是你要使用的區域
---
### 2. 開始建立 Instance
在 EC2 頁面按下:
**Instances → Launch instances**
部分新版介面可能直接顯示 **Launch instance**。
---
### 3. 設定 Instance 名稱
在 **Name and tags** 區域輸入名稱,例如:
```text
ubuntu-web-server
```
這只是識別名稱,不會影響伺服器功能。
---
### 4. 選擇 Ubuntu 映像檔
在 **Application and OS Images(Amazon Machine Image)** 區域:
1. 選擇 **Ubuntu**
2. 使用官方 Ubuntu Server AMI
3. 建議選擇:
- Ubuntu Server 24.04 LTS,或
- Ubuntu Server 22.04 LTS
4. 確認架構通常選擇 **64-bit (x86)**
如果選用 ARM 型執行個體,例如 `t4g`,則應選擇 **64-bit (Arm)** 映像檔。
> 請使用 Ubuntu 官方映像檔,並確認顯示為 AWS Verified 或官方來源。
---
### 5. 選擇 Instance Type
在 **Instance type** 選擇伺服器規格。
入門測試可考慮:
```text
t3.micro
```
或在符合條件時使用:
```text
t2.micro
```
常見選擇:
| 類型 | 適用情境 |
|---|---|
| `t3.micro` | 測試、個人網站、輕量服務 |
| `t3.small` | 較多記憶體需求 |
| `t3.medium` | 中小型應用程式 |
| `m7i`、`m6i` | 一般正式應用伺服器 |
| `c7i`、`c6i` | CPU 密集型工作 |
| `r7i`、`r6i` | 記憶體密集型工作 |
選擇規格時要考慮 CPU、RAM、網路效能及價格。
---
### 6. 建立或選擇 Key Pair
在 **Key pair (login)** 區域:
1. 按 **Create new key pair**
2. 輸入名稱,例如:
```text
ubuntu-server-key
```
3. Key pair type 選擇:
- `ED25519`:現代 Linux 登入常用
- `RSA`:相容性較廣
4. Private key file format:
- `.pem`:Linux、macOS、Windows OpenSSH 常用
- `.ppk`:PuTTY 使用
5. 按 **Create key pair**
瀏覽器會下載私鑰檔案,例如:
```text
ubuntu-server-key.pem
```
請妥善保存。AWS 不會再次提供相同私鑰,遺失後通常無法直接使用它登入該伺服器。
在 Linux 或 macOS 上建議執行:
```bash
chmod 400 ubuntu-server-key.pem
```
---
### 7. 設定網路與 Security Group
在 **Network settings** 區域,可以選擇:
- VPC
- Subnet
- Auto-assign Public IP
- Security Group
入門情境通常可使用預設 VPC,但正式環境建議使用自行規劃的 VPC 和 Private Subnet。
#### Security Group 設定
勾選或新增:
```text
Allow SSH traffic
```
SSH 來源建議選:
```text
My IP
```
這只允許目前你的公有 IP 登入,比允許所有來源安全。
不要輕易設定為:
```text
0.0.0.0/0
```
因為這代表全世界都可嘗試連線到 SSH。
如果要架設網站,可另外開放:
```text
HTTP TCP 80 0.0.0.0/0
HTTPS TCP 443 0.0.0.0/0
```
範例安全群組規則:
| Type | Protocol | Port | Source |
|---|---|---:|---|
| SSH | TCP | 22 | My IP |
| HTTP | TCP | 80 | Anywhere IPv4 |
| HTTPS | TCP | 443 | Anywhere IPv4 |
---
### 8. 設定儲存空間
在 **Configure storage** 區域:
- 預設通常是 8 GiB 或其他大小的 EBS Root Volume
- Volume type 可使用 `gp3`
- 若資料重要,應考慮:
- 定期 EBS Snapshot
- 加密磁碟
- 分離系統碟與資料碟
- 足夠的 IOPS 與容量
一般測試可以使用:
```text
8 GiB gp3
```
正式環境則依應用程式、資料庫及日誌容量調整。
---
### 9. 進階設定
可視需要設定:
- **IAM instance profile**:讓 EC2 以 IAM Role 存取 S3、CloudWatch 等 AWS 服務
- **User data**:伺服器第一次啟動時自動執行腳本
- **Monitoring**:啟用詳細監控
- **Termination protection**:避免誤刪除
- **Elastic IP**:配置固定公有 IP
不建議把 AWS Access Key 直接放在 Ubuntu 伺服器上,應優先使用 IAM Role。
---
### 10. 啟動伺服器
確認右側摘要:
- AMI:Ubuntu Server
- Instance type
- Key pair
- Security Group
- Storage
- Public IP 設定
確認後按:
**Launch instance**
成功後,AWS 會顯示 Instance ID,例如:
```text
i-0123456789abcdef0
```
---
## 四、查看伺服器資訊
回到:
**EC2 → Instances**
選取剛建立的 Instance,可查看:
- Instance state
- Public IPv4 address
- Public IPv4 DNS
- Private IPv4 address
- Security groups
- Availability Zone
- Instance type
等候狀態變成:
```text
Running
```
並且通過:
```text
2/2 status checks passed
```
---
## 五、登入 Ubuntu 伺服器
### 方法一:使用 AWS Console 的 Instance Connect
1. 選取 EC2 Instance
2. 按 **Connect**
3. 選擇 **EC2 Instance Connect**
4. 按 **Connect**
若網路、IAM 與 Instance 狀態符合條件,瀏覽器會開啟 SSH 終端機。
---
### 方法二:使用 SSH
在 Linux 或 macOS 終端機執行:
```bash
ssh -i ubuntu-server-key.pem ubuntu@<Public-IP>
```
例如:
```bash
ssh -i ubuntu-server-key.pem ubuntu@203.0.113.10
```
Ubuntu 官方映像檔的預設登入帳號通常是:
```text
ubuntu
```
不是 `root`。
第一次連線可能會看到主機指紋確認訊息,輸入:
```text
yes
```
成功登入後,可以執行:
```bash
sudo apt update
sudo apt upgrade -y
```
查看系統資訊:
```bash
uname -a
lsb_release -a
```
---
## 六、登入後的基本安全設定
### 1. 不要直接開放 SSH 給全世界
在 Security Group 中,將 TCP 22 的來源限制為:
- 你的固定 IP
- 公司 VPN 網段
- 管理用跳板機 IP
---
### 2. 定期更新 Ubuntu
```bash
sudo apt update
sudo apt upgrade -y
```
也可以安裝自動安全更新:
```bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades
```
---
### 3. 安裝常見工具
```bash
sudo apt install -y curl wget git unzip vim htop
```
---
### 4. 使用 IAM Role
若伺服器需要存取 S3、CloudWatch 或其他 AWS 服務,請建立 IAM Role 並附加至 EC2,而不要把 Access Key 寫在伺服器檔案中。
---
### 5. 設定監控與備份
建議使用:
- CloudWatch 監控 CPU、磁碟及網路
- EBS Snapshot 備份
- AWS Backup
- CloudTrail 記錄 API 操作
- Systems Manager Session Manager,減少直接開放 SSH 的需要
---
## 七、停止或刪除伺服器
### Stop
停止 Instance:
- 不再計算部分運算費用
- EBS 磁碟仍可能產生費用
- 公有 IPv4 等資源可能仍有費用
- 下次啟動通常會恢復運作
### Terminate
終止 Instance:
- Instance 會被刪除
- 根磁碟若設定為 Delete on termination,資料可能一併刪除
- 通常無法復原,請先確認是否已備份
操作位置:
**EC2 → Instances → 選取 Instance → Instance state → Stop instance / Terminate instance**
> 測試完成後,若不再使用,應終止 Instance 並檢查未使用的 EBS Volume、Elastic IP、Load Balancer 等資源,以避免持續產生費用。
---
## 八、簡化流程總結
1. 登入 AWS Console
2. 開啟 EC2
3. 選擇 Region
4. 按 **Launch instance**
5. 選 Ubuntu Server LTS
6. 選 Instance type,例如 `t3.micro`
7. 建立或選擇 Key Pair
8. 設定 Security Group,至少允許自己的 SSH
9. 設定 EBS 磁碟
10. 按 **Launch instance**
11. 取得 Public IP
12. 使用 SSH 或 EC2 Instance Connect 登入
建立 Ubuntu EC2 時,最重要的安全原則是:**限制 SSH 來源、妥善保存私鑰、啟用更新與備份,並在不用時停止或刪除資源。**
相關學習地圖、教學課程
Python 後端工程、資料庫