lambda如何读写dynamedb数据

lambda如何读写dynamedb数据 参考文档https://dev.classmethod.jp/articles/how-to-put-get-items-from-dynamodb-table-using-aws-lambda-boto3/大家好我是来自 XXX 业务总部的 XXX。今天我们将学习如何使用 AWS Lambda 对 DynamoDB 表执行写入Put/ 读取Get数据项操作。一、在 Amazon DynamoDB 中创建表首先在 DynamoDB 中创建表需指定表名和分区键。进入 Amazon DynamoDB 控制台点击创建表。输入表名与分区键点击创建表。表创建说明DynamoDB 是无模式数据库创建时仅需表名与主键。表名用于标识表3–255 字符支持字母、数字、下划线、连字符、点号。分区键表主键的一部分哈希值用于检索数据项与跨节点分配数据保障扩展性与可用性。排序键可选作为主键第二部分可对相同分区键的数据项排序 / 检索。默认表配置表格设置项取值创建后是否可编辑容量模式预置容量是读取容量5 读取容量单位RCU是写入容量5 写入容量单位WCU是自动扩缩容开启是本地二级索引无否全局二级索引无是表创建成功后控制台会显示新表。二、创建 IAM 角色为让 Lambda 函数访问 DynamoDB需创建具备 DynamoDB读、写、更新权限的 IAM 策略并将该角色附加到 Lambda 函数。进入 IAM 控制台 → 策略 →创建策略。选择JSON粘贴以下策略点击下一步标签。json{ Version: 2012-10-17, Statement: [ { Action: [ dynamodb:GetItem, dynamodb:PutItem, dynamodb:UpdateItem, dynamodb:DescribeTable ], Effect: Allow, Resource: * } ] }输入策略名如access_dynamodb_from_lambda点击创建策略。进入角色→创建角色。可信实体类型选AWS 服务使用场景选Lambda下一步。权限添加AWSLambdaBasicExecutionRole刚创建的access_dynamodb_from_lambda输入角色名完成创建。三、创建 AWS Lambda 函数进入 Lambda 控制台点击创建函数。填写基础信息绑定已创建的执行角色。点击创建函数。四、Lambda 写入 DynamoDB 数据项代码PutPUT 方法用于在 DynamoDB 表中创建数据项。python运行#参考文档源代码 import json import boto3 client boto3.client(dynamodb) def lambda_handler(event, context): PutItem client.put_item( TableNameCustomer, Item{ id: { S: 01 }, name: { S: XYZ } } ) response { statusCode: 200, body: json.dumps(PutItem) } return response/code #因为参考文档源代码只能一味的写入死数据这边做了一下修改仅供参考 import json import boto3 client boto3.client(dynamodb) def lambda_handler(event, context): body json.loads(event.get(body,{})) if isinstance(body,list): body body[0] id body.get(id) name body.get(name) PutItem client.put_item( TableNameCustomer, Item{ id: { S: id }, name: { S: name } } ) response { statusCode: 200, body: json.dumps(PutItem) } return responseS代表字符串类型N代表数字类型。Boto3 是 AWS Python SDK用于与 DynamoDB 等 AWS 服务交互。执行后DynamoDB 表中将新增一条id:01、name:XYZ的数据项。五、Lambda 读取 DynamoDB 数据项代码GetGET 方法按主键读取 DynamoDB 数据项。python运行import json import boto3 client boto3.client(dynamodb) def lambda_handler(event, context): GetItem client.get_item( TableNameCustomer, Key{ id: {S: 01} } ) response { statusCode: 200, body: json.dumps(GetItem) } return response #同写入同理 import json import boto3 client boto3.client(dynamodb) def lambda_handler(event, context): # 1. 从传入的事件中动态获取 id支持 API Gateway / 测试事件 request_body json.loads(event.get(body, {})) customer_id request_body.get(id, ) if not customer_id: return { statusCode: 400, body: json.dumps({error: 请传入 id 参数}) } # 2. 动态查询 DynamoDB GetItem client.get_item( TableNameCustomer, Key{ id: {S: customer_id} } ) # 3. 返回结果 response { statusCode: 200, body: json.dumps(GetItem) } return response执行结果示例json{ statusCode: 200, body: {\Item\: {\id\: {\S\: \01\}, \name\: {\S\: \XYZ\}}, ...} }六、总结Amazon DynamoDB 是全托管 NoSQL 数据库服务具备快速、稳定的性能与无缝扩展能力。本文讲解了创建 DynamoDB 表以及通过 AWS Lambda Boto3 与 DynamoDB 交互的核心方法。参考文档DynamoDB Table — Boto3 官方文档Dynamodb-Boto3 文档使用 Boto3 客户端操作 DynamoDB 表Python SDKBoto3DynamoDB 示例