在 AWS Lambda 中创建 RESTful 项服务

Creating RESTful services in AWS Lambda

当我浏览 AWS Lambda 文档时,有关于基于 AWS 事件触发服务的参考。我没有在 Lambda 中看到有关托管服务的参考资料。

想了解是否可以使用 AWS Lambda创建RESTful 服务供网站使用?

我可以使用NodeJs 来开发服务。

更正:

Amazon 已推出 - Amazon API 使用 Lambda 的网关

What Is Amazon API Gateway?

API Gateway helps developers deliver robust, secure, and scalable mobile and web application back ends. API Gateway allows developers to securely connect mobile and web applications to business logic hosted on AWS Lambda, APIs hosted on Amazon EC2, or other publicly addressable web services hosted inside or outside of AWS. With API Gateway, developers can create and operate APIs for their back-end services without developing and maintaining infrastructure to handle authorization and access control, traffic management, monitoring and analytics, version management, and software development kit (SDK) generation.

API Gateway is designed for web and mobile developers who are looking to provide secure, reliable access to back-end APIs for access from mobile apps, web apps, and server apps that are built internally or by third-party ecosystem partners. The business logic behind the APIs can either be provided by a publicly accessible endpoint API Gateway proxies call to, or it can be entirely run as a Lambda function.

https://aws.amazon.com/api-gateway

截至今天; AWS Lambda 专注于处理/响应 S3 put、DynamoDB Streams 和自定义事件等事件 [亚马逊可能会提供更多事件源] - 大量利用 STATELESSNESS 编程风格。

使用 AWS Lambda 构建完整的 RESTful 服务后端是不可能的,换句话说,AWS Lambda 将不是构建 RESTful 服务的错​​误选择。您可以继续使用 NodeJS 并将其 运行 置于 EC2 或 ElasticBeanstalk 之上。

截至上个月,答案已更改。 AWS Lambda 函数现在可以 return 同步响应,并且 AWS 现在鼓励使用 Lambda 作为移动后端或潜在的完整 REST API。

目前文档有点少,但您现在可以从这里开始阅读: http://aws.amazon.com/lambda/whatsnew/

答案是可以使用 AWS lambda 构建 RESTful 服务供网站使用。

亚马逊的蒂姆·瓦格纳 (Tim Wagner) 在一次会议演讲中回答了您的问题,一位听众提出了与您非常相似的问题。

问题

"If you want to trigger a lambda function based on a regular old web request coming in from a user on the internet ... they hit an address and they sent in a bunch of query parameters ... So theres just this one stateless kind of thing that comes in with a bunch of data and then you want to trigger a lambda function off of that? ... what are the options there? ... to fire off that node.js workload?"

回答 1

"...使用像 beantalk 这样的东西来创建一个 web 应用程序。然后在该 webapp 内部调用 lambda 函数来为你的工作负载或场景中有意义的部分调用"=53 =]

回答2

"...如果您能够...限制您的调用以匹配 lambda 的请求模型,那么您可以跳过它 (beanstak webapp) 并简单地调用我们,就好像我们是一个 web为您服务代理

https://youtu.be/copO_JQQsBs?t=50m53s


至于你问题的节点部分。

答案是肯定的,您可以使用 node.js

开发 Lambda 函数

请参阅下面来自亚马逊的网络研讨会。

"The language that we have support for today is node.js"

https://youtu.be/YEWtQsqIYsk?t=25m22s

亚马逊现在直接支持此功能 API Gateway service. This post 是如何开始的一个很好的概述。

您几乎可以使用 AWS Lambda 做任何事情(也非常容易)。您可以查看以下无服务器框架:http://docs.serverless.com/v0.5.0/docs

对于 JAVA,您可以使用 Lambada 框架:https://github.com/lambadaframework/lambadaframework