【问题标题】:Set Validation rules for AWS DynamoDB table为 AWS DynamoDB 表设置验证规则
【发布时间】:2022-01-03 04:48:48
【问题描述】:

实际上,我想对 AWS DynamoDB 表项目实施验证,如果项目字段的规则中断,这应该会阻止记录插入/更新。

有可能吗?

或者我们可以为 dynamoDB 表创建一个触发器 lambda,该触发器在插入/更新之前触发。这样我们就可以检查验证规则并进行处理。

【问题讨论】:

    标签: amazon-dynamodb aws-lambda amazon-dynamodb-streams


    【解决方案1】:

    DynamoDB 不支持数据库端项目验证。它仅验证当您添加一个项目时,它应该具有您的键的属性(分区键、排序键等)并且它们具有正确的类型。除此之外,DynamoDB 不会验证任何内容。

    此外,由于 DynamoDB 是无模式的,并且不会对您的属性施加限制,因此它不会检查您的项目具有哪些属性(键是唯一的例外)。

    唯一的选择是在将项目保存到 DynamoDB 之前在服务器端验证它们。

    更新

    我们可以为 dynamoDB 表创建一个触发器 lambda

    DynamoDB 不支持在将项目添加到数据库之前执行的 Lambda 触发器。目前唯一支持的触发器是 DynamoDB 流,但它在一个项目存储在表中之后被称为异步调用,这意味着项目之间存在一个小的延迟添加并执行触发器。

    【讨论】:

    • 感谢@Ivan 的回复。
    • @Sudhanshu 你能投票并批准答案吗?
    • @Vinicius 由于 DynamoDB 在写入项目之前不支持数据库端项目验证,因此将在没有任何验证的情况下编写它。 Lambda 触发器(如果已配置)将仅在将项目写入表后执行。
    • @IvanMushketyk 现在我知道了......我只是说你应该在你的回答中解释这一点,因为 OP 明确询问了这一点。而“没有验证”和“只有插入后异步触发器”是不同的东西。
    【解决方案2】:

    最好在触发实际将数据插入/更新到 dynamoDB 的 lambda 表达式之前使用 API Gateway 验证您的模型。

    我已经实现了一个示例,可在 github 上公开:https://github.com/adrianosastre/DynamoDB-CDK-Hands-On

    该项目在文章中有更详细的解释:https://dev.to/adrianosastre/aws-serverless-and-the-dynamodb-single-table-design-hands-on-with-cdk-v2-38d0

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多