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

如何用Python Lambda迭代解析JSON并将数据保存到DynamoDB?

AWS Lambda 写入DynamoDB 代码优化方案(灵活处理JSON属性)

原代码硬编码了要写入DynamoDB的字段,每次增删JSON属性都要修改代码,下面是针对这个问题的优化方案,核心是动态迭代处理所有JSON字段,同时修复冗余代码、增加错误处理:

优化后完整代码

import json
import boto3
from botocore.exceptions import ClientError

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('table1')

def lambda_handler(event, context):
    try:
        # 直接获取解析后的请求体(如果是API Gateway原始事件,可改为json.loads(event.get('body', '{}')))
        request_body = event.get('body-json', {})
        
        # 初始化Item,加入固定字段webhook_ID
        item = {
            'webhook_ID': context.aws_request_id
        }
        
        # 动态合并请求体中的所有字段,实现迭代式写入
        item.update(request_body)
        
        # 写入DynamoDB
        table.put_item(Item=item)
        
        return {
            'statusCode': 200,
            'body': json.dumps('数据已接收并存储'),
            'requestID': context.aws_request_id
        }
    except ClientError as e:
        # 捕获DynamoDB操作异常,返回错误信息
        return {
            'statusCode': 500,
            'body': json.dumps(f'存储失败: {e.response["Error"]["Message"]}'),
            'requestID': context.aws_request_id
        }
    except KeyError as e:
        # 可选:捕获请求体缺失关键字段的情况(若需保留必要字段校验可启用)
        return {
            'statusCode': 400,
            'body': json.dumps(f'请求参数缺失: {str(e)}'),
            'requestID': context.aws_request_id
        }

关键优化点说明

  • 移除冗余JSON操作:原代码中json.dumps(event)再json.loads(readJson)完全多余,Lambda接收的event本身就是Python字典,直接访问即可。如果是API Gateway原始事件(body为字符串),可调整为request_body = json.loads(event.get('body', '{}'))。
  • 动态迭代处理字段:用字典update()方法,一次性将请求体中所有键值对合并到Item中,后续增删JSON属性无需修改代码,实现完全灵活扩展。
  • 补充错误处理:添加ClientError捕获DynamoDB写入异常(如权限不足、表不存在等),可选添加KeyError校验必要字段,避免Lambda静默失败,同时返回清晰的错误反馈。
  • 规范响应格式:将原代码的status改为标准statusCode,符合API Gateway响应格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:45:44