如何在 DynamoDB 中模拟 BatchWriteItem 失败?

iaf*_*rek 5 amazon-web-services amazon-dynamodb

如何BatchWriteItem在 DynamoDB 中创建受控失败?

基本上,我想在DynamoDB模拟故障(故意破BatchWriteItem),这样我就可以确保取逻辑的方式UnprocessedItemsresponse工作正常。

来自文档:http : //docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html

通常,您会在循环中调用 BatchWriteItem。每次迭代都会检查未处理的项目,并提交一个包含这些未处理项目的新 BatchWriteItem 请求,直到所有项目都已处理完毕。

下面是讨论的两个类似的解决方案,它们使用 do-while 循环和回调:

带有 do-while 的 JAVA:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/batch-operation-document-api-java.html

带回调的节点:

如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?

如何准备“损坏的” BatchWriteItem 请求以进行测试?

DynamoDB 会陷入无限循环吗?即BatchWriteItem返回UnprocessedItems,代码需要UnprocessedItems和调用BatchWriteItemUnprocessedItems一次又一次地返回?

Bui*_*uan 4

BatchWriteItem由于各个表上的限制,您将会失败。因此,如果您想在这种情况下进行测试,您必须使您的 DynamoDB 表变得受到限制。脚步:

  1. 计算DynamoDB 表的容量写入单位
  2. 实现一个向 DynamoDB 写入过多数据并使其达到最大容量写入单元的函数。
  3. 运行你的函数BatchWriteItem。您将能够获得,UnprocessedItems因为您的 DynamoDb 正在受到限制。

  • 我通过将表上的 WCU 设置为 1 来尝试此操作。我得到的只是响应: `{"__type":"com.amazonaws.dynamodb.v20120810#ProvisionedThroughputExceededException","message":"配置的预配置吞吐量的级别超出了表的范围。请考虑使用 UpdateTable API 提高您的配置级别。"}`。当请求确实通过时,我仍然得到 `{"UnprocessedItems": {} }`。 (5认同)