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

AWS CDK Python Workshop:DynamoDB写入ParamValidationError问题求助

问题解决:DynamoDB update_item 参数验证失败

错误原因分析

从CloudWatch日志的错误信息可以明确两个核心问题:

  1. 参数大小写不匹配:调用table.update_item()时使用了小写的key参数,但boto3严格遵循DynamoDB API规范,要求必须传入大写的Key参数。
  2. UpdateExpression语法错误:"ADD hits: incr"的写法不符合DynamoDB表达式规则,属性名与占位符之间必须用空格分隔,正确格式应为"ADD hits :incr"。

修正后的hitcount.py代码

import json
import os

import boto3

ddb = boto3.resource("dynamodb")
table = ddb.Table(os.environ["HITS_TABLE_NAME"])
_lambda = boto3.client("lambda")

def handler(event, context):
    print("request : {}".format(json.dumps(event)))
    table.update_item(
        Key = {"path": event["path"]},  # 修正为大写Key参数
        UpdateExpression = "ADD hits :incr",  # 修正表达式占位符的空格格式
        ExpressionAttributeValues = {":incr": 1}
    )
    
    resp = _lambda.invoke(
        FunctionName= os.environ["DOWNSTREAM_FUNCTION_NAME"],
        Payload = json.dumps(event),
    )
    
    body = resp["Payload"].read()
    print("Downstream Response: {}".format(body))
    return json.loads(body)

其他代码验证

你的hitcounter.py和cdk_workshop_stack.py代码逻辑、权限配置(table.grant_read_write_data和downstream.grant_invoke)均无问题,无需修改。

修正后重新部署CDK应用,即可正常向DynamoDB表创建条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:17:27