---
# System prepended metadata

title: 探索AWS：從菜鳥到熟練的完全指南(六)EC2簡介
tags: [新手教學, AWS, EC2]

---

# 探索AWS：從菜鳥到熟練的完全指南(六)EC2簡介


## EC2簡介
EC2 (Elastic Compute Cloud) 是 AWS 中最受歡迎的服務之一，它屬於基礎架構即服務 (IaaS) 的範疇。EC2 提供了以下主要功能：

1. 租用虛擬機器：EC2 允許您租用虛擬機器，稱為 EC2 實例。這些實例提供了可按需配置的計算資源，包括處理能力、記憶體、存儲和網路連接等。

2. 儲存資料：EC2 使用 EBS (Elastic Block Store) 提供虛擬磁碟驅動器，讓您可以持久地儲存資料。您可以將 EBS 卷附加到 EC2 實例，並在實例重新啟動後保留資料。

3. 分散負載：EC2 可以與 Elastic Load Balancer (ELB) 服務結合使用，以實現負載平衡。ELB 可將傳入的網路流量分發到多個 EC2 實例，以提高可用性和擴展性。

4. 自動擴展：使用 Auto Scaling Group (ASG) 服務，您可以設定 EC2 實例的自動擴展。ASG 監控負載和資源使用情況，根據預定義的規則自動增加或減少 EC2 實例的數量，以應對流量變化。

了解 EC2 是理解雲端運作方式的基礎，因為它提供了虛擬機器的彈性租用、儲存資料、負載平衡和自動擴展等關鍵功能。這使得您能夠根據需求靈活地配置和管理計算資源，並為應用程式提供可靠和可擴展的基礎架構。
<br>
## 可選擇類型
EC2 提供了各種可調整大小和配置的選項，以滿足不同應用程式和工作負載的需求。以下是一些常見的 EC2 大小和配置選項：

1. 作業系統 (OS)：您可以選擇在 EC2 實例上運行的作業系統，包括 Linux、Windows 或 Mac OS。

2. 計算能力和核心數 (CPU)：您可以選擇 EC2 實例的計算能力和核心數，以滿足您的處理需求。AWS 提供了不同類型的實例，每個類型都具有不同的計算能力和核心數配置。

3. 隨機存取記憶體 (RAM)：您可以根據應用程式的記憶體需求選擇 EC2 實例的 RAM 大小。不同類型的實例具有不同的 RAM 配置。

4. 儲存空間：EC2 提供了兩種主要的儲存選項。一種是網路附加的儲存 (EBS 和 EFS)，它提供了持久的、可擴展的區塊儲存。另一種是硬體儲存 (EC2 Instance Store)，它是 EC2 實例本地的暫存儲存，提供更高的性能但不持久。

5. 網路卡：您可以設定 EC2 實例的網路卡速度和是否分配公有 IP 地址。

6. 防火牆規則：使用安全群組 (Security Group) 可以配置 EC2 實例的防火牆規則，以控制流入和流出的網路流量。

7. 啟動時的啟動腳本：使用 EC2 User Data，您可以在 EC2 實例首次啟動時自動執行啟動腳本，以設定和配置實例。

## User Data
EC2 User Data 是一個用於在 EC2 實例啟動時自動執行指令的機制。透過 EC2 User Data 腳本，您可以在實例首次啟動時自動執行特定的命令和腳本。

以下是 EC2 User Data 的一些特點：

1. 自動化啟動任務：您可以使用 EC2 User Data 腳本自動執行各種啟動任務，例如安裝更新、安裝軟體、從網際網路下載常見文件等。這讓您可以輕鬆地在實例啟動時自動完成設定和配置工作。

2. 只執行一次：EC2 User Data 腳本僅在實例首次啟動時執行。一旦實例已經啟動，即使重新啟動實例，該腳本也不會再次執行。這確保了在實例啟動過程中只運行一次特定的啟動命令。

3. 以 root 使用者身分執行：EC2 User Data 腳本是以 root 使用者身分執行的，因此您可以在腳本中執行需要 root 權限的操作。

EC2 User Data 腳本提供了方便和彈性的方式來自動化 EC2 實例的啟動任務。您可以根據需要在腳本中指定各種命令和指令，以便在實例啟動時自動執行。這可以大大簡化實例的配置和設定流程，節省時間和工作量。

