首页
学习
活动
专区
圈层
工具
发布

使用API Gateway将数据从DynamoDb表获取到HTML表

使用API Gateway将DynamoDB数据展示到HTML表格

基础概念

1. DynamoDB

Amazon DynamoDB是一个完全托管的NoSQL数据库服务,提供快速、可预测的性能和无缝扩展性。

2. API Gateway

API Gateway是一种完全托管的服务,可以轻松创建、发布、维护、监控和保护任何规模的API。

实现方案

架构流程

  1. 前端HTML页面发起请求
  2. API Gateway接收请求
  3. 触发Lambda函数
  4. Lambda查询DynamoDB
  5. 返回数据给API Gateway
  6. API Gateway将数据返回给前端
  7. 前端JavaScript将数据渲染到HTML表格

详细实现步骤

1. 创建DynamoDB表

首先确保你有一个DynamoDB表,例如名为"Products"的表,包含id、name、price等字段。

2. 创建Lambda函数

创建一个Lambda函数来查询DynamoDB数据:

代码语言:txt
复制
// Node.js Lambda函数代码
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event) => {
    const params = {
        TableName: 'Products',
        Limit: 100 // 限制返回记录数
    };
    
    try {
        const data = await dynamoDb.scan(params).promise();
        return {
            statusCode: 200,
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Credentials': true,
            },
            body: JSON.stringify(data.Items),
        };
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({ error: 'Could not fetch items' }),
        };
    }
};

3. 设置API Gateway

  1. 创建新的REST API
  2. 创建GET方法
  3. 将方法集成到上面创建的Lambda函数
  4. 部署API到某个阶段(如"prod")
  5. 记下调用URL(如https://your-api-id.execute-api.region.amazonaws.com/prod

4. 前端HTML代码

创建一个HTML页面来显示数据:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>DynamoDB Data Table</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
        tr:nth-child(even) {
            background-color: #f9f9f9;
        }
    </style>
</head>
<body>
    <h1>Product Data from DynamoDB</h1>
    <table id="data-table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Price</th>
                <th>Category</th>
            </tr>
        </thead>
        <tbody id="table-body">
            <!-- 数据将通过JavaScript动态填充 -->
        </tbody>
    </table>

    <script>
        // 替换为你的API Gateway端点
        const apiUrl = 'https://your-api-id.execute-api.region.amazonaws.com/prod';
        
        // 获取数据并填充表格
        fetch(apiUrl)
            .then(response => response.json())
            .then(data => {
                const tableBody = document.getElementById('table-body');
                
                data.forEach(item => {
                    const row = document.createElement('tr');
                    
                    const idCell = document.createElement('td');
                    idCell.textContent = item.id || '';
                    row.appendChild(idCell);
                    
                    const nameCell = document.createElement('td');
                    nameCell.textContent = item.name || '';
                    row.appendChild(nameCell);
                    
                    const priceCell = document.createElement('td');
                    priceCell.textContent = item.price ? '$' + item.price : '';
                    row.appendChild(priceCell);
                    
                    const categoryCell = document.createElement('td');
                    categoryCell.textContent = item.category || '';
                    row.appendChild(categoryCell);
                    
                    tableBody.appendChild(row);
                });
            })
            .catch(error => {
                console.error('Error fetching data:', error);
                document.getElementById('table-body').innerHTML = 
                    '<tr><td colspan="4">Error loading data. Please try again later.</td></tr>';
            });
    </script>
</body>
</html>

优势

  1. 无服务器架构:无需管理基础设施
  2. 自动扩展:API Gateway和Lambda可根据流量自动扩展
  3. 安全性:可以通过IAM角色和策略控制访问
  4. 低成本:按实际使用量付费
  5. 快速开发:快速构建和部署API

常见问题及解决方案

1. CORS问题

现象:前端请求时出现跨域错误 解决:确保API Gateway的响应中包含正确的CORS头,如示例Lambda代码所示

2. 数据量过大

现象:返回数据太多导致性能问题 解决

  • 在Lambda中使用分页查询
  • 在前端实现分页或无限滚动
  • 在DynamoDB查询中使用Limit参数

3. 权限问题

现象:Lambda无法访问DynamoDB 解决:确保Lambda执行角色有访问DynamoDB表的权限

4. API Gateway超时

现象:请求超时 解决

  • 优化Lambda函数执行时间
  • 增加API Gateway超时设置(最大29秒)
  • 考虑使用WebSocket API进行大数据传输

应用场景

  1. 电子商务网站显示产品目录
  2. 内容管理系统展示文章列表
  3. 数据分析仪表板
  4. 实时监控系统
  5. 用户管理系统

性能优化建议

  1. 在DynamoDB中创建适当的索引以加速查询
  2. 使用API Gateway缓存减少对后端的请求
  3. 考虑使用GraphQL API进行更灵活的数据查询
  4. 对于频繁访问的数据,可以添加CDN缓存
  5. 使用WebSocket实现实时数据更新
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Certification Vending Machine: 智能设备接入 AWS IoT 平台解决方案

使用了 AWS 高性能的 NoSQL 数据库 DynamoDB 做为后台用户数据库。...该数据库用来保存智能设备出厂时注册的设备 ID、密钥和 IoT 平台证书等信息 CVM 系统通过查询 DynamoDB 数据中的关联关系,将 IoT Thing Name,Certificate Policy...具体如下: IoT 终端设备升级时请求接入 IoT 平台,发送相应 API 请求到 API Gateway 申请 IoT 证书 AWS API Gateway 调用申请证书的 Lambda 向 IoT...) Lambda 进行证书的策略的绑定及 DynamoDB 关联关系表的更新 最终 CVM 将证书返回给 IoT 终端设备 使用 EC2 替代 API Gateway 与 Lambda 的解决方案,其工作流程与搭建...,根据产品序列号,为当前证书附加对应的 Thing Name(产品属性) 以及 Policy(权限) 更新当前设备的所有关联信息到 DynamoDB 的关联关系表中 CVM 将证书返回给 IoT 终端设备

