Lambda函数自定义域

时间:2018-08-25 04:51:42

标签: amazon-web-services aws-lambda aws-api-gateway

我今天一直在尝试使用AWS lambda进行一些尝试。我目前正在尝试从浏览器中的URL触发功能。

URL看起来类似于:https://abcdef.execute-api.eu-west-2.amazonaws.com/default/test

据我了解,我可以为端点分配自定义域,但是也可以摆脱url的路径部分,例如:

GET: https://example.com/

GET: https://example.com/somefile.txt

POST: https://example.com/ ['some_post_field' => 'some data']

是否将所有信息传递给我的函数,还是我需要使用NGINX配置EC2实例以将请求代理传递给lambda?

任何想法都会有用。

2 个答案:

答案 0 :(得分:0)

现在有两种不同的方法可以在AWS中完成此操作:

  1. 最新的(可以说是最酷的!! )是使用Cloudfront通过其Lambda@Edge服务来运行代码。您可以完全自定义URL路径,并像其他任何REST端点一样将部分用作变量。您将Lambda fn附加到“行为”端点,从而可以完全控制URL。它相当深入,超出了您的问题范围,无法在此处进行解释,但请仔细阅读提供的链接中的文档,您可能会看到很多喜欢的东西。
  2. 另一种更旧,更昂贵但文档更丰富的方法是使用AWS的API Gateway,就像您在问题标记中所没有看到的那样。它具有出色的前端控制台,并且通过将API端点附加到REST方法很容易将其连接到Lambda后端逻辑。该控制台可帮助您使用表单字段数据“可变化” URL。此服务可帮助您最大程度地触发自定义域。设置自定义域是API Gateway中的一个快速操作。还要确保在您的自定义域上也使用AWS的SSL Certificate Manager免费SSL证书!

如何专门设置端点取决于您选择的服务。就个人而言,鉴于您希望提供不同类型的内容,我倾向于使用CloudFront,并为动态Lambda内容定义一个“行为” URL。如果URL请求与您定义的行为之一不匹配,则默认为Cloudfront缓存/来源来提供您的静态资产(somefile.txt)。仅匹配项将与表单数据一起发送到您所附的Lambda fn。 非常光滑!

很多Lambda @ Edge fn的are available here示例。

我既使用了这两个功能,又同时拥有了两个客户。 Lambda @ Edge可笑的是更快,更便宜,BUT的文档更少,学习曲线更陡峭,控制台几乎没有帮助。老实说,我会同时尝试看看哪一种最适合您的情况和经验水平。两者都将完成工作。绝对肯定不需要EC2(也许也不希望)。希望有帮助-祝你好运!

答案 1 :(得分:0)

与其通过URL直接公开Lambda函数,不如通过AWS API Gateway公开它,您可以在其中定义自己的路径并映射到域。