AWS Lambda 测试不从 DynamoDB 表返回数据
Posted
技术标签:
【中文标题】AWS Lambda 测试不从 DynamoDB 表返回数据【英文标题】:AWS Lambda test does not return data from DynamoDB table 【发布时间】:2020-10-17 06:10:42 【问题描述】:我正在尝试从名为仪表板的 DynamoDB 表中获取数据,因此我正在使用表中的示例测试 Lambda 函数。
但我从测试中得到的只是:
Response:
"statusCode": 200,
"body": "\"Hello from Lambda!\""
它应该只根据 ID 从表中返回与其匹配的数据,因为这是我用来对表进行分区的数据。
仪表板示例数据也是我做的测试
"batteryLevel": 35,
"deviceId": "yxftd9pnitd-156xhref9g69a",
"eventId": "c07e3f9f-f6bb-4792-be6f-a9be95cdff38",
"id": 12345,
"location":
"accuracy": 35.369,
"latitude": 55.8256671,
"longitude": 37.5962931
,
"tags": [
"accelX": 0.012,
"accelY": -0.004,
"accelZ": 1.008,
"createDate": "2020-08-11T18:51:58+0300",
"dataFormat": 5,
"defaultBackground": 2,
"favorite": true,
"humidity": 32.8425,
"id": "E5:F1:98:34:C0:0F",
"measurementSequenceNumber": 62865,
"movementCounter": 21,
"name": "Kitchen",
"pressure": 98702,
"rssi": -43,
"temperature": 25.58,
"txPower": 4,
"updateAt": "2020-08-18T19:57:48+0300",
"voltage": 3.013
],
"time": "2020-08-18T19:57:48+0300"
Lambda 函数
"use strict";
const AWS = require("aws-sdk");
AWS.config.update( region: "ap-southeast-1" );
exports.handler = async (event, context) =>
const ddb = new AWS.DynamoDB( apiVersion: "2012-10-08" );
const documentClient = new AWS.DynamoDB.DocumentClient( region: "ap-southeast-1");
const params =
TableName: "dashboard",
Key:
id: 12345
;
try
const data = await documentClient.get(params);
console.log(data);
catch (err)
console.log(err);
;
【问题讨论】:
似乎您正在执行错误的函数或错误的版本。 我刚刚检查过,它使用的是最新版本。 您正在输出Hello from Lambda
。这不是来自您发布的功能。也许您没有部署该功能?
哇是的,这个固定不能相信我忘了部署它。
很高兴听到它奏效了。如果您不介意,我会提供答案以供将来参考。
【参考方案1】:
基于 cmets。
此问题是由于添加新代码后未部署功能引起的。随后,之前部署的版本(即“来自 Lambda 的 Hello”)正在执行。
解决方案是部署新功能。
【讨论】:
以上是关于AWS Lambda 测试不从 DynamoDB 表返回数据的主要内容,如果未能解决你的问题,请参考以下文章
Lambda 和 DynamoDB:无权执行:dynamodb:Scan
如何使用 AWS Lambda 按名称查询 dynamoDB 表
让 DynamoDB Stream Lambda 函数调用 AWS AppSync 突变
如何配置 AWS lambda 函数以对不同 aws 子账户中的 dynamodb 表执行 crud 操作?
无服务器框架 + AWS + Lambda + DynamoDB + GraphQL + Apollo Server = 无法使 POST 请求工作