概觀

除了提高 Web 應用程式的效能、安全性和可用性之外,CloudFront 還可以用來降低 Web 應用程式的成本。首先,CloudFront 的定價模式可以降低您的原始成本。其次,您可以設定 CloudFront 並架構應用程式,以降低其成本。如需有關使用 AWS 服務將成本最佳化的更多一般指引,請考慮 AWS Well-Architected Framework 的成本最佳化支柱。若要監控並了解您的成本,請使用 AWS Cost ExplorerAWS Bduget

CloudFront 的定價

CloudFront 的定價模型包括多個維度,其中兩個最主要的是:

  • 傳送至網際網路的區域資料傳出 (DTO),這表示 CloudFront 在網際網路上提供給使用者的 GB 數量。請注意,此定價取決於使用者所在區域,使用二進位 GB (即 1 GB = 1024 MB) 計量,而且僅包含 HTTP 承載 (例如,不包括 TLS 交握資料傳輸)。
  • 請求費用,這表示 CloudFront 所提供的 HTTP (S) 請求數目。其也取決於使用者所在的區域。

預設情況下,CloudFront 會使用其所有網路來提供內容以獲得最佳效能。如果您希望在交付成本方面進行權衡,請考慮在 CloudFront 中設定價格分級選項。

CloudFront 有一個持續可用的免費方案,其中包含每個月 1 TB 的 DTO 和 1000 萬個 HTTP(S) 請求。如果您將 AWS WAF 與 CloudFront 搭配使用,請考慮使用 CloudFront 安全防護優惠組合的預付承諾,以節省高達 30% 的 CloudFront 費用。如果數量較大 (10TB 以上),請透過簽署私人定價協議獲得進一步折扣,以換取更高的財務承諾。請注意,當您的整體流量中傳遞 HTTP 物件的平均大小越高時,您可以獲得的折扣就越大。因此,建議您將 CloudFront 用於多個工作負載 (API 交付和靜態檔案傳遞),以增加您在私人定價協議中可以獲得的整體折扣。

需要注意的是,當與基於 AWS 的來源一起使用時,CloudFront 的 DTO 會取代來源的 DTO。因此,您無需支付來源的資料傳出 (DTO)。

最後,檢閱您對 CloudFront 選用功能的使用情況並將其最佳化,這可能會產生額外的成本,例如內容失效

將 CloudFront 中的失效成本最佳化

根據 CloudFront 定價,您每個月可以使用 1,000 個失效路徑,而無需額外費用。之後,每個失效路徑需支付 0.005 USD。失效請求上所列的路徑,代表您希望從 CloudFront 快取中為之取消效力的物件 URL (如果路徑含有萬用字元,則會有多個 URL)。

請考慮使用以下秘訣,將使用 CloudFront 的失效成本最佳化:

  • 預設使用 HTTP 快取控制機制 (例如,快取控制標頭、URL 版本控制、條件式請求),但在緊急情況下,建議使用基於 CDN 的失效。如需詳細資訊,請閱讀此部落格文章
  • 如果適用於使用單一失效請求讓多個檔案失效,請在失效請求中使用萬用字元。例如,使用 /stories/sports/worldcup* 可以讓所有與世界盃賽事相關的文章失效,而不是讓文章逐篇失效。

您可以監控您的失效請求用量,並使用 AWS Budgets 設定警示。

使用 CloudFront 降低 Web 應用程式成本

CloudFront 會透過卸載來源,以原生方式降低 Web 應用程式的成本。首先,CloudFront 會從自己的快取提供可快取的請求,從而降低來源的擴展成本。您可以透過提高快取命中率 (例如,啟用 Origin Shield) 將 CloudFront 組態最佳化,以進一步卸載來源。其次,CloudFront 會重複使用與來源的 TCP/TLS 連線進行動態請求 (例如 API 呼叫),從而減少來源需要處理的新連線數量,以及從來源輸出的 TLS 憑證數量。這可以降低 ALB 等來源的成本,因為 LCU 耗用量會隨著每秒新建立的連線數和處理的位元組數的減少而降低。

