Amazon-Web-Services

帶有 Python 後端的 Web 應用程序。我應該使用 AWS Lambda 嗎?

  • February 11, 2019

我想用 Python 後端建構一個 webapp。webapp 的前端只有一個簡單的輸入框,使用者可以在其中輸入地址。然後,在後端,我想從該地址的網頁中抓取內容,然後處理該數據。這種數據處理可能會變得非常繁重。

我對 Python 非常有經驗,儘管在 webapps、託管等方面,我的經驗為零。我在 namecheap 上購買了一個域名和主機,儘管我剛剛發現也許我不需要使用他們的主機,因為 /r/webhosting 中的某個人建議我改用 AWS。這是我被建議遵循的方法:

  • 切換到 AWS(或 Azure)
  • 創建 python lambda/function 來對這個請求做任何你想做的事情……
  • 將 lambda 放在 api-gateway 後面
  • 將 Cloudfront 放在 api-gateway 前面(可選但嘿..)

我已經看過將 namecheap 域指向 EC2 實例的教程。但是我該如何用 Lambda 來做這件事呢?是不是一樣的原理?你能給我指出任何可能教我如何處理這個問題的教程嗎?Lambda 實際上是解決此問題的最佳解決方案嗎?

謝謝!

創建 API 網關時,您將獲得一個端點 URL。因此,任何到達該端點的 HTTP 請求都會觸發相關的 lambda。端點看起來像這樣:

https://API-ID.execute-api.REGION.amazonaws.com/STAGE

然後,您可以通過路徑或查詢參數傳遞參數(要抓取的 URL)。

為方便起見,通過 cloudfront 封裝 API 網關,使 api URL 看起來像:

https://example.com/api/v1/scrape

當談到您關於 Lambda 是否是最佳解決方案的問題時,我會說這取決於。Lambda 的一些明顯好處是無伺服器,如果您的應用程序設計為這樣做(https://docs.aws.amazon.com/lambda/latest/dg/scaling.html),它可以“無限”擴展,並讓服務得到照顧它,如果你不使用它,它不會花費你。

我還建議您查看限制(https://docs.aws.amazon.com/lambda/latest/dg/limits.html),我會專門研究功能超時(15分鐘),這對知道您是否打算進行比這更長的處理。

如果您決定確實使用 API Gateway/Lambda 組合,這裡有一些有用的連結:

如何使用 API 網關設置 Lambda:https ://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-lambda-integration.html )

使用自定義 DNS 名稱設置 API Gateway:https ://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

將子域委託給 Route 53(AWS 的 DNS 服務)而不遷移父域: https ://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html

引用自:https://serverfault.com/questions/952997