You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过API写入AWS DynamoDB遇阻:Lambda无法读取URL参数

解决Lambda接收API Gateway参数写入DynamoDB的问题

看起来你已经离解决问题很近了!从你打印的event内容来看,问题核心出在参数的读取路径上——你的API Gateway没有使用Lambda Proxy集成,所以请求的查询参数并没有被包装在queryStringParameters里,而是直接挂载在event的根节点上。

问题分析

你之前的代码尝试读取event.queryStringParameters["tempid"],但实际event的结构是{"tempid": "hottub1"},自然会抛出Cannot read property 'tempid' of undefined的错误,因为queryStringParameters这个属性根本不存在。

解决方案

直接修改参数的读取方式,同时补充温度字段的写入逻辑(毕竟你最终要存储温度数据),还要增加参数校验避免后续报错:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = (event, context, callback) => {
  // 先校验必要参数是否存在
  const tempid = event.tempid;
  const temperature = event.temperature; // 假设树莓派会传递这个温度参数

  if (!tempid || !temperature) {
    callback(null, {
      statusCode: '400',
      body: JSON.stringify({ error: '缺少必要参数:tempid 或 temperature' })
    });
    return;
  }

  dynamodb.putItem({
    TableName: "temperature",
    Item: {
      "tempid": { S: tempid },
      "temperature": { N: temperature.toString() }, // 温度是数字类型,需用N标识并转为字符串
      "timestamp": { S: new Date().toISOString() } // 可选:添加时间戳记录数据上报时间
    }
  }, function(err, data) {
    if (err) {
      console.error('写入DynamoDB失败:', err);
      callback(null, {
        statusCode: '500',
        body: JSON.stringify({ error: '数据写入失败', details: err.message })
      });
    } else {
      callback(null, {
        statusCode: '200',
        body: JSON.stringify({ 
          message: `成功接收来自${tempid}的温度数据`,
          temperature: temperature
        })
      });
    }
  });
};

额外说明

  1. 关于API Gateway参数映射:如果后续你想切换成Lambda Proxy集成(这种方式更灵活,能获取完整的请求头、路径等信息),可以在API Gateway的集成设置里开启"Use Lambda Proxy integration",此时参数就会出现在event.queryStringParameters里,你的最初代码调整后就能使用。但目前你的配置是非Proxy集成,直接读取event根节点的参数即可。
  2. DynamoDB数据类型:DynamoDB是强类型数据库,数字类型需要用{ N: 值的字符串形式 },不能直接传数字,所以代码里用了temperature.toString()做转换。
  3. 参数校验:增加参数校验能提前拦截无效请求,避免不必要的DynamoDB调用,也能给树莓派更清晰的错误反馈。

内容的提问来源于stack exchange,提问作者AdamCodes716

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:12:45