在AWS Lambda中,最佳的分页方法是使用“Key”参数,在每个请求中返回下一个批次的键。
以下是使用Node.js和AWS SDK来实现分页功能的示例代码:
const AWS = require('aws-sdk');
exports.handler = async (event) => {
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
const params = {
TableName: event.tableName,
KeyConditions: {
"PartitionKey": {
"AttributeValueList": [
{"S": "some value"}
],
"ComparisonOperator": "EQ"
}
},
Limit: event.pageSize,
ScanIndexForward: true
};
if (event.lastEvaluatedKey) {
params.ExclusiveStartKey = event.lastEvaluatedKey;
}
const data = await dynamodb.query(params).promise();
const result = {
items: data.Items,
lastEvaluatedKey: data.LastEvaluatedKey
};
return result;
};
在上面的代码中,我们使用AWS DynamoDB的query()方法来执行查询,并在请求中传递分页参数。我们使用“LastEvaluatedKey”来跟踪每个分页的下一个键,并将其作为响应返回。
在Lambda函数中,我们可以调用此代码来获取查询的下一批结果:
const result = await lambda.invoke({
FunctionName: 'myFunction',
Payload: JSON.stringify({
tableName: 'myTable',
pageSize: 10,
lastEvaluatedKey: lastEvaluatedKey
})
}).promise();
console.log(result);
请注意,此代码仅用于演示目的。在实际应用中,您可能需要更多的错误处理和安全性检查。