您可以設定 CloudFront 以不同的方式進一步降低成本。例如,使用 GZIP 或 Brotli 壓縮文字檔案以減少 DTO。另一個範例是,當您的應用程式需要邊緣函數時,最好在適用的情況下使用 CloudFront Functions,因為它比 Lambda@Edge 更實惠。閱讀有關將邊緣函數最佳化的最佳實務以降低成本。

最後,建議使用標準的 Cache-Control 標頭來控制快取的新舊程度,而不是使用失效作為正常操作的一部分。Cache-Control 機制更可靠,可以控制瀏覽器上的快取,而且無需任何成本 (與 CloudFront 失效相較,每個月超過 1000 個失效的配額)。緊急情況下使用失效。

AWS WAF 最佳化

AWS WAF 成本中的主要組成部分通常是請求費用。您可以透過不同的方式降低此成本:

  • 根據您的威脅建模,僅在需要保護的 CloudFront 分發上啟用 AWS WAF。例如,如果您在 S3 上託管的靜態內容不需要 WAF 保護,請將其移至單獨 CloudFront 分發上的單獨網域 (例如 static.example.com),並僅在提供 HTML 檔案的主要分發 (例如 www.example.com) 上啟用 AWS WAF。
  • 當您訂閱 Shield Advanced 時,AWS WAF 請求費用會包含在 Shield Advanced 定價中。Shield Advanced 收取每月訂閱費用,並對您的應用程式資料傳出收取額外費用。如果您的應用程式是請求密集型 (每秒請求量高,平均承載低,例如使用 API),啟用 Shield Advanced 可能有助於降低整體 WAF 成本。
  • 最後,部分 AWS WAF 規則會產生額外費用,例如 CATPCHA、AWS 機器人控制功能或 AWS Marketplace 中供應商管理的規則。若要將這些成本最佳化,請將此類規則的範圍縮小到特定條件 (例如,僅 CAPTCHA 可疑 IP 或僅對 HTML 請求套用機器人控制功能),並在 WebACL 的結尾使用,讓先前的免費規則有機會阻止惡意請求而無需額外費用。請閱讀本部落格文章,更深入了解 WAF 規則成本最佳化。

應用程式層級最佳化

您可以在應用程式層級實作一些技術來降低 CloudFront 交付成本。請考慮以下技術:

  • 利用瀏覽器快取減少 CloudFront 交付的請求數量
  • 在物件上實作 ETag 以啟用條件式請求。 相較於完整擷取,使用 304 Not Modified 回應進行物件重新整理的交付成本更低。
  • 實作影像最佳化以使用 WebP 和 Avif 等現代化格式壓縮影像。此外,在網站上延遲載入影像可避免下載瀏覽器未轉譯的影像。
  • 實作調整式位元率串流進行影片交付。考慮使用 QVBR 影片編碼。考慮根據裝置類型提供最佳化的轉譯階梯。本部落格文章解釋了這個概念,但它是在啟動 CloudFront Functions 之前使用 Lambda@Edge 撰寫的。
  • 如果可能,請針對 API 呼叫使用同源政策,如此可以消除預檢 CORS OPTION 請求的成本。請閱讀本部落格文章以獲得進一步的詳細資訊。
  • 考慮所有日誌記錄選項,並為您選擇最具成本效益的選項。CloudFront 的標準存取日誌是免費提供的,但它適用於您的所有流量。相反地,CloudFront 的即時日誌是透過 CloudFront 快取行為以及增量費用的必填欄位精細設定的。WAF 提供多個日誌記錄選項,最具成本效益的選項是基於 Kinesis Firehose 的選項。請注意,您可以根據規則動作或發出的標籤等維度,篩選記錄的請求。

資源

本頁對您是否有幫助?