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

求助:IoT Dash Button触发的Lambda函数查询DynamoDB失败问题

问题排查与解决方案

咱们一步步梳理你代码里的问题,再说说日志的去向:

代码里的几个关键错误

  • Python版本语法问题:你用了Python2的print 'xxx'写法,但AWS Lambda现在默认运行Python3环境,必须改成带括号的print('xxx'),否则会直接报错。
  • 缺少DynamoDB表初始化:代码里直接调用table.query(),但根本没定义table对象!需要先通过boto3获取DynamoDB资源并指定你的表名。
  • KeyConditionExpression变量引用错误:你把变量Device_ID_var用单引号括起来了,这会让DynamoDB去查询Device_ID等于字符串"Device_ID_var"的条目,而不是你实际拿到的serialNumber值,得去掉引号。
  • 缺少Key导入:使用Key()条件表达式之前,得先从boto3的dynamodb conditions模块导入它,否则会报名称未定义错误。

修正后的完整代码

import boto3
from boto3.dynamodb.conditions import Key

def lambda_handler(event, context):
    print('Init 1Push_Care_DATAprint')
    # 获取按钮的serialNumber
    Device_ID_var = event['serialNumber']
    print(event)
    
    # 初始化DynamoDB表对象,记得替换成你的实际表名
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('你的DynamoDB表名')
    
    # 正确查询对应的条目
    response = table.query(
        KeyConditionExpression=Key('Device_ID').eq(Device_ID_var)
    )
    
    items = response['Items']
    print(items)

关于打印信息的输出位置

你用print()输出的所有内容,都会被AWS Lambda记录到CloudWatch Logs里:

  • 你可以直接在Lambda控制台打开你的函数,切换到「监控」标签页,点击「查看日志在CloudWatch」就能找到对应的日志组;
  • 也可以直接登录CloudWatch控制台,找到对应Lambda函数的日志组(格式一般是/aws/lambda/你的函数名),里面的日志流就包含所有print的内容和函数运行的报错信息,非常适合排查问题。

内容的提问来源于stack exchange,提问作者Osiris.N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:57:38