繁体   English   中英

如何在 AWS S3 托管的 static 网页上显示来自 DynamoDB 的数据

[英]How to display data from DynamoDB on an AWS S3 hosted static webpage

我有一个使用 AWS IoT 将数据发送到 DynamoDB 表的系统。 这是简单的天气数据,存储时间、温度、湿度和压力。 到目前为止,那方面运作良好。 我想在 S3 上托管的网页上显示此表中的数据。 在其最简单的形式中,这只会显示最新的数据行。 虽然这将是一个简单的客户端 8822996504788 来查询数据库的情况,但在亚马逊上看它变得相当复杂,通过 API 网关调用 Lambda 函数使用 IAM 进行认证。 go 关于这个有没有更简单的方法? 数据应该是公开可读的,不可写的,所以我认为应该比我目前所读的更容易。

请查看简单的 Web 服务 CDK 模式 它可以帮助您使用 API 网关、Lambda function 创建简单的端到端服务,只需几行代码即可访问 DynamoDB 表。 它以多种编程语言提供。

作为一般注意事项:无论何时您想要提供动态内容,您都需要某种应用程序来处理它。 由 AWS Lambda function 支持的 API 网关并不比运行 web 服务器更复杂,其中包含所有无差别的繁重工作,如网络配置、防火墙设置、操作系统修补和维护。 在任何情况下都需要正确处理身份和访问控制。

如果你真的只想显示最新的行,并且你更愿意尽可能将网页保持为 static,我会考虑使用你想要的任何后端进程将最新的 dynamodb 行写到一个简单的 json 文件中,然后该文件可以由您的前端应用程序使用,而不必担心 IAM 凭证甚至 AWS JS SDK - 尽可能保持简单和轻量级。

无需重复点击您的 dynamodb 来为每次页面加载拉回相同的数据——从长远来看,这也应该为您节省一些钱。

浏览器中有一个 JavaScript SDK 它允许 web 页面上的 JavaScript 直接调用 DynamoDB,而无需通过 API 网关进行 API 调用,触发 Lambda function 本身代表您调用 DynamoDB。

这里主要考虑的是如何验证您的 web 浏览器客户端。 没有 AWS 凭证,它无法进行 DynamoDB API 调用。 我假设您没有可以将 AWS 凭证返回给客户端的服务器端组件。

您可以在页面本身中嵌入只读的、最低许可的 AWS 凭证——这绝对不是最佳做法,但它很简单,在某些情况下可能是可以接受的。 其他选项包括要求 web 站点用户通过 Web 联合身份验证进行身份验证,这将动态生成一组可用的、有时间限制的 AWS 凭证。 另一个更复杂的选择是 AWS Amplify,它同时支持经过身份验证和未经身份验证的客户端。 这通常比在 web 页面中硬编码(只读)AWS 凭据更可取,但设置起来稍微复杂一些。

还有一篇博文: 动态网站在浏览器中使用 AWS SDK for JavaScript

在所有这些场景中,页面本身将直接对 DynamoDB 进行 API 次调用,您应该确保与凭证关联的 IAM 角色受到严格限制(仅相关的 DynamoDB 表和必要的查询/获取权限)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM