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

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

先决条件:

拥有向S3上传对象的权限。拥有S3和DynamoDB权限的Lambda执行角色。

架构和组件:

本方案使用三个AWS服务:

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

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

工作流程:

用户通过控制台或CLI使用PutObject API将JSON文件上传到S3存储桶。文件上传成功后,触发S3事件,调用Lambda函数进行数据加载和处理。Lambda函数处理数据并将其加载到DynamoDB表中。

实施步骤:

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

1. 创建Lambda函数:

函数名称:parserdemo运行时:Python 3.1x (或其他支持的运行时)

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

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

以下Python代码实现数据处理逻辑:

import jsonimport boto3s3_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表:

表名称:DemoTable分区键:userid表设置:自定义容量模式:预配置

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

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

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

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

参考:

S3 APIDynamoDB APIBoto3 for AWS services

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

以上就是使用 Lambda 函数从 So DynamoDB 解析和加载数据的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 19:10:16
下一篇 2025年12月13日 19:10:23

相关推荐

  • 使用Python进行对称数据加密

    本教程将演示如何在Python中使用Fernet算法进行对称加密。这是一种简单易用的方法,适合初学者入门。 首先,需要安装cryptography库: pip install cryptography 接下来,我们编写一个简单的加密脚本: from cryptography.fernet impor…

    2025年12月13日
    000
  • 标题:软件开发人员的旅程:从初学者到专家

    导语: 在数字时代,精通软件开发的工程师需求日益增长。软件开发领域瞬息万变,需要持续学习和适应。无论您是初入职场的新手,还是经验丰富的工程师,了解软件开发的成长路径都能助您在这一快速发展的行业中不断精进。 成为问题解决专家: 随着经验的积累,您的重点应从单纯编写代码转向解决实际问题。软件开发不仅在于…

    2025年12月13日
    000
  • 使用 AWS Bedrock 部署 AI 交通拥堵预测器:完整概述

    本文将指导您如何使用 AWS Bedrock 部署一个 AI 交通拥堵预测器,实现实时交通状况预测。AWS Bedrock 提供全托管的基础模型服务,非常适合 AI 应用部署。我们将涵盖从环境准备到最终测试的完整流程。 先决条件: 一个具有相应权限的 AWS 账户 (建议使用免费套餐)。Python…

    2025年12月13日
    000
  • PyTorch 中的 mul

    请我喝杯咖啡☕ 本文介绍PyTorch中的mul()函数。mul()函数用于执行元素级别的乘法运算,它可以处理多个维度张量以及标量。 mul()函数的用法 mul()函数接受两个参数:input和other。 input:可以是PyTorch张量或标量(int、float、complex或bool类…

    2025年12月13日
    000
  • 需要修复的常见 Django ORM 错误

    Django ORM是Django框架的核心功能之一,它以Pythonic的方式操作数据库,避免了直接编写SQL的繁琐。然而,不当使用ORM可能会导致性能瓶颈。本文将分析常见的Django ORM错误,并提供优化策略,提升应用效率和可维护性。 1. N+1 查询问题 当获取一组记录后,又针对每条记录…

    2025年12月13日
    000
  • 使用 Jupyter 和 Kotlin 创建笔记本

    探索kotlin与jupyter notebook的交互式编程之旅 最近,我开始学习Kotlin,这门现代且功能强大的编程语言吸引了我的目光。然而,我习惯了Jupyter Notebook的交互式环境,它能快速迭代并流畅地探索代码。因此,我开始寻找Kotlin是否也有类似的工具。 令人惊喜的是,我发…

    2025年12月13日 好文分享
    000
  • 我旅程的开始

    **_Hello World._** 大家好!我是一个新手博主,开启了这段激动人心的写作之旅,希望能提升我的英语写作能力(英语并非我的母语)。 我的目标是分享一些有价值的内容,无论您是新手还是专家,都能有所收获。 欢迎大家提出建议和意见! 我是 5enox,熟悉 Python 以及网页抓取/自动化。…

    2025年12月13日
    000
  • 混淆“世界你好!” Python 上的混淆

    创建最奇怪的混淆程序,打印字符串“hello world!”。我决定写一篇解释它到底是如何工作的。所以,这是 python 2.7 中的条目: (lambda _, __, ___, ____, _____, ______, _______, ________: getattr( __import_…

    好文分享 2025年12月13日
    000
  • 在 PyTorch 中解压

    pytorch 中的 unsqueeze() 函数详解 本文将详细解释 PyTorch 中 unsqueeze() 函数的功能和用法。unsqueeze() 函数可以为张量添加一个维度,其大小为 1。这在处理神经网络中的数据时非常有用,例如将批大小为 1 的样本添加到批处理维度中。 unsqueez…

    2025年12月13日
    000
  • Python 中的进程管理:并行编程基础

    并行编程能够让程序在多个处理器或内核上同时执行多个任务,从而更有效地利用处理器资源,缩短处理时间,提升性能。 想象一下,一个复杂问题被分解成多个独立的子问题,每个子问题再细分成更小的任务,然后分配给不同的处理器并行处理,最终显著减少总处理时间。 Python 提供了多种工具和模块支持并行编程。 多进…

    2025年12月13日
    000
  • PyTorch 中的 linspace

    请我喝杯咖啡☕ 本篇博文将介绍 PyTorch 中的 linspace() 函数,它用于创建在起始值和结束值之间均匀分布的一维张量。 备忘录: 本系列博文已涵盖 arange() 和 logspace() 函数。 linspace() 函数可以生成包含零个或多个均匀间隔的整数、浮点数或复数元素的一维…

    2025年12月13日
    000
  • 使用 Discord 作为无限的云存储服务

    discloud:将您的discord服务器变为无限云存储 Discloud是一款本地运行的Discord机器人,能够将您的个人Discord服务器转化为无限容量的云存储空间。它以Python脚本的形式运行在您的电脑上(未来计划打包成.exe文件方便分发),并可上传您指定文件夹中的所有文件。 安装 …

    2025年12月13日 好文分享
    000
  • Python day-Dictionary,使用嵌套循环的字符频率

    Python字典:高效存储数据 字典({})是一种强大的数据结构,用于存储键值对。它是有序的、可变的,且键值不允许重复。 每个元素都通过唯一的键来访问,而不是索引。如果尝试访问字典中不存在的键,则会引发KeyError异常。 示例: thisdict = { “brand”: “Ford”, “mo…

    2025年12月13日
    000
  • Sngfetch – 用于 CLI 的 Shazam

    大家好!我叫 pyth0g,一个 python 编程新手(或者说是刚入门中级阶段的开发者)。 言归正传,我今天要介绍我的一个项目:Sngfetch。这是一个命令行 Python 应用(比 GUI 更高效),它能通过麦克风识别歌曲并显示歌曲的基本信息,信息虽然简单,但也挺有意思的。 以下是一些 Sng…

    2025年12月13日
    000
  • 让你的代码大放异彩的 Python 技巧! ✨

    编写整洁的Python代码是构建易于维护和扩展的应用程序的关键。Python强调可读性,因此,编写干净的代码至关重要。本文将分享19个技巧,帮助您编写更简洁、更高效、更易维护的Python代码,提升代码可读性。 1. 使用有意义的变量和函数名 变量名应清晰地反映其用途。避免使用单字符变量或含糊不清的…

    2025年12月13日
    000
  • Python 中的常见错误以及如何修复它们

    本文总结了Python编程中一些常见的错误,并提供了解决方案和经验教训,希望能帮助初学者避免这些陷阱。 1. 缩进错误 问题: Python对代码缩进非常敏感。混用制表符和空格会导致语法错误。 解决方案: 使用空格进行缩进(建议每级缩进4个空格),并启用代码编辑器的“显示空白字符”功能,以便及时发现…

    2025年12月13日
    000
  • 函数、变量和调试;重新开始我的 DS、AI 和 ML 之旅

    探索python编程的奇妙旅程:深入理解函数与全局变量 一直以来,构建优秀程序的挑战激发着我的热情。虽然我秉持着谦逊的学习态度,但此刻,我渴望将所学知识用于更广阔的应用,造福大众。 近日,我深入复习了Python的基础概念,并从中获得了重要的领悟: 更深层次的思考 我开始追问更深层次的问题,例如:“…

    2025年12月13日
    000
  • 使用 Django 和 HTMX 创建待办事项应用程序 – 添加新待办事项的部分

    在本教程的第三部分,我们实现了待办事项的添加和删除功能。接下来,我们将添加一个表单,用于创建新的待办事项,并利用 htmx 和后端路由处理 post 请求。 表单效果如下: 处理 POST 请求 创建新待办事项,通常有两种 POST 路由方法:使用单独的路由(例如 /tasks/create)或复用…

    2025年12月13日 好文分享
    000
  • 使用 Beautiful Soup 和 Scrapy 进行网页抓取:高效、负责任地提取数据

    在信息时代,网络数据至关重要。网页抓取技术成为获取在线信息的重要手段。本文将对比分析两个流行的Python网页抓取库:Beautiful Soup和Scrapy,提供代码示例并阐述负责任的抓取实践。 网页数据提取概述 网页数据提取是自动从网站获取数据的过程,广泛应用于数据分析、机器学习和市场调研等领…

    2025年12月13日
    000
  • CS-第 6 周

    Python 编程入门:简洁高效的代码 Python 作为一门易于学习和应用的编程语言,深受初学者和专业人士的喜爱。不同于 C 语言的编译型特性,Python 是一种解释型语言,代码无需单独编译即可在 Python 解释器中直接运行。 例如,经典的 “Hello, world!&#822…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信