2.3K20

用AWS部署一个无服务架构的个人网站

整个网站将使用以下的AWS服务: Lambda + API Gateway + S3,用于跑API服务器; DynamoDB,数据存储; S3,静态网站; Cloudfront,分布式CDN,用作静态网站和...其他区域应该也可以,但如果你要像我一样使用CloudFront(wwwbeigefushicom)的话,其他区域可能会有一些麻烦。 在DynamoDB中创建表 我们的后台API要实现一个计数器。...为了保存计数器的数值,我们需要使用DynamoDB。DynamoDB是AWS提供的一个键值数据库。首先我们需要在DynamoDB中建一个表,并设置好我们需要的计数器初始值。...创建API服务 接下来我们要建立API服务。(wwwbeigefushicom) 这个API将提供一个计数器API,每次调用都会将计数器的值加一。计数器值保存在DynamoDB中。...桶可以用作静态网站使用; 要想使用HTTPS,可以通过AWS ACM申请证书; API Gateway和CloudFront都支持自定义域名。

4.3K40
  • FaaS 的简单实践

    , Gateway API :REST 访问数据 ?...总体数据流是以下方式工作的: 设备向 AWS IoT 发送小量数据(每5秒) , 物联网将数据存储到 DynamoDB 表中* Lambda函数每分钟和每小时被触发去做数据分析并将结果存储回 DynamoDB..., API Gateway 通过 REST API 将 DynamoDB 的数据公开 静态 HTML 网站托管在 S3上,并使用 RESTAPI 来显示实时数据图表和分析 第二点乍看起来可能有点傻,因为可能会认为...可以考虑使用 Firehose 作为从物联网到 S3/reshift 和 EMR 集群的传输流来进行数据处理,但对于这个简单实践而言,这里只是一个临时的做法。...「本文编译自: http://www.devx.com/enterprise/creating-a-serverless-api-using-api-gateway-and-lambda.html https

    4.1K20

    具有EC2自动训练的无服务器TensorFlow工作流程

    对于数据存储,我们将在DynamoDB中创建两个表: data —将保留带标签的输入数据进行训练 model —存储训练工作中的元数据和指标 环境设定 初始化 由于项目将与Node Lambda文件和Python...IAM_ROLE将需要创建EC2实例策略,并且API_URL两者都将使用它test.js并向infer.js的API Gateway端点进行调用。...Lambda:upload.js 该upload函数将新标记数据的数组作为输入,并将其存储在DynamoDB表中。然后,此更新将启动流触发器以启动该train功能。...希望将关键字段作为环境参数传递给Docker容器,但是为了便于测试,将提供这些值。接下来,创建代表两个DynamoDB表的变量。 对于输入数据,将对DynamoDB数据表执行扫描。...还将维护“最新”文件夹,以定义客户端应使用哪种模型进行预测。最后,每个模型拟合的结果将存储model在DynamoDB 中的表中。

    13.8K10

    Amazon DynamoDB 工作原理、API和数据类型介绍

    本节主要介绍DynamoDB 基本概念、核心组件、数据结构、API DynamoDB 基本概念 DynamoDB 是 AWS 独有的完全托管的 NoSQL Database。...DynamoDB 核心组件 基本 DynamoDB 组件包括:表、项目、属性 表 - 类似于其他数据库系统,DynamoDB将数据存储在表中。表是数据的集合。...Note 如果数字精度十分重要,则应使用从数字类型转换的字符串将数字传递给 DynamoDB。..."U3Vubnk=", "UmFpbnk=", "U25vd3k="] DynamoDB API DynamoDB 的api操作主要用于控制层面、数据层面和DynamoDB Streams。...某些数据层面操作还可让我们可以从secondary index中读取数据。 创建数据 PutItem - 将单个项目写入到表中。您必须指定主键属性,但不必指定其他属性。

    7K30

    【云原生】在 React Native 中使用 AWS Textract 实现文本提取

    Amazon Textract 是 Amazon 推出的一项机器学习服务,可将扫描文档、PDF 和图像中的文本、手写文字提取到文本文档中,然后可以将其存储在任何类型的存储服务中,例如 DynamoDB、...今天我将介绍从 React Native 移动应用程序中捕获或选择图像并将这些图像上传到 S3 的过程,然后一旦我们使用 API Gateway 触发 lambda 函数,就会从这些图像中提取数据,然后在处理完数据后我们...会将这些数据作为 DynamoDB 记录插入。...后端 在本节中,我们将处理从将用 nodejs 编写的图像中提取数据。首先安装如下依赖: aws-sdk,它使你能够轻松地使用 Amazon Web Services。...analyzeTextResult 中的结果将包含一个对象数组,其中包含在文档中检测到的文本,但是从该对象中提取我们需要的实际数据将非常耗时。

    1K10

    Nodejs课堂笔记-第四课 Dynamodb为何物

    通过DynamoDB Local,开发人员可以在本地使用DynamoDB API脱离真实的DynamoDB Web服务来开发应用。但可以获取到几乎和使用真实DynamoDB Web服务相同的效果。...开发人员可以在本地任意的创建表,修改数据。这些变化都会被DynamoDB Local记录并跟踪起来。...-inMemory DynamoDB Local可以将数据保存到本地,也可以将数据保存到内存中。上面的-dbpath就是保存到本地,这里就是保存到内存。至于区别嘛,就是一个可以持久化,一个没法持久化。...-optimizeDbBeforeStartup 如果启用了此项参数,就可以在DynamoDB Local启动时首选初始化底层数据库。背后的事情,就是将持久化的数据加载到服务中。...在使用DynamoDB数据流时也有区别:DynamoDB Web Service所创建的分片会受到表分区的影响。而在Local模式中,不存在表分区。

    3.2K50

    基于JWT的多租户RAG技术实现解析

    当使用LLM实现AI功能时,RAG技术能利用各租户特定数据提供个性化服务。...然而,从安全角度考虑,多租户环境下的数据隔离成为关键挑战。...,整体流程如下:租户用户在Amazon Cognito用户池中创建,登录时通过Lambda触发器将租户ID注入JWT用户查询通过API Gateway传递至Lambda,附带JWT令牌查询文本通过某中心的文本嵌入模型向量化从...DynamoDB获取目标OpenSearch域和索引信息在OpenSearch执行向量搜索,将结果作为上下文输入LLM生成响应关键实现包含三个数据隔离模式:域级隔离:每个租户使用独立OpenSearch...生成与验证:通过Cognito用户池预生成令牌Lambda触发器,将DynamoDB存储的租户信息注入JWT请求路由:解析JWT获取租户ID,查询DynamoDB路由表确定目标OpenSearch端点FGAC

    11600

    从MySQL到AWS DynamoDB数据库的迁移实践

    经过前期大量的调研,我们决定将 MySQL 中的部分表迁移到 AWS Dynamodb 中。本文主要介绍从关系型数据库平顺迁移到非关系型数据库的实践经验。...3 DynamoDB 技术特性 AWS DynamoDB 是一种完全托管的无服务器(Serverless)类型的 NoSQL 数据库,可以通过 HTTP API 来使用。...在迁移每张表的过程中,首先我们将原来在 MySQL 中需要迁移的相关表的 SQL 语句都整理了出来,利用之前所设计的主键以及附加索引将这些 SQL 语句对应到 DynamoDB 中各个 API。...在这个阶段中,我们将所有写入 MySQL 的数据同步到 DynamoDB 中。 接下来,我们将流量逐渐从 MySQL 中切换到 DynamoDB 中。...DynamoDB 的事务问题 起初我们使用 DynamoDB 官方提供的 TransactWriteItems API 来处理多张表同时更新的事务问题,示例代码如下图所示。

    9.1K30

    NoSQL和数据可扩展性

    NoSQL NoSQL描述了具有内置复制支持的水平可扩展的非关系数据库。 应用程序通过简单的API与数据库进行交互,数据作为大文件或数据块存储在无架构的存储库中。...加载数据 现在执行加载数据脚本,如下所示:node MoviesLoadData.js 这需要5-10秒加载,并将5000个电影加载到存储在内存中的新数据库中。 现在我们将再次从亚马逊教程中变化。...GettingStarted.NodeJs.html 将您的应用程序移动到已托管的DynamoDB上的AWS上 现在,我们将重新配置应用程序以使用在线DynamoDB服务而不是内存中的服务。.../shared/aws-config.js重新配置您的Web应用程序 将URL从localhost:3000更改为https://dynamodb.eu-west-1.amazonaws.com. https...注意:您可能需要使用us-west-2或其他区域标题而不是eu-west-1 现在因为我们使用不同的DynamoDB实例,我们需要重新创建表并加载项。

    13.3K60

    【云原生】给我 10 分钟,带你上手一个 AWS serverless web server

    在本文中,我将向你展示如何在几分钟内启动并运行 AWS Lambda、Amazon API Gateway 和 AWS Amplify。...应用程序架构如下图所示: 该应用程序架构采用了 AWS Lambda、Amazon API Gateway、Amazon DynamoDB、Amazon Cognito 和 AWS Amplify...浏览器中执行的 JavaScript 可发送数据,也可从使用 Lambda 和 API Gateway 构建的公共后端 API 接收数据。...Amazon Cognito 可以提供用户管理和身份验证功能,以便保护后端 API。 最后,DynamoDB 可以提供一个持久层,而数据可以通过 API 的 Lambda 函数存储在该层中。...,"items":["hello","world"]}% 要部署 API 和功能,我们可以运行 push 命令: $ amplify push 现在,你可以从任何 JS 客户端开始与 API 交互: /

    74310

    借助Amazon S3实现异步操作状态轮询的Serverless解决方法

    Serverless 异步 API 在 AWS 平台上,异步 API 的典型的 serverless 实现会涉及到 Amazon API Gateway、一些 lambda 函数、一个 SQS 队列以及我们本例中所用到的...NoSQL 键 - 值数据库:DynamoDB。...我们可以使用 S3 将异步操作的状态存储为一个 JSON 文件,API 的客户端会调用该服务,而不是轮询我们的 API。...如果你无法实现通知策略,并且客户端需要轮询来获取操作结果的话,那么 S3 可以是一个很好的候选方案,它能够将轮询的调用从主 API 中迁移出来。...Cristian 从 C# 和 Java EE 开始其职业生涯,现在专注于将当前的解决方案迁移到 AWS 平台上。最近,他开始热衷于 serverless 的解决方案。

    4.1K20

    我们是否应该在物联网上使用无服务器体系结构?

    lot.jpeg 我们概念项目的总体数据流程如下: 设备正在向AWS IoT发送少量数据(每次5秒)。 AWS IoT将数据存储到DynamoDB表中。...每分钟和每小时都会触发Lambda函数,以执行数据分析并将结果存储回DynamoDB。 API网关通过REST API将DynamoDB的数据公开到世界各地。...静态HTML网站托管在S3上,并且正在使用REST API来显示实时数据图表和分析。 第2点可能乍看起来有点傻,因为您可能认为DynamoDB不是存储原始时间序列数据的最佳选择。...使用开源解决方案也可以降低成本。 毫无疑问,无服务器体系结构具有许多优点: 将资本支出转化为运营支出并通常降低运营成本。 不必考虑内部系统管理流程。 减少了开发和部署成本和时间表(加快上市时间)。...您的解决方案不需要频繁地将数据从设备传输到云端,因此可以将每台设备的成本保持在相对较低的水平。

    4.4K60

    ​​Serverless架构:下一代云计算范式​

    如数据库、身份认证、存储、消息队列),开发者直接调用 API 使用,无需管理后端基础设施。...FaaS + BaaS = 典型的 Serverless 应用架构​​(如一个全栈应用,前端托管在 Vercel,后端 API 用 AWS Lambda,数据库用 DynamoDB)。​​3....事件源(Event Sources)​​触发 Serverless 函数的事件,例如:​​HTTP 请求​​(通过 API Gateway)​​数据库变更​​(如 DynamoDB 流、MongoDB...3.2 典型 Serverless 架构示例​​​​案例 1:Serverless API(AWS Lambda + API Gateway)​​​​用户访问 API​​ → ​​API Gateway...Serverless 的典型应用场景​​​​场景​​​​Serverless 解决方案​​​​优势​​​​Web API 后端​​AWS Lambda + API Gateway无需管理服务器,自动扩展​​数据处理

    18610

    资讯 | GitHub使用Electron重写桌面客户端; 微软小冰推出诗集;Facebook开源AI对话框架

    使用Web技术带来了一些好处,代码的构建运行时间从几分钟降到了几秒钟,代码变更会适时地被重新加载,还有可能实现实时的设计调整。...,它是一种完全受托管的write-through缓存服务,在逻辑上位于DynamoDB数据表的前面,提高读密集型负载的性能。...DAX与DynamoDB是API兼容的,也就是说,现有的应用程序可以直接使用DAX,而不用被重写。该预览版目前只支持Java SDK。...据AWS 博客所称, DynamoDB可被用于广告技术、物联网、游戏、电子商务和金融,有些用户在一张DynamoDB表中存储超过100TB的数据而且每秒提交上百万个读写请求。...10 MapD GPU数据库开源了 近日,据美联社官网报道,MapD Technologies将MapD Core数据库发布到了开源社区。

    1.2K30

    如何使用码匠连接 DynamoDB

    DynamoDB 可以轻松地与其他 AWS 服务集成,例如 Lambda、API Gateway、Elasticsearch 等,可以构建高效、高可用的应用程序和服务。...目前码匠已经实现了与 DynamoDB 数据源的连接,支持对 DynamoDB 数据进行增、删、改、查, 同时还支持将数据绑定至各种组件,并通过简单的代码实现数据的可视化和计算等操作,能让您快速、高效地搭建应用和内部系统...图片 步骤三:书写/选择查询方法并展示/使用查询结果。...图片 在码匠中使用 DynamoDB 操作数据: 在码匠中可以对 DynamoDB 数据进行增、删、改、查的操作 使用数据: 用户可以在左侧的查询面板内查看数据结构,并通过{{yourQueryName.data...码匠主要功能: 开箱即用,50+ 强大好用的前端组件,支持 JS 以实现灵活的交互逻辑; 连接一切数据源:REST API、MySQL、MongoDB、Microsoft SQL server、Redis

    1.2K00

    使用 Apache Hudi 对 Peloton 的数据基础设施进行现代化改造

    通过从 PostgreSQL 和 DynamoDB 采用基于 CDC 的摄取,从 CoW 表迁移到 MoR,并利用具有细粒度架构控制的异步服务,Peloton 实现了 10 分钟的摄取周期,减少了计算/...该架构经过重建,以支持 Debezium 从 PostgreSQL 和 DynamoDB 摄取变更数据捕获 (CDC),Kafka 充当传输层。...开发了一个定制的 Hudi 编写器,用于使用 EMR 上的 Apache Spark(版本 6.12.0 和 Hudi 0.13.1)将 CDC 记录摄取到 S3 中。...Glue 架构版本限制 随着架构的不断发展,该团队使用 Hudi 的 META_SYNC_ENABLED 将架构更新与 AWS Glue 同步。...为了将这些数据集摄取到湖中,该团队使用了 DynamoDB Streams 和 Kafka 连接器,从而允许重用现有的基于 Kafka 的 Hudi 摄取路径。

    7600
    领券