问题标签 [dynamo-local]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

amazon-web-services - 在容器中启动并连接到 Dynamodb Local

我们正在使用 Dynamodb Local 进行集成测试。它在容器内启动,在该容器内,我们需要连接到本地 Dynamodb。下面是 DocumentClient 的初始化方式:

但是,当我尝试连接尝试批处理写入时,就像这样doc.batchWrite(buildSetData).promise(),承诺永远不会兑现。对于那些想知道的人,batchwrite 是用 JavaScript 编写的,并且.promise()只返回了一个 JS 承诺。

但是,当我在本地(在 docker 容器之外)运行我的设置时,一切正常。

TLDR:为什么我无法连接到容器内的 DynamoDb Local。

0 投票
1 回答
52 浏览

dynamo-local - AWS DynamoDB SampleData:创建本地表

AWS 创建示例表

这是AWS Create Example Tables https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.CreateTables.html的链接。我想为 localhost 创建一个脚本,如下所示。我不知道该怎么做create the Reply Table。有人可以帮忙吗?

数据加载

这部分应该没问题,因为它是从Step 2: Load Data into Tables链接https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html复制的

0 投票
1 回答
233 浏览

java - 如何通过 Java 中的 Executor Framework 在 DynamoDb 中获得最佳批量插入率?

我正在使用 DynamoDB SDK for Java 在本地 Dynamo DB 中进行批量写入(大约 5.5k 项)的 POC。我知道每个批量写入不能超过 25 个写入操作,因此我将整个数据集划分为每个 25 个项目的块。然后我将这些块作为 Executor 框架中的可调用操作传递。尽管如此,由于 5.5k 条记录在 100 多秒内被插入,我仍然没有得到令人满意的结果。

我不确定我还能如何优化它。在创建表时,我将 WriteCapacityUnit 设置为 400(不确定我可以给出的最大值是多少)并对其进行了一些试验,但它从未有任何区别。我也尝试过更改执行程序中的线程数。

这是执行批量写入操作的主要代码:

这是用于创建 dynamoDB 表的代码:

0 投票
1 回答
514 浏览

java - 本地运行的 DynamoDb 的默认预置吞吐量(读取和写入容量单位)是多少?

我是 DynamoDb 的新手,并尝试使用 Java 在本地运行的 DynamoDb 上批量插入大约 5.5k 个项目。尽管我尽了最大的努力,并进行了各种调整,但我能够在大约 100 秒内完成此操作(即使在使用 executor 框架之后)。

我在这里发布了我的代码,但没有得到答案。

为了提高插入率,我在创建表时尝试了多次更改预置吞吐量值,然后我知道在本地运行时,dynamodb 会忽略吞吐量值。所以我认为我的 dynamodb 不能一次处理这么多的写请求,当我在 AWS 服务器上执行时,性能可能会提高。

这是我运行创建表的代码:

但是为了确定我想知道本地运行的 dynamodb 实例的默认读写容量单位是多少?

0 投票
1 回答
786 浏览

node.js - 在本地 docker localhost:8000 中使用 dynamodb 和在 localhost:4500 上运行的 serverless-framework serverless-offline 应用程序

我正在寻找向本地运行的无服务器框架节点应用程序添加状态。我遇到了官方的 DynamoDb docker 映像,我想使用无服务器框架,这个 dynamodb 实例在 localhost:8000 暴露的 docker 上运行,而不使用 sls install dynamodb 版本。

我已经尝试将它与 nodejs aws-sdk 一起正常使用,并将端点和区域配置为本地。新的用户表已经创建,并且可以通过 aws-cli --endpoint localhost:8000 访问数据库,但无法通过 nodejs aws-sdk 访问 dynamodb 实例

// server.js

//handler.js

// serverless.yml

我希望从 docker local 中的 dynamodb 得到响应,但 aws-sdk 无法连接到它。上述 http 事件转到 express.js 运行良好。

0 投票
1 回答
1390 浏览

amazon-dynamodb - 在从 DynamoDB 检索数据时,sortkey 字段是否必须作为搜索条件的一部分?

我正在尝试对包含 HashKey 和 SortKey 字段的表运行 DynamoDB 查询。

在进行get-item操作时,当我提供两个字段的键时hashkeysortkey我看到了结果。但是,当我尝试仅使用 hashkey 字段时,会出现以下异常:

