总的来说,您的问题是如何在 DynamoDB 等空间中生成序列号(如 Oracle 序列)。我遇到了类似的挑战,下面是我发现使用 AWS 无服务器方法的更好方法...
1.在 DynamoDB 中设置序列号表
创建一个简单的表,例如具有分区键 (id) 和序列号属性 (sequence_number) 的 order-number-sequence。
{“id”: “100”,“sequence_number”: 250000}
我将 id 设置为字符串类型,值为“100”。这可以设置为分区键字段的数字或任何允许的类型。 sequence_number 是一个数字属性,将充当原子序数,在此示例中,我将 250000 设置为其初始值。
2。创建 API
使用 POST 方法创建一个非常小的 API,调用该方法时将返回上表中的下一个序列号。
使用 API Gateway 的 DynamoDB 内置集成。
配置 DynamoDB 与 API Gateway 的集成以及对 DynamoDB 执行 UpdateItem 操作需要设置
3.配置请求映射模板
为内容类型 application/json 创建一个新的映射模板。
这是此设置中最重要的部分。我们不需要为此编写任何复杂的脚本,因此希望它应该足够简单易懂。
此模板包含 UpdateItem 操作的参数和有效负载(为 DynamoDB 集成设置 API 时需要)
{ “TableName”: “order-sequence-number”,
“Key”: { “id”: { “S”: “100” } },
“ExpressionAttributeValues”: { “:val”: { “N”: “1” } }, “UpdateExpression”: “SET sequence_number = sequence_number + :val”, “ReturnValues”: “UPDATED_NEW”}
4.测试 API
我们只需要从 DynamoDB 的 UpdateItem 返回的响应中获取 sequence_number 及其值。
{“sequence_number”: “$input.path(‘$.Attributes.sequence_number.N’)”}
通过上述设置,如果我们现在测试 API,我们应该会看到如下响应:
{“sequence_number”: “250006”}
我希望上述方法对您有所帮助...