使用 AWS API 网关与与无服务器数据库对话的 Lambda 函数集成,创建完全无服务器的解决方案

Creating a completely serverless solution using AWS API Gateway integrated with a Lambda function that talks to a serverless database

我希望使用 AWS API 网关创建完全无服务器的 AWS 解决方案,该网关将具有与 Lambda 函数集成的端点,该函数将与简单的第三方 Web API w/ http 请求以及某种用于持久化数据的无服务器数据库。

下面是我想要做的事情的一个例子:

获取:my-api-gateway-endpoint/products/1 Lambda 函数将知道它是产品的 GET 并且参数为 1,因此它将 运行 适当的函数来查询我的数据库和 return ID 为 1

的产品

POST: my-api-gateway-endpoint/products Lambda 函数将知道它是产品的 POST,因此 运行 适当的函数将通过 http 调用第三方 Web API 并将其插入到那里,但另外将产品插入我的数据库

删除:my-api-gateway-endpoint/products/1 Lambda 函数将知道这是对 ID 为 1 的产品的 DELETE 请求,因此它将 运行 适当的函数通过 http 调用第三方 Web API 并在那里删除它,但另外查询我的数据库并删除ID 为 1

的产品

我正在尝试找出合适的堆栈来完成这项工作,以下是我到目前为止想到的: -API 网关

-用 C# 编写并上传的单个 Lambda 函数,处理所有类型的请求。与第三方 Web API 以及无服务器数据库

对话

-Aurora Db 无服务器,启用数据 API。我们的想法是通过 C# lambda 函数与此对话以保存和查询数据。

当我看到有人在 Lambda 中托管整个 Asp.net 核心网络 API 项目时,我开始有点困惑。也许这是我走的路。我找不到有关如何使用 C# 访问 Aurora Db Serverless 数据 API 的单个示例。

任何人都可以告诉我一些关于这个堆栈是否会让我走上正确的轨道来完成工作的见解,或者提供任何我可以布置它的其他方式的想法。

我正在寻找完全无服务器且尽可能简单的产品。我也不关心 Lambda 使用的是什么语言,但我更喜欢 C#。

如果您只需要通过 productId 访问产品,这是 DynamoDB(基本上是具有一些额外功能的键值存储)而不是 Aurora Serverless 的一个很好的用例。

AWS 博客有一个 how to create a .NET Lambda function, including integration with API Gateway. The DynamoDB documentation has pretty comprehensive examples of how to use the DynamoDB SDK for .NET. Finally, here is a sample project 的演练,它使用 API Gateway/Lambda/DynamoDB 基础设施和 .NET。