請求 DNS 時自動啟動 EC2 執行個體

請求 DNS 時自動啟動 EC2 執行個體

我有一些 EC2 執行個體在 Docker 中運行 Web 應用程序,我將它們設定為在工作時間之外(例如上午 7 點到下午 7 點)自動停止以削減成本。我想知道是否可以在請求 Web 應用程式的 URL 時自動啟動執行個體(即使 EC2 已停止),以防有人想要存取先前配置的非營業時間。

有些人建議我在 AWS Lambda 中運行該應用程序,但如何觸發該函數以 DNS 呼叫啟動?

答案1

這並不容易實現。您可能會發現使用 lambda 和路由 53 日誌記錄的一些複雜方法,但即使您這樣做,啟動 EC2 執行個體也可能需要 5 分鐘。這表示當 EC2 執行個體啟動時,請求已逾時。

拉姆達

在 lambda/無伺服器運算上重寫您的應用程式將消除此問題。您只需按請求付費,並且在大多數情況下無需支付太多費用。大多數無伺服器應用程式的成本都非常低。然而,有些執行個體的成本可能比 EC2 執行個體高得多。

實用的選擇

降低成本最實用的方法可能是使用自動縮放和小型計算單元並橫向擴展,而不是減少大型執行個體。您可以讓一小組資源 24/7 全天候運行,並在繁忙期間運行更多資源。

對於容器,您可以考慮使用 Fargate 來保持低資源容器 24/7 運行,然後在負載建置時增加更多資源。這可以是自動縮放或計劃縮放。我不知道您是否可以在同一個 ECS 叢集中使用 Fargate 和 EC2,但如果可以的話可能會解決問題。

答案2

當請求 Web 應用程式的 URL 時,無法啟動 ec2 實例。在實例準備好服務請求之前,http 請求將會逾時。

不涉及身份驗證,這意味著來自機器人的任何隨機請求都會觸發 ec2 實例的啟動。

理論上,應該可以建立一個堆疊來執行此操作,例如使用 ALB 將請求路由到 Lambda 函數的特定路徑,該函數可以啟動 ec2 實例。但所涉及的資源比讓實例 24/7 運作更昂貴。

如果您想削減成本,AWS 可能不是最適合您的提供者。

相關內容