如何在Lambda中调用DynamoDB.scan()?遇TypeError问题求助
解决AWS Lambda中
docClient.scan is not a function错误 问题出在你使用的是AWS SDK v3,它和旧版v2的API结构完全不同:
- v3中
DynamoDBClient本身不包含scan这类操作方法,所有数据库操作都需要通过单独的Command类来实现 - v3推荐使用
async/await替代回调函数,更符合现代JS写法
修正后的代码
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb"; const docClient = new DynamoDBClient({}); export const handler = async function(event) { try { const scanningParameters = { TableName: "Vocabulary" }; // 创建Scan命令并发送 const response = await docClient.send(new ScanCommand(scanningParameters)); // 返回扫描到的条目 return response.Items; } catch (err) { // 捕获并返回错误 return { errorType: err.name, errorMessage: err.message }; } };
关键修改点
- 额外导入
ScanCommand:这是v3中执行扫描操作的专用命令类 - 使用
docClient.send(new ScanCommand(params))替代原有的docClient.scan() - 利用
async/await处理异步操作,替代回调函数,代码更易读且符合Lambda的异步handler规范 - 移除了
callback参数:Lambda的async handler可以直接返回结果或抛出错误,无需手动调用callback
内容的提问来源于stack exchange,提问作者LOTUSMS
相关产品推荐
相关产品推荐