An error occurred (ValidationException) when calling the GetItem operation: One of the required keys was not given a value

我们不能仅基于 hashkey 获取 DynamoDB 数据吗?

0 投票
1 回答
1332 浏览

amazon-web-services - 我无法读取环境变量(Go 中的 aws-lambda)

我想使用 DynamoDB Local 和 SAM CLI 在本地环境中测试 AWS Lambda。我创建了一个简单的用户数据库表(id,名称),我正在尝试获取数据。

我运行“sam local start-api --env-vars test/env.json”。当我访问“ http://localhost:3000/users/1 ”时,出现错误。错误信息如下。我无法理解此错误消息的含义。如何修复此错误?

这是我的代码。

错误信息

0 投票
1 回答
3110 浏览

amazon-dynamodb - 如何使用 DynamoDB JavaScript Shell 访问本地 DynamoDB?

我在本地设置了一个 Dynamodb。我可以使用cmd以下命令访问它:

我得到了我在本地的表列表
但是当我尝试通过DynamoDB JavaScript Shell访问它时,
我得到了这个结果:

在此处输入图像描述

如何通过 DynamoDB JavaScript Shell 访问我的本地 Dynamodb?

更新:下面是返回上图中错误的代码。

0 投票
0 回答
2046 浏览

node.js - 将 Amazon DynamoDB 与 jest 一起使用 - 如何在测试运行之前等待数据库填充?

我有一个使用 AWS Lambda 的 nodejs express 应用程序,它可以写入和搜索 DynamoDB。我正在尝试使用 Jest 和 编写集成测试@shelf/jest-dynamodb,但是在每个测试文件运行之前清除和填充数据库时遇到问题 - 它不一致,有时所有 3 个事件都及时填充,有时只有 2 个,有时根本没有。在每个测试文件开始时数据库处于空状态是很重要的。

我有一个jest.config文件:

笑话-dynamodb-config.js

我有一个 dbHelper.js

我有 3 个测试文件:

  • 测试我的端点的一个可以发布到 dynamoDB
  • 我可以通过 eventId 搜索的测试
  • 一个测试我可以通过其他属性搜索

对于第一个测试文件,我运行 beforeAll() 应该清除表中可能存在的任何内容:

对于第二个文件,我再次清除其中可能存在的所有模拟事件并填充一个事件:

在第三个文件中,我再次清除所有事件并填充 3 个事件:

我已经向我的 dbHelper 函数添加了回调,以尝试确保函数在继续之前完成,但这似乎不起作用。

我还在-i我的 jest 运行命令中添加了标志,因此所有文件都按顺序运行,而不是并行运行。

0 投票
1 回答
457 浏览

amazon-web-services - 用于存储不同对象的 DynamoDB 数据库模型

我尝试学习 DynamoDB 只是为了教学目的,因此我建议自己创建一个小项目来销售车辆(汽车、自行车、四轮摩托车等),以便学习并获得一些使用 NoSQL 数据库的经验。我阅读了很多关于创建正确模型的文档,但我仍然无法找出存储数据的最佳方式。

我想通过以下过滤器获取所有车辆:

  • 获得所有不超过 3 个月的汽车。
  • 按品牌、年份和型号获取所有不超过 3 个月的汽车。
  • 依此类推,之前对自行车、四轮摩托车等的查询也是如此。

在阅读了带有示例的官方文档和其他页面后(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html#bp-general-nosql-design-approach,https ://medium.com/swlh/data-modeling-in-aws-dynamodb-dcec6798e955单独的表与地图列表 - DynamoDB),他们说最好的设计只使用一个表来存储所有内容,所以我最终得到一个模型如下:

我使用了复合排序键,因为他们指定这是搜索数据的好习惯(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html)。

但是在定义我的模型之后,我最终发现以前的模型会有一个称为“热点”或“霍伊键”的问题。(https://medium.com/expedia-group-tech/dynamodb-data-modeling-c4b02729ac08https://dzone.com/articles/partitioning-behavior-of-dynamodb)因为在官方文档中他们建议使用分区具有高基数的键来避免该问题。

所以在这一点上,我对如何定义一个好的和可扩展的模型有点困惑。您能否为我提供一些有关如何实现模型以获取上述查询的帮助或示例?

注意:我还考虑为每辆车创建一个特定的表,但这会产生更多问题,因为要找到执行全表扫描所需的信息。