# 購買類型
以下是EC2實例的購買選項及其適用的案例：

1. **On-Demand Instances（即時實例）**：
    * 適用於短期工作負載
    * 按秒計費
    * 這種選項不需長期承諾，只需根據需要啟動和停止實例即可

2. **Reserved Instances（預留實例）**：
    * 適用於長期工作負載
    * 通過簽訂一年或三年的合約期內以更低的價格租用
    * 對於需要長期運行的工作可以降低成本

3. **Savings Plans（節省計劃）**：
    * 適用於長期工作負載，要簽訂一年或三年的合約
    * 比 Reserved Instances（預留實例）更為彈性
    * 可以更改Insatence

5. **Spot Instances（競價實例）**：
    * 適用於短期、彈性的工作負載。
    * 價格根據市場供需情況而波動
    * 比其他選項更便宜
    * 隨時被中止，可靠性較低。

6. **Dedicated Hosts（專用主機）**：
    * 適用於需要完全控制實例放置和硬件使用的情況
    * 會有自己的實體伺服器，並在上面運行EC2實例
    * 在專用主機上運行的實例可以屬於不同的帳戶或可用區域
    * 最貴

7. **Dedicated Instances（專用實例）**：
    * 適用於需要將硬件資源與其他客戶隔離的情況
    * 這些實例在物理伺服器上運行，但不與其他客戶共享

8. **Capacity Reservations（容量預留）**：
    * 適用於需要確保特定可用區域的容量的情況
    * 在需要時確保實例可用
    * 不需要成本
    * 但以不會運行實例就是單純幫比保留容量


# Spot Instance
EC2 Spot Instance Requests（EC2競價實例請求）是一種在AWS EC2上獲取折扣的選項，與按需實例相比，可以獲得高達90%的折扣。以下是有關EC2競價實例的一些要點：

- 可以定義最高競價價格，並在當前競價價格低於您的最高價格時獲取實例。
- 競價價格每小時根據供應和容量而變化，取決於市場需求。
- 如果當前競價價格高於您的最高價格，您可以選擇停止或終止實例，並有2分鐘的寬限期。
- 另一種策略是使用"Spot Block"，它允許在指定的時間範圍（1至6小時）內"阻塞"競價實例，而不會被中斷。
- 在極少數情況下，競價實例可能會被回收。
- EC2競價實例通常用於批處理作業、數據分析或對失敗具有強韌性的工作負載。
- 不適用於關鍵任務或數據庫等重要工作

## 價格波動
![](https://hackmd.io/_uploads/BkkEBaUOn.png)
可以看到spot instance 的價格遠遠低於 on demend instance的價格
因此是省錢的好方法
只是價格會隨時間起伏 當高於自訂義的價格時就會停止運行<br></br>
![](https://hackmd.io/_uploads/SkZ94aUu2.png)
可以選擇一次性或永久的spot instance
一次性:當instance停止後就不會重啟
永久:當instance 因價格高於自訂的價碼會停止，但當價格低時就又會重啟


## Spot Fleets
Spot Fleets（競價實例集群）是由一組競價實例和（可選的）按需實例組成的集合。Spot Fleets的目標是根據價格限制來滿足目標容量。以下是有關Spot Fleets的一些要點：

- 可以定義多個可能的啟動池（Launch Pool），包括實例類型（例如m5.large）、操作系統和可用區。這些啟動池提供了多個選擇，使集群可以進行選擇。
- Spot Fleets會在達到容量或最大成本時停止啟動實例。
- 分配競價實例的策略：
  - lowestPrice：從具有最低價格的池中選取（用於成本優化和短期工作負載）。
  - diversified：分散在所有池中（適用於可用性和長期工作負載）。
  - capacityOptimized：選擇具有最佳容量的池來滿足實例數量。
  - priceCapacityOptimized（推薦）：選擇具有最高容量的池，然後從中選擇價格最低的池（適用於大多數工作負載）。
- Spot Fleets使我們能夠自動請求具有最低價格的競價實例，根據不同的分配策略和需求來獲取最具成本效益的實例。

使用Spot Fleets可以實現成本節省和彈性配置，同時確保可用性和容量的需求得到滿足。這對於需要處理變動工作負載或對成本敏感的應用程序非常有用。