it编程 > 数据库 > Nosql

使用 Lambda 函数从 So DynamoDB 解析和加载数据

43人参与 2025-03-30 Nosql

本文介绍如何使用aws lambda函数将s3存储桶中的json数据加载到dynamodb表中。

先决条件:

  1. 拥有向s3上传对象的权限。
  2. 拥有s3和dynamodb权限的lambda执行角色。

架构和组件:

本方案使用三个aws服务:

  1. s3存储桶: 作为可扩展、安全、高性能的对象存储服务,用于存储数据。
  2. lambda函数: 无服务器计算服务,用于运行代码并处理数据,无需管理基础设施。支持多种编程语言,易于设置。
  3. dynamodb: 无服务器nosql数据库,用于存储lambda函数处理后的数据。

使用 lambda 函数从 so dynamodb 解析和加载数据

工作流程:

  1. 用户通过控制台或cli使用putobject api将json文件上传到s3存储桶。
  2. 文件上传成功后,触发s3事件,调用lambda函数进行数据加载和处理。
  3. lambda函数处理数据并将其加载到dynamodb表中。

实施步骤:

以下步骤详细说明如何部署和配置上述架构:

1. 创建lambda函数:

其他设置保持默认值。创建函数后,修改超时配置和执行角色,如下所示:

使用 lambda 函数从 so dynamodb 解析和加载数据使用 lambda 函数从 so dynamodb 解析和加载数据

以下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函数:

使用 lambda 函数从 so dynamodb 解析和加载数据使用 lambda 函数从 so dynamodb 解析和加载数据

3. 创建dynamodb表:

为了降低成本,将预配置容量单位设置为较低的读/写单位(例如1或2个单位)。

使用 lambda 函数从 so dynamodb 解析和加载数据使用 lambda 函数从 so dynamodb 解析和加载数据

完成设置后,上传文件到s3进行测试。您可以在dynamodb表中查看已创建的项目和上传的记录。 lambda函数的cloudwatch日志和dynamodb项目如下所示:

使用 lambda 函数从 so dynamodb 解析和加载数据使用 lambda 函数从 so dynamodb 解析和加载数据

参考:

希望此指南对您有所帮助。如有任何疑问,请提出。

以上就是使用 lambda 函数从 so dynamodb 解析和加载数据的详细内容,更多请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

了解数据库管理系统软件的类型及特点(探索不同类型数据库管理系统软件的优势与应用领域)

03-30

mysql 能存储 json 吗

03-30

XAMPP 的终极替代品

03-30

mysql 能生成 uuid 吗

03-30

我如何构建我的第一个 MERN 项目:挑战、解决方案和经验教训

03-30

js数据库如何处理大量数据

03-30

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论