2020.11.13
給初學者的 AWS EC2
Lab
⼩賴
ashleylai58@gmail.com
⽬標:給完全沒有 Linux / 雲端
(AWS, Azure, GCP) 經驗的初學者
體驗 EC2 / Linux 的動⼿實驗。
2
Agenda
• AWS 帳號註冊

• 啟⽤ MFA

• IAM

• Lab: 建立具有 AdministratorAccess 權限的 user

• AWS EC2 簡介

• Lab: 利⽤ EC2 架設 Wordpress 

• Lab: 啟動 Windows EC2

• 移除實驗建立的資源
3
AWS 帳號註冊
4
需準備的資料
• Email

• 英⽂地址

• 信⽤卡

• 可收簡訊、電話的⼿機

• 虛擬 MFA 裝置:

• 在⼿機上下載 Google Authenticator
5
https://aws.amazon.com/tw/iam/features/mfa/?nc1=h_ls
Android iPhone
申請 AWS 帳號
6
申請 AWS 帳號
7
右上⾓有語⾔可以
選,可切換為中⽂
account name 之後都可以再改
申請 AWS 帳號
8
專業與個⼈差別應該
不⼤,選個⼈的話不
⽤填公司名稱。
申請 AWS 帳號
9
個⼈覺得這排序不太
好找...
申請 AWS 帳號
10
輸入英⽂地址
申請 AWS 帳號
11
需設定信⽤卡,會收
⼀塊美⾦做驗證。
申請 AWS 帳號
12
會收到簡訊或電話進⾏驗證。
申請 AWS 帳號
13
https://aws.amazon.com/tw/premiumsupport/

https://aws.amazon.com/tw/premiumsupport/plans/?nc=sn&loc=1
選擇 support plan,⾃⼰玩的
選免費⽅案即可。
申請 AWS 帳號
14
可跳過...
啟⽤ MFA
15
• 最低權限存取 Least Privilege

• 啟⽤ MFA

• 定期更換登入資料:密碼、存取⾦鑰

• 建立具有管理員存取權限的使⽤者代替 root
account
16
AWS 帳號安全性
情境:為⾃⼰的帳號加強安全性

按照下列⽂件進⾏操作,操作後登出再重新登入,觀
察變化情況

https://docs.aws.amazon.com/zh_tw/IAM/latest/
UserGuide/
id_credentials_mfa_enable_virtual.html#enable-virt-
mfa-for-root
17
LAB: 啟⽤ MFA
AWS IAM
18
AWS IAM
AWS Identity and Access Management
• 管理 AWS 服務與資源的存取

https://aws.amazon.com/tw/iam/

> 資源

> IAM 使⽤者指南

* 疑難排解 IAM 的問題
19
• 情境:建立具有管理員存取權限的使⽤者代替 root
account

• https://docs.aws.amazon.com/zh_tw/IAM/latest/
UserGuide/
id_users_create.html#id_users_create_console

• 步驟:

1. 在管理控制台⾸⾴找到 IAM,進入 IAM 管理⾴⾯

2. 使⽤者 > 新增使⽤者

3. 輸入名稱、存取類型勾選「AWS Management Console 存
取」、需要密碼重設
20
LAB: 建立管理員使⽤者
4. 建立完成後將密碼儲存起來,在無痕瀏覽器登入新建使⽤
者

5. 進入 EC2 儀表板,觀察是否有 API 錯誤訊息

6. 重新回到 root account,為新建使⽤者新增許可
「AdministratorAccess」

7. 在無痕瀏覽器重新登入該使⽤者帳號

8. 進入 EC2 儀表板,觀察是否有 API 錯誤訊息

9. 該使⽤者帳號啟⽤ MFA
21
LAB: 建立管理員使⽤者
在管理控制台⾸⾴找到 IAM,進入 IAM 管理⾴⾯
22
LAB: 建立管理員使⽤者
23
LAB: 建立管理員使⽤者
24
LAB: 建立管理員使⽤者
25
LAB: 建立管理員使⽤者
26
LAB: 建立管理員使⽤者
嘗試⽤新建立的帳號登入,進入 EC2 儀表板
27
LAB: 建立管理員使⽤者
回到 root account 的 IAM 管理畫⾯
28
LAB: 建立管理員使⽤者
為新建使⽤者增加「AdministratorAccess」權限
29
LAB: 建立管理員使⽤者
重新登入新建使⽤者 > 進入 EC2 儀表板
*記得也要為新建使⽤者啟⽤ MFA
AWS EC2 簡介
30
Amazon EC2
• Amazon Elastic Compute Cloud 

• AWS 提供的 Web 服務,可快速(幾分鐘內)搭建虛
擬伺服器

• 99.99% 的可⽤性

