如何使用Python和AWS Lambda在DynamoDB中存储数组列表数据
使用Python + AWS Lambda 将数组列表存储到DynamoDB(字段内JSON格式)
下面是具体的实现方案,分两种常见场景供你选择:
一、准备工作
- 给Lambda的执行角色添加DynamoDB写入权限:生产环境建议创建自定义IAM策略,仅允许对目标表执行
PutItem操作;测试阶段可临时附加AmazonDynamoDBFullAccess权限 - Lambda运行环境默认自带
boto3库,无需额外打包部署
二、场景1:直接存储DynamoDB原生复杂类型
DynamoDB支持直接存储列表(List)和映射(Map)类型,无需手动转JSON,后续查询时可直接解析结构。
示例代码
import boto3 # 初始化DynamoDB资源(比client更简洁,自动推断数据类型) dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('YourTableName') def lambda_handler(event, context): # 待存储的目标数据 data = { "Items1": ["AAA", "BBB"], "Items2": ["CCC", "DDD"] } try: table.put_item( Item={ # 必须指定表的主键,这里用id作为分区键示例 'id': 'unique_record_001', 'Data': data } ) return { 'statusCode': 200, 'body': '数据存储成功' } except Exception as e: return { 'statusCode': 500, 'body': f'存储失败:{str(e)}' }
关键说明
- 用
boto3.resource无需手动指定数据类型标识(比如S代表字符串、L代表列表),会自动映射DynamoDB原生类型 - 存储后在DynamoDB控制台可直接查看
Data字段的嵌套结构,查询时能直接提取数组元素
三、场景2:将数组转成JSON字符串存储
如果需要把Data字段统一存为JSON格式的字符串,可通过json.dumps()转换后存储。
示例代码
import boto3 import json dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('YourTableName') def lambda_handler(event, context): data = { "Items1": ["AAA", "BBB"], "Items2": ["CCC", "DDD"] } # 将嵌套数据转为JSON字符串 data_json_str = json.dumps(data) try: table.put_item( Item={ 'id': 'unique_record_002', 'Data': data_json_str } ) return { 'statusCode': 200, 'body': 'JSON格式数据存储成功' } except Exception as e: return { 'statusCode': 500, 'body': f'存储失败:{str(e)}' }
关键说明
- 存储后
Data字段为字符串类型,后续查询需用json.loads()转回字典才能操作数组元素 - 适合需要统一字段格式、或与其他系统交互的场景
四、测试验证
- 在Lambda控制台创建函数,粘贴代码并替换
YourTableName为你的DynamoDB表名 - 配置测试事件(可填空JSON,代码内数据为硬编码;也可修改代码从
event中读取传入数据) - 执行测试后,前往DynamoDB控制台查看目标表,确认数据已存储
注意事项
- 生产环境严格控制IAM权限,避免过度授权
- 单条DynamoDB项目最大支持400KB,存储大数组时需注意大小限制
- 如果数据来自外部触发(如API Gateway),需先解析
event中的JSON数据,例如data = event['Data']
内容的提问来源于stack exchange,提问作者Sujitha G
相关产品推荐
相关产品推荐

