实际上,我想对 AWS DynamoDB 表项目实施验证,如果项目字段的规则中断,这应该会阻止记录插入/更新。
可能吗?
或者我们可以为 dynamoDB 表创建一个触发器 lambda,该触发器在插入/更新之前触发。这样我们就可以检查验证规则并进行处理。
实际上,我想对 AWS DynamoDB 表项目实施验证,如果项目字段的规则中断,这应该会阻止记录插入/更新。
可能吗?
或者我们可以为 dynamoDB 表创建一个触发器 lambda,该触发器在插入/更新之前触发。这样我们就可以检查验证规则并进行处理。
DynamoDB 不支持数据库端项目验证。它仅验证当您添加一个项目时,它应该具有您的键(分区键、排序键等)的属性并且它们具有正确的类型。除此之外,DynamoDB 不验证任何内容。
此外,由于 DynamoDB 是无模式的,并且不会对您的属性施加限制,因此它不会检查您的项目具有哪些属性(键是唯一的例外)。
唯一的选择是在将项目保存到 DynamoDB 之前在服务器端验证它们。
更新
我们可以为 dynamoDB 表创建触发器 lambda
DynamoDB 不支持在将项目添加到数据库之前执行的 Lambda 触发器。目前唯一支持的触发器是 DynamoDB 流,但它是在将项目存储到表中之后调用的,并且是异步调用的,这意味着在添加项目和执行触发器之间有一个小的延迟。
在触发实际将数据插入/更新到 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