• ⽂件: https://aws.amazon.com/tw/ec2
31
虛擬伺服器的種類
32
• https://aws.amazon.com/tw/ec2/instance-types/
t2.medium
Family
Name Generation
No.
size
EC2 計價模型
33
• On-Demand instances

• Reserved instances

• 類似預付的概念,可達 6-7 折

• Spot instances

• 預留 20% 主機來競標

• 價格低廉,可節省 90% 的費⽤,但標到後要立刻使
⽤

• 會被收回:出價被超過時會被收回 -> 可中斷的任務
建立 EC2 instance 的步驟 (1)
34
• 決定 AWS Region

• 例如:東京 ap-northeast-1、美東維吉尼亞 us-
east-1

• AZ (avaliability zone) 可⽤區域

• Region 內獨立的區域,⽔電隔離 -> ⾼可⽤

• Region 內 AZ 之間私有光纖網路連結 -> 低延遲
建立 EC2 instance 的步驟 (2)
35
• 選擇 Amazon Machine Image (AMI)

• ⽤來啟動 EC2 instance

• 來源:⾃建、共享、購買

• 選擇 Instance Type

• 根據⾃⼰的使⽤情境與需求來選擇
建立 EC2 instance 的步驟 (3)
36
• 設定網路、安全組 (Security Group)、儲存

• 網路設定 VPC (Virtual Private Cloud) 

• 虛擬網路,可以藉由配置不同的⼦網路 (subnet)
來達成公有網路、私有網路等規劃

• 安全組 Security Group

• 虛擬防火牆,控制傳入與流出量
LAB: 利⽤ EC2 架設 Wordpress
37
情境:架設 Wordpress 部落格網站

• Lab1: 啟動 EC2 with Ubuntu 18.04

• Lab2: 安裝 Nginx

• 利⽤ 2048 測試 nginx 是否安裝成功

• Lab 3: 安裝 PHP

• 安裝 Wordpress

• Lab 4: 啟動 RDS

• Lab 5: 設定 Wordpress

• Lab 6: 建立⾃⼰的 AMI
參考資料
38
• https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/
EC2_GetStarted.html

• https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/
ec2-lamp-amazon-linux-2.html

• https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/
hosting-wordpress.html

• https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/
ec2-lamp-amazon-linux-2.html

• https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/
hosting-wordpress.html
Lab 1: 啟⽤ EC2
instance 與連線
39
LAB 1: 啟動 EC2 instance
0. 準備啟動 instance (執⾏個體)
40
41
LAB 1: 啟動 EC2 instance
1. 選擇 AMI: 搜尋 ubuntu、選擇 18.04
42
LAB 1: 啟動 EC2 instance
2. 選擇 instance type: t2.micro
⽤免費⽅案的 type 來練習即可
43
LAB 1: 啟動 EC2 instance
3. 設定 instance:
網路設定

先⽤預設值即可
⾓⾊配置
44
LAB 1: 啟動 EC2 instance
3. 設定 instance:
關機後的⾏為
• Stop: 停⽌,可以再重新啟動

• Terminate: 終⽌,移除這台 instance
45
LAB 1: 啟動 EC2 instance
3. 設定 instance:
啟動時執
⾏的指令
46
LAB 1: 啟動 EC2 instance
4. 設定儲存
先⽤預設即可
47
LAB 1: 啟動 EC2 instance
5. 設定標籤
建立 Tag 讓⾃⼰易於辨識與管理
48=
LAB 1: 啟動 EC2 instance
6. 設定安全組
選擇新建

填入命名、描述
SSH (22) : 讓我們可以連線進去 instance 裡進⾏配置

HTTP (80) : ⼀般網站⽤的 port
49
LAB 1: 啟動 EC2 instance
7. 檢視設定
50
LAB 1: 啟動 EC2 instance
8. 建立存取 EC2 instance 需要的 key
建立新的 key

填入命名、下載
務必保管好這個 key,如果遺失,無法回復!
• • • • • • • •
51
LAB 1: 啟動 EC2 instance
9. 建立完成
52
LAB 1: 啟動 EC2 instance
10. 檢視
標籤 狀態
點擊執⾏個體 ID
53
LAB 1: 啟動 EC2 instance
11. 檢視 instance 摘要
54
LAB 1: 啟動 EC2 instance
12. 連線 for Mac / Linux user
55
LAB 1: 啟動 EC2 instance
12. 連線 for Mac / Linux user
ssh -i lightdaguys-tokyo.pem ubuntu@13.231.244.62
ubuntu@13.231.244.62
帳號 主機 IP
56
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• https://docs.aws.amazon.com/AWSEC2/latest/
UserGuide/putty.html

• 下載 putty: https://www.putty.org/
57
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• 開啟 PuTTYgen

• 點擊 Load

• 檔案格式改成 All Files

