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

AWS Lambda新手求助:代码触发CloudWatch语法错误排查

排查AWS Lambda中的Syntax Error问题

嘿,我来帮你搞定这个Lambda的语法错误问题!你的代码里有几个明确的问题导致了CloudWatch抛出的syntax error,咱们一个个捋清楚:

  • 变量名不符合Python语法规范:
    你代码里的1Push_Care_USERinfo是以数字开头的,Python要求变量名必须以字母或下划线开头,数字开头的变量名是直接触发语法错误的核心原因之一。你需要把它改成合法的名称,比如Push_Care_USERinfo或者_1Push_Care_USERinfo。

  • 缺少必要的DynamoDB工具类导入:
    你使用了Key()来构建查询条件,但没有从boto3的子模块中导入这个类,必须加上这行导入代码:

    from boto3.dynamodb.conditions import Key
    
  • 变量引用错误(多余的引号):
    在Key('Device_ID').eq('Device_ID_var')这行里,你给变量Device_ID_var加了引号,这会让Python把它当成字符串字面量,而不是你之前定义的变量。正确的写法应该是:

    Key('Device_ID').eq(Device_ID_var)
    
  • 不必要的导入语句:
    import print_function这行完全多余,Python的print是内置函数,不需要额外导入这个模块,直接删掉就行。

  • 未初始化DynamoDB表对象:
    你直接调用了1Push_Care_USERinfo.query(...),但这个变量并没有被赋值为DynamoDB的表实例。你需要先初始化boto3资源并获取对应的表,比如:

    dynamodb = boto3.resource('dynamodb')
    push_care_userinfo = dynamodb.Table('你的实际表名')
    

修正后的完整代码示例

import boto3
from boto3.dynamodb.conditions import Key

def lambda_handler(event, context):
    print ('Init 1Push_Care_DATAprint')
    Device_ID_var = event['serialNumber']
    print (event)
    
    # 初始化DynamoDB资源与目标表
    dynamodb = boto3.resource('dynamodb')
    push_care_userinfo = dynamodb.Table('你的实际表名')
    
    response = push_care_userinfo.query(KeyConditionExpression=Key('Device_ID').eq(Device_ID_var))
    items = response['Items']
    print(items)

内容的提问来源于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 07:33:50