如何使用无服务器框架编写“作为 DynamoDB 代理的 API 网关”

问题描述 投票:0回答:0

我刚刚遇到这个我不知道存在的东西:“API 网关作为 DynamoDB 的代理”(参考:https://aws.amazon.com/blogs/compute/using-amazon-api-gateway - 作为 dynamodb 的代理/)

我想用这个替换我的 lambdas^

我所有的请求都非常简单,除了我的 GET 请求有一些内置的自定义过滤器(按列、日期范围等获取的可能组合)

我确实遇到了插件“apigateway-service-proxy”,但不确定这是否足以满足我未来的需求,并且更喜欢以“原始”自定义方式应用它,同时将其合并到我当前的 api 网关(v2又名 HTTP API)。

如果有可能获得某种关于如何在

serverless.yml
中应用它的样板模板(我想这将包含一些代码?最好是在 python 中,但现在必须,我只想了解如何构建我的
.yml
文件接受 dynamodb 作为 api 的代理)。非常欢迎参考包含相关信息的来源,我没有找到。

编辑:

由于我的帖子被标记为“需要更多关注”,我将写下我的一些用例。我的 API 应该这样响应:

  1. GET 请求到

    /devices
    :

    • /devices
      - 应该返回我的 dynamodb 表中的所有设备。
    • /devices?customer_id=42
      - 应返回 customer_id 列等于 42 的所有设备。
    • /devices?customer_id=null
      - (可以是任何其他不为空但相似的指示符,我知道
      Number
      类型字段没有“null”)
      返回所有没有“customer_id”列的设备.
    • /devices?created=12345,67899
      - 返回在两个时间戳之间创建的所有设备。
    • 多个过滤器的组合,如
      /devices?customer_id=42&created=12345,67899
      - 将返回分配给用户 ID 42 并在 2 个指定时间戳之间创建的所有设备。
  2. POST 请求

    /devices
    :在 Devices dynamodb 表中添加一个设备行,而一些输入如“customer_id、name、url”是强制性的。

  3. /devices
    的 PATCH 请求:更新
    Devices
    表中的一行。可以是以下一列或多列:“名称、网址、customer_id”,而 customer_id 也可以是不存在的列。

注意:解决方案不必包括我提到的所有请求,但越多越好。我可以构建一个构建过滤器的函数。我只需要使用无服务器框架执行此操作的一般指南。

amazon-web-services amazon-dynamodb aws-api-gateway serverless serverless-framework
© www.soinside.com 2019 - 2024. All rights reserved.