• 選擇 xxx.pem
58
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• 點擊 Save private key

• 會下載 xxx.ppk
59
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• 開啟 PuTTY

• 選擇 Session

• 填入 IP
• 開啟 PuTTY

• 選擇 Connection

• 選擇 SSH

• 選擇 Auth

• Browser 選擇 xxx.ppk
60
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
61
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• 回到 Session

• 輸入名稱

• 點擊 Save

• 點擊 Open
62
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
• 輸入使⽤者名稱 ubuntu
63
LAB 1: 啟動 EC2 instance
12. 連線 for Windows
Lab 2: 安裝 nginx
64
LAB 2: 安裝 nginx
65
# 更新套件
$ sudo apt update
# 安裝 nginx
$ sudo apt install nginx
驗證: ⽤瀏覽器開啟網址
LAB 2: 安裝 nginx
66
LAB 2: 安裝 nginx
67
# 切換⾄ nginx 放置網⾴的地⽅
$ cd /var/www/html
# 下載 2048
$ sudo git clone https://github.com/
azole/docker-2048.git
驗證: ⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/docker-2048/2048
Lab 3: 安裝 PHP 與
wordpress
68
LAB 3: 安裝 PHP 與 wordpress
1. 安裝 PHP
69
# 安裝 PHP
$ sudo apt install php-fpm php-mysql
# 確認安裝是否成功
$ php -v
LAB 3: 安裝 PHP 與 wordpress
2. 設定 nginx
70
# 建立網站設定檔
$ sudo nano /etc/nginx/sites-available/my-web
# 貼入範例(下⼀⾴)
# control + x
# 詢問是否要儲存: y
# 確認檔名: 直接按下 enter
LAB 3: 安裝 PHP 與 wordpress
2. 設定 nginx
71
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
LAB 3: 安裝 PHP 與 wordpress
2. 設定 nginx
72
# 移除 nginx 預設檔
$ sudo unlink /etc/nginx/sites-enabled/
default
# 把我們剛剛建立的設定檔設定為啟動網站
$ sudo ln -s /etc/nginx/sites-available/
my-web /etc/nginx/sites-enabled/my-web
LAB 3: 安裝 PHP 與 wordpress
3. 重新啟動 nginx
73
# 檢查設定是否正確
$ sudo nginx -t
# 重新載入新的設定檔
$ sudo systemctl reload nginx
LAB 3: 安裝 PHP 與 wordpress
4. 驗證設定
74
# 切換⾄ nginx 放網⾴的地⽅
$ cd /var/www/html
# 編寫 php 程式
$ sudo nano info.php
# 編寫左⽅範例程式
# control + x
# 詢問是否要儲存: y
# 確認檔名: 直接按下 enter
<?php
phpinfo();
LAB 3: 安裝 PHP 與 wordpress
4. 驗證設定
75
驗證: ⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/info.php
LAB 3: 安裝 PHP 與 wordpress
5. 下載 wordpress
76
# 切換到暫存檔案夾
$ cd /tmp
# 下載 wordpress 原始碼
$ curl -O https://wordpress.org/
latest.tar.gz
# 解壓縮
$ tar -zxvf latest.tar.gz
# 把 wordpress 搬到放網⾴的地⽅
$ sudo mv wordpress /var/www/html/
wordpress
LAB 3: 安裝 PHP 與 wordpress
6. 設定 wordpress
77
# 切換到 nginx 放網⾴的地⽅
$ cd /var/www/html
# 設定 wordpress 檔案夾權限
$ sudo chown -R www-data:www-data
wordpress
$ sudo chmod -R 755 wordpress
⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/wordpress
78
LAB 3: 安裝 PHP 與 wordpress
6. 開啟 wordpress
Lab 4: 啟動 RDS
79
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/
CHAP_GettingStarted.CreatingConnecting.MySQL.html
LAB 4: 啟動 RDS
80
LAB 4: 啟動 RDS
81
LAB 4: 啟動 RDS
82
LAB 4: 啟動 RDS
83
選擇 MySQL
選擇免費⽅案
LAB 4: 啟動 RDS
84
命名
設定密碼
LAB 4: 啟動 RDS
85
# 切換到放網⾴的地⽅
$ cd /var/www/html
# 下載資料庫管理⼯具 adminer.php
$ sudo curl -o adminer.php https://
www.adminer.org/static/download/4.7.7/
adminer-4.7.7.php
⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/adminer.php
LAB 4: 啟動 RDS
86
檢視 RDS
點擊 DB Identifier
建立 RDS 需要⼀點時間
LAB 4: 啟動 RDS
87
2. 點擊 VPC security groups
1. 複製 endpoint 並且存到⽂字檔備⽤
LAB 4: 啟動 RDS
88
只允許有配置 sg-283.. 這個安全組

