◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
本文介绍如何使用aws lambda函数将s3存储桶中的json数据加载到dynamodb表中。
先决条件:
架构和组件:
本方案使用三个AWS服务:
工作流程:
实施步骤:
以下步骤详细说明如何部署和配置上述架构:
1. 创建Lambda函数:
其他设置保持默认值。创建函数后,修改超时配置和执行角色,如下所示:
以下Python代码实现数据处理逻辑:
import json import boto3 s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): bucket_name = event['Records'][0]['s3']['bucket']['name'] object_key = event['Records'][0]['s3']['object']['key'] print(f"Bucket: {bucket_name}, Key: {object_key}") response = s3_client.get_object(Bucket=bucket_name, Key=object_key) json_data = response['Body'].read() string_formatted = json_data.decode('UTF-8') dict_format_data = json.loads(string_formatted) table = dynamodb.Table('DemoTable') if isinstance(dict_format_data, list): for record in dict_format_data: table.put_item(Item=record) elif isinstance(dict_format_data, dict): table.put_item(Item=dict_format_data) else: raise ValueError("Unsupported Format")
2. 创建S3存储桶:
桶名称:使用唯一名称。其他设置保持默认值。将创建的S3存储桶作为触发器添加到Lambda函数:
3. 创建DynamoDB表:
为了降低成本,将预配置容量单位设置为较低的读/写单位(例如1或2个单位)。
完成设置后,上传文件到S3进行测试。您可以在DynamoDB表中查看已创建的项目和上传的记录。 Lambda函数的CloudWatch日志和DynamoDB项目如下所示:
参考:
希望此指南对您有所帮助。如有任何疑问,请提出。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。