我是AWS的新手,如果这个问题缺少一些重要的考虑因素,或者假设不正确,请提前道歉。
但基本上我想在AWS上实现一项服务来存储和检索来自多个客户端的数据,这些客户端可能是Android应用程序,Windows应用程序,网站等。我考虑这样做的方式是通过使用API网关的RESTful服务前端,带有Lambda后端,可能还有一个用于保存数据的S3存储桶。
基本要求是: (1)客户端可以将数据发布到存储它的服务器,也许具有某种键/值结构。 (2)客户端可以通过密钥检索所述数据。 (3)如果可能,客户端能够订阅来自服务的事件,以便在数据的值发生变化时通知他们。这样可以避免轮询服务的需要,如果数据不经常变化,可能会开始收取不必要的费用。
有关如何开始欢迎的任何指示!
答案 0 :(得分:3)
在Lambda和API Gateway之上创建RESTful API是此体系结构的主要用例之一。您可以将Lambda函数视为具有方法的控制器,将API Gateway视为路由器,根据URL模式将请求转发给函数。如果您不想从头开始编写,有许多框架和方法可以提供帮助:
Lambdasync https://medium.com/@fredrikanderzon/create-a-rest-api-on-aws-lambda-using-lambdasync-e46c68f8043f
无服务器 https://serverless.com/framework/docs/providers/aws/events/apigateway/
扬鞭 https://cloudonaut.io/create-a-serverless-restful-api-with-api-gateway-swagger-lambda-and-dynamodb/
就事件订阅而言(要求#3),您可以在许多数据存储中建模,当然在关系/ SQL数据库中,使用如下表格进行建模:
Subscription (key_of_interest, user_id, events_of_interest)
我遗漏了数据类型供您查明,但您希望得到这个想法。在对特定密钥进行每次数据修改之后,查看该密钥是否在订阅表中感兴趣,然后将响应连接到表示感兴趣的用户。这个细节当然取决于您的特殊要求。但需要注意的是:由于处理订阅所需的额外开销,这种方法会增加数据修改的成本。
编辑:我忘记了另外一件事。 S3更适合非结构化数据(想想'文件')。对于关系数据库,请结帐RDS。对于简单的NoSQL数据库,您可以使用DynamoDB,或在EC2实例上托管您自己的NoSQL数据库。