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

AWS Lambda调用DynamoDB Update_Item时的语法及参数验证错误排查

问题解决步骤

1. 修复语法错误

你的代码中Key参数的字典未闭合,缺失了一个},导致后续代码语法解析失败。
原错误代码片段:

Key={'id': {'S': body["id"]},

修正后:

Key={'id': {'S': body["id"]}},

这个缺失的闭合括号是触发第一个Runtime.UserCodeSyntaxError的直接原因。

2. 修复参数类型错误

使用AWS SDK的低级客户端(boto3.client('dynamodb'))时,所有属性值必须显式指定DynamoDB数据类型,不能直接传入原始Python类型。你的ExpressionAttributeValues中:g的值是字符串"yes",不符合要求,需改为类型字典格式:

ExpressionAttributeValues={
    ':g': {'S': "yes"}
},

这里{'S': "yes"}表示该值为DynamoDB字符串类型(S是字符串类型标识)。若使用高级资源客户端(boto3.resource('dynamodb'))则可直接传入原始类型,但当前使用的低级客户端必须遵循此规则。

修正后的完整代码

update = client.update_item(
    TableName='sample',
    Key={'id': {'S': body["id"]}},
    UpdateExpression="set cancelled = :g",
    ConditionExpression='attribute_exists(id)',
    ExpressionAttributeValues={
        ':g': {'S': "yes"}
    },
    ReturnValues="UPDATED_NEW"
)

额外注意

  • 你提到put_item可正常运行,说明IAM权限与服务连接无问题,仅需修正代码语法和参数格式。
  • 检查UpdateExpression中的字段名cancelled与DynamoDB表实际字段名是否一致,避免后续出现属性不存在的错误。

内容的提问来源于stack exchange,提问作者A. Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:39:14