AWS Public IPv4 收費機制與費用優化策略
自 2024 年 2 月 1 日起,AWS 將對所有 public IPv4 位址收取每小時 0.005 美元的費用,無論該 public IPv4 位址是否正在使用中。 此變更將適用於 AWS 全球所有區域和所有可能分配和附加 public IPv4 位址的 AWS 服務,包括 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Relational Database Service (Amazon RDS) 、Amazon Elastic Kubernetes Service (Amazon EKS) 等。舉例來說: 2024 年 2 月 1 日開始,每一組 Amazon public IPv4 位址,每月收費 $3.6 USD,每年收費 $43.2 USD。
以下是舊制計費與新制計費的差異:
public IPv4 位址類型 | 舊制計費 每小時費用 (USD) |
新制計費 (2024 年 2 月 1日 起生效) 每小時費用 (USD) |
---|---|---|
已分配給資源且正在使用中 (Associated) 的 public IPv4 位址 (包括 Amazon public IPv4 和 EIP) | 不收費 | 0.005 |
已分配但閒置中 (Unassociated) 的 ElP IPv4 位址 | 0.005 | 0.005 |
額外的 (第二組的) EIP 位址分配給運行中的 EC2 主機 | 0.005 | 0.005 |
Amazon BYOIP (Bring Your Own IP) | 不收費 | 不收費 |
使用 public IP insights 功能了解 public IPv4 位址使用情況
為了解決 AWS 帳戶中 public IPv4 位址的計費問題,我們應如何有效查詢現有的 public IPv4 位址呢?考慮到即將對所有 public IPv4 位址計費,無論其是否被使用,是否有一種方法能透過統計或圖表來分析和歸類不同種類的 public IPv4 位址?針對此需求,AWS 於 2023 年 7 月推出了public IP insights 這項新功能。作為 Amazon VPC IP Address Manager (IPAM) 的免費新功能,它旨在簡化對 public IPv4 位址的監控、分析和審核工作。
public IP insights 功能旨在提供深入了解 public IPv4 位址使用狀況,幫助用戶識別與之相關的 AWS 資源,並提供這些 public IPv4地址的使用模式。利用 public IP insights,您可以輕鬆地辨識並釋放那些未被 AWS 資源所使用的 public IPv4 位址。透過對 AWS 帳戶中每一個 public IPv4 位址全面使用概況的了解,您無需再進行繁瑣的手動搜尋。
public IP insights 是整合於 Amazon Virtual Private Cloud (VPC) 和 IPAM 中的功能,您可以直接在 AWS 控制台中搜索 IPAM,快速存取此功能 (如圖示 1)。
在完成設定後,系統將需要一段時間來收集所有 public IP 位址的使用情況數據。當您成功開啟 IPAM - public IP insights 時,根據不同呈現的統計與圖表,你會看到各種不同的 public IPv4 位址類型,包括:
- Amazon EC2 public IPv4 位址 :
在 Amazon VPC 中,您可以選擇自動分配 public IPv4 位址給您的 AWS 資源。 當您在 VPC 的子網路中啟用 auto-assign public IPv4 address 選項時,會自動從 Amazon IP 位址池中接收 public IPv4 位址。當 EC2 執行個體停止、休眠或終止時,public IPv4 位址也會自動釋放。如果您重新啟動 EC2 執行個體,將會分配一個新的 public IPv4 位址。 - Elastic IP 位址 :
Elastic IP (EIP) 位址是可以額外分配給您的 AWS 帳戶的 public IPv4 位址,而不是分配給特定資源的 IP 位址。例如,您可以選擇建立一組新的 Elastic IP 位址,並將其關聯到您的 EC2 執行個體,使您的 EC2 執行個體分配到一組具有 public IPv4 位址 (Elastic IP 位址),當不再需要使用時,可選擇解除關聯並釋放回去。 - AWS 托管服務使用的 public IPv4 位址 :
部署在您帳戶中的 AWS 托管服務,例如面向網際網路的 Elastic Load Balancer、NAT gateways 或 AWS Global Accelerator (AGA),會使用來自 Amazon IP 位址池。當您在啟用了 auto-assign public IPv4 address 選項的子網路中部署托管服務時,它們會自動接收 public IPv4 位址。您可以參考以下常見部份的 public IPv4 位址的 AWS 托管服務列表 :- AGA: An AWS Global Accelerator.
- Database Migration Service: An AWS Database Migration Service (DMS) replication instance.
- Redshift: An Amazon Redshift cluster.
- RDS: An Amazon Relational Database Service (RDS) instance.
- Load balancer: An Application Load Balancer or a Network Load Balancer.
- NAT gateway: An Amazon VPC public NAT gateway.
- Site-to-Site VPN: An AWS Site-to-Site VPN virtual private gateway.
- Other: Other service that is not currently identifiable.
- 自備 IPv4 位址 (BYOIP) :
自備 IPv4 位址 (BYOIP) 是一種將您擁有的 IPv4 位址範圍帶入 AWS 帳戶的功能。您可以將部分或全部可公開路由的 IPv4 位址範圍從您的本地網路帶入 AWS。使用 BYOIP 具有以下的優點 :- 無需額外費用:使用 BYOIP 不需要支付任何費用。
- 保持控制權:您可以繼續擁有位址範圍,並控制其在網際網路上的通告狀態。
- 靈活部署:您可以直接在 EC2 或使用 Amazon VPC IPAM 配置一個或多個 BYOIP 位址池。
- 廣泛應用:來自 BYOIP 位址池的 public IPv4 位址可以分配給 AWS 服務,例如 EC2 執行個體或 NAT Gateway。您也可以將 BYOIP 位址用於 AWS Global Accelerator。
更多完整的 public IP insights 使用資訊,可以參考: https://docs.aws.amazon.com/vpc/latest/ipam/view-public-ip-insights.html
public IPv4 位址使用策略方法
瀏覽過上述 public IP insights 分析的圖表後,我們心中肯定會有一個想法,那就是如何有效節約 public IPv4 位址,並且在不影響原服務的使用下減少使用這些位址的數量? 針對不同的使用場景,以下提供 5 種不同的策略與方法來減少 public IPv4 位址的使用數量,並仍能提供原有服務:
策略一:停用 EC2 執行個體的 Auto-assign public IP 功能
在建立新的 EC2 執行個體時,如果預期會透過網際網路連線到執行個體的作業系統,通常會在網路設定中勾選「Auto-assign public IP」,讓執行個體建立完成後會帶有 public IPv4 位址並連上網際網路。接著,可以使用 SSH 或 RDP 從網際網路連線到執行個體,或是使用 AWS 主控台上的 Session Manager 以 public IP 存取連線。
透過 public IPv4 位址讓外部環境從網際網路連線進來,不僅會消耗一組 IP 位址,同時也會讓執行個體暴露在網際網路的風險環境下,如果安全管理不當,將會造成資安問題。
停用自動分配 public IP 功能有兩種方法:
- EC2 - 在建立 EC2 執行個體時,在網路設定中取消勾選「Auto-assign public IP」
- VPC 子網路 - 在 VPC 子網路的設定中取消勾選「Enable auto-assign public IPv4 address」功能:在 VPC 主控台的「子網路」頁面中,選取要取消自動分配 public IP 功能的子網路,然後在「編輯子網路設定」頁面中,取消勾選「Enable auto-assign public IPv4 address」,如圖示6。
策略二:優化遠端連線,提升安全與管理效率
考量使用者對 EC2 執行個體有主機作業系統連線的需求並想要節約 public IPv4 位址,以下提供 2 種作法可在不需要 public IPv4 位址的情況下仍然可以連線到 EC2 執行個體:
- 使用 EC2 Instance Connect Endpoint:
EC2 Instance Connect Endpoint 是一種使用 AWS PrivateLink 技術的安全連線方式。它允許您使用 SSH 或 RDP 連線到 EC2 執行個體,而無需 public IPv4 位址。
參考 AWS 官方部落格:Secure Connectivity from Public to Private: Introducing EC2 Instance Connect Endpoint - 使用 AWS PrivateLink 設定 Session Manager 的 VPC Endpoint:
AWS Systems Manager Session Manager 是一種管理 EC2 執行個體的工具。它允許您使用安全的 Shell 或 RDP 連線到 EC2 執行個體。您可以使用 AWS PrivateLink 設定 Session Manager 的 VPC Endpoint,以便透過 Private IP 位址連線到 EC2 執行個體。
參考 AWS 官方部落格:AWS Systems Manager Session Manager for Shell Access to EC2 Instances
策略三:使用 NAT Gateway 來統一網際網路出口的流量
對於需要連線到網際網路的 EC2 執行個體或其他 AWS 服務,可以考慮使用 NAT Gateway 來統一網際網路出口的流量,而無需在各別的 EC2 執行個體配置 public IPv4 位址。如此一來,可以大幅度的減少 public IPv4 位址的使用數量與費用。
NAT Gateway 是一個網路地址轉換 (NAT) 服務。你可以使用 NAT Gateway 讓位於私有子網的 EC2 執行個體連線到 VPC 外部的服務,但是外部服務無法主動與這些 EC2 執行個體建立連線。
以下舉2個範例說明大量 EC2 執行個體配置 public IPv4 位址與使用 NAT Gateway 作為統一網際網路的出口,在費用上會有哪些的差異:
範例 1:大量 EC2 執行個體配置 public IPv4 位址
假設一個月內使用了 100 個 Amazon EC2 執行個體,並且總共傳輸了 100 GB 的資料到網際網路,那麼 EC2 public IPv4 收費為:
100 個 EC2 public IP x 每個 IP 每小時 $0.005 x 每月 730 小時 = 每月 $365
範例 2:使用 NAT Gateway 作為統一網際網路的出口
如果改使用 NAT Gateway 作為統一網際網路的出口,費用的估算為:
NAT Gateway 每小時費用:$0.045/小時/NAT Gateway x 730 小時 x 2 個 NAT Gateway = 每月 $65.70
NAT Gateway 資料處理費用:$0.045/GB x 100 GB = 每月 $4.50
正在使用的 public IPv4 位址費用:$0.005/IP/小時 x 730 小時 x 2 個 Elastic IP = 每月 $7.30
NAT Gateway 總費用:每月 $77.50
相較之下,使用 NAT Gateway 將可每月節約 $365 - $77.5 = $287.5
策略 4:使用 Amazon ELB 與 Global Accelerator 來優化面向網際網路的應用程式
除了日常維護需要連線到 EC2 執行個體之外,有些 EC2 執行個體會需要提供面向網際網路用戶的應用程式。最直接也最快速的方法就是在這個 EC2 執行個體配置一組 public IPv4 位址,並在安全群組開啟 80 或者是 443 埠來提供面對網際網路的 HTTP 與 HTTPS 存取。
然而,這種方法存在以下兩個問題:
- 安全性:EC2 執行個體直接曝露在網際網路上,容易受到攻擊
- public IPv4 位址的使用成本:public IPv4 位址是有限的資源,需要付費使用
為了解決這兩個問題,建議使用 Amazon ELB 或 AWS GA 來作前端應用程式的分流與加速。
Amazon ELB 和 AWS GA 都可以將來自網際網路的流量分散到多個 EC2 執行個體上,以提高應用程式的可用性和效能。此外,GA 支援以下兩種特性,可以節省 public IPv4 位址的使用費用:
- GA 可使用 internal Application Load Balancer (ALB)、internal Network Load Balancer (NLB) 或 EC2 執行個體作為網際網路應用程式的加速器終端節點。這意味著您可以透過 GA 使用 private IPv4 位址來連接 ALB、NLB 和 EC2 執行個體,而無需在這些應用程式的端點上配置 public IPv4 位址。
- GA 可使用 BYOIP 並允許您將自己的 public IPv4 位址帶到 AWS。這意味著您可以使用現有的 public IPv4 位址與 AWS 服務進行通訊,而無需使用 AWS 分配的 IPv4 位址,因此無需支付 IPv4 費用。
策略 5:IPv6 位址的使用
使用 IPv6 解決 IPv4 位址稀缺問題
IPv4 位址空間有限,且已接近耗盡。IPv6 位址空間則大得多,可解決 IPv4 位址稀缺的問題。此外在 AWS 服務中, IPv6 位址不需要額外收取費用。因此,利用 IPv6 亦可成為一個具成本效益的策略
在 AWS 中使用 IPv6
在 AWS 中使用 IPv6 可分以下 2 種應用情境:
- 在 Amazon VPC 中使用 IPv6:如果您現有的 AWS VPC 僅支援 IPv4,且子網路中的資源配置為僅使用 IPv4,則可以為您的 VPC 和資源啟用 IPv6 。您的 VPC 可以在雙堆疊支援 (Dual-stack) 模式下運作,也就是說您的資源 (例如 EC2 執行個體) 可以同時配置 IPv4 或 IPv6 位址,並透過 IPv4 或 IPv6 或兩者進行通訊,IPv4 和 IPv6 通訊是彼此相互獨立的。除此之外,如果在新的子網路下您不再需要配置 IPv4,您也可以建立一個全新的僅 IPv6 支援 (IPv6 only support) 的子網路。如圖示 7,依照您的應用,您可以在 VPC 中建立僅支援 IPv4 位址、僅支援 IPv6 位址與雙堆疊支援的子網路
- 支援 IPv6 的 AWS 公有端點 (Public endpoint) 與私有端點 (Private endpoint):AWS 服務支援透過公有端點進行存取。有些 AWS 服務 也支援透過由 AWS PrivateLink 提供的私有端點進行存取。即使無法透過公有端點支援 IPv6,AWS 服務仍可透過其私有端點支援 IPv6。
有關最新 AWS 服務的 IPv6 支援列表請參考: https://docs.aws.amazon.com/vpc/latest/userguide/aws-ipv6-support.html
結論
public IPv4 位址是有限的資源,需要付費使用。隨著網路應用程式的普及,public IPv4 位址的需求也越來越高。因此,有效節約 public IPv4 位址的使用,對於降低成本和提高安全性都具有重要意義。本文介紹了 5 種不同的策略與方法來減少 public IPv4 位址的使用數量,並仍能提供原有服務,企業可以根據自身的需求和實際情況,以短、中、長期來去選擇合適的策略和方法來節約 public IPv4 位址的使用:
短期的策略
短期的策略可以快速減少 public IPv4 位址的使用數量,但可能需要進行一些配置更改。例如:
- 停用 EC2 執行個體 Auto-assign public IP 功能或停用子網路 Enable auto-assign public IPv4 address
- 優化遠端連線,使用使用 EC2 Instance Connect Endpoint 提升安全與管理效率
中期的策略
中期的策略可以透過部署新的網路架構來減少 public IPv4 位址的使用數量。例如:
- 使用 NAT Gateway 來統一網際網路出口的流量
- 使用 Amazon ELB 與 Global Accelerator 來優化面向網際網路的應用程式
長期的策略
- 長期的策略可以透過部署 IPv6 來完全解決 public IPv4 位址稀缺的問題
作者
James Chan
James Chan 是台灣 AWS 的解決方案架構師,專注於為台灣金融產業和製造業客戶提供雲端解決方案。他擁有豐富的 AWS 基礎設施、混合雲設計和網路技術方面的經驗,致力於協助不同產業客戶解決雲端網路問題,並提供最佳實踐的設計建議。
Bruce Wang
Bruce Wang 是台灣 AWS 的資深混合雲端解決方案架構師。他擁有豐富的 AWS 基礎設施、混合雲設計、雲端運算、儲存和網路技術方面的經驗。他致力於協助不同產業客戶解決混合雲端技術問題,包括製造、雲售、金融、政府等產業客戶,並提供最佳實踐的設計建議。