我想构建一个带有 Python 后端的 Web 应用。Web 应用的前端只有一个简单的输入框,用户可以在其中输入地址。然后,我想在后端从该地址的网页中抓取内容,然后处理这些数据。这种数据处理可能会变得非常繁重。
我对 Python 相当熟悉,但在 webapps、托管等方面我却毫无经验。我在 namecheap 上购买了域名和托管,尽管我刚刚发现我可能不需要使用他们的托管,因为 /r/webhosting 中有人建议我改用 AWS。这是我被建议遵循的方法:
- 切换到AWS(或Azure)
- 创建 python lambda/函数来对该请求执行任何您想做的事情...
- 将 lambda 放在 api-gateway 后面
- 将 Cloudfront 放在 api-gateway 前面(可选,但是嘿...)
我看过将 namecheap 域指向 EC2 实例的教程。但是我该如何使用 Lambda 来做到这一点?这是相同的原理吗?你能给我指出一些可以教我如何处理这个问题的教程吗?Lambda 真的是这个问题的最佳解决方案吗?
谢谢!
答案1
创建 API 网关时,您将获得一个端点 URL。因此,任何到达该端点的 HTTP 请求都会触发相关的 lambda。端点如下所示:
https://API-ID.execute-api.REGION.amazonaws.com/STAGE
然后您可以通过路径或查询参数传递参数(要抓取的 URL)。
为了使事情变得简单,通过 cloudfront 封装 API 网关,以便 api URL 看起来像这样:
答案2
至于你问的 Lambda 是否是最佳解决方案,我会说这要视情况而定。Lambda 的一些明显优势是无服务器,如果你的应用程序设计为这样,它可以“无限”扩展(https://docs.aws.amazon.com/lambda/latest/dg/scaling.html) 让服务来处理它,如果您不使用它,则无需支付任何费用。
另外我建议你看一下限制(https://docs.aws.amazon.com/lambda/latest/dg/limits.html),其中我会特别研究函数超时(15 分钟),如果您计划进行耗时更长的处理,了解这一点很重要。
如果您决定确实获得 API 网关/Lambda 组合,这里有一些有用的链接:
如何使用 API 网关设置 Lambda:https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-lambda-integration.html)
使用自定义 DNS 名称设置 API 网关: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