的主機可以連線
LAB 4: 啟動 RDS
89
回到 EC2 列表

勾選我們剛剛建立的 instnace
LAB 4: 啟動 RDS
90
把剛剛資料庫設定的那個安全組加進來
選擇後按下 Add security group
LAB 4: 啟動 RDS
91
伺服器: 填入剛剛備存起來的 endpoint

帳號、密碼: 填入剛剛建立 RDS 時設定的值
建立給 wordpress ⽤的資料庫
⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/adminer.php
LAB 4: 啟動 RDS
92
建立給 wordpress ⽤的資料庫
LAB 4: 啟動 RDS
93
填入名稱後按下儲存
建立給 wordpress ⽤的資料庫
Lab 5: 設定 wordpress
94
LAB 5: 設定 wordpress
⽤瀏覽器開啟網⾴. ip要換成⾃⼰的
http://ip/wordpress
出現設定畫⾯
按照步驟進⾏設定
95
LAB 5: 設定 wordpress
資料庫名稱輸入剛剛⽤ adminer 建立的資料庫名稱

使⽤者名稱、密碼: 填入剛剛建立 RDS 時設定的值

資料庫主機位址: 填入剛剛備存起來的 endpoint
96
LAB 5: 設定 wordpress
密碼要記好,之後要登入部落格後台⽤,

或是⾃⼰設定密碼。
97
LAB 5: 設定 wordpress
設定完成後,⽤瀏覽器開啟網⾴:
http://ip/wordpress
(Ip要換成⾃⼰的)
98
Lab 6: 建立⾃⼰的 AMI
99
建立⾃⼰的 AMI
100
LAB: 利⽤建立⾃⼰的 AMI 來啟動 Instance

• 為剛剛建立的 wordpress instance 建立 AMI

• 利⽤這個 AMI 啟動⼀台新的 instance
LAB: 建立⾃⼰的 AMI
回到 EC2 列表
101
102
LAB: 建立⾃⼰的 AMI
輸入名稱
LAB: 建立⾃⼰的 AMI
103
等狀態變成

Available
LAB: 建立⾃⼰的 AMI
104
等狀態變成

Available
LAB: 建立⾃⼰的 AMI
105
會跳過選擇 AMI 的步驟
LAB: 建立⾃⼰的 AMI
106
在設定標籤這⼀步,我們把 Name 設定成另外⼀個名字:
LAB: 建立⾃⼰的 AMI
107
要選擇 default 跟 websrv 這兩個安全組:
LAB: 建立⾃⼰的 AMI
108
選擇剛剛建立過的 key
LAB: 建立⾃⼰的 AMI
109
回到 EC2 列表,可以看到現在有兩台 instance:
點擊第⼆台的 instance id 進入檢視
LAB: 建立⾃⼰的 AMI
110
⽤瀏覽器開啟網⾴ (ip要換成第⼆台 instance 的)
http://ip/wordpress
Lab: 啟動 Windows EC2
與連線
111
Windows EC2 Instance
• ⽂件: https://docs.aws.amazon.com/zh_tw/
AWSEC2/latest/WindowsGuide/
EC2_GetStarted.html

• 利⽤微軟遠端桌⾯⽤⼾端連接

• 需要開放 RDP port 3389
112
Lab: 建立 windows EC2 instance
步驟跟建立 Ubuntu EC2 instance ⼀樣,只是改成⽤
Microsoft Windows Server 2016 Base 來建立
113
搜尋 windows 2016
Lab: 建立 windows EC2 instance
為遠端連線開放 port
114
選擇新建,輸入名稱
Lab: 建立 windows EC2 instance
取得登入 windows 需要的密碼
115
搜尋 windows 2016
Lab: 建立 windows EC2 instance
116
上傳建立 EC2 時指定的 key
如果不是這個畫⾯,就再等⼀下
Lab: 建立 windows EC2 instance
117
登入時需要⽤的帳號
登入時需要⽤的密碼,複製後儲存起來
Lab: 建立 windows EC2 instance
118
Lab: 建立 windows EC2 instance
119
下載連線檔案

xxxx.rdp
Lab: 建立 windows EC2 instance
120
雙擊 rdp 檔案

輸入剛剛取得的密碼
Lab: 建立 windows EC2 instance
121
Lab: 建立 windows EC2 instance
122
移除 instance 與 RDS
123
124
選擇 Terminate instance
如果選擇 stop,則只會停機
移除 EC2 instance
可以實驗選擇 stop、關機後、再重新 start
125
選擇 Delete
移除 RDS
126
移除 RDS
不要勾選
127
移除 RDS
勾選確認要刪除
輸入要你輸入則⽂字後,點擊 Delete
128
移除 AMI

AWS EC2 for beginner