javascript - 如何在 Node 中将 DynamoDB 表从 PROVISIONED 更新为 PAY_PER_REQUEST?

标签 javascript node.js amazon-web-services amazon-dynamodb aws-sdk

我有一个现有的 DDB 表,它使用 BillingMode: PROVISIONEDProvisionedThroughput:{...}。我想将其更改为使用 BillingMode: PAY_PER_REQUEST 但这样做时出现以下错误:

TypeError: Cannot read property 'ReadCapacityUnits' of undefined

我发送到 updateTable 调用的参数是:

{
  "TableName": "my-table-name",
  "AttributeDefinitions": [
    {
      "AttributeType": "S",
      "AttributeName": "name"
    }
  ],
  "BillingMode": "PAY_PER_REQUEST"
}

我还尝试发送带有 ReadCapacityUnitsWriteCapacityUnitsProvisionedThroughput 字段,但返回了:

ValidationException: One or more parameter values were invalid: ProvisionedThroughput cannot be specified when BillingMode is PAY_PER_REQUEST

...这是我从阅读 the docs 中所期望的.

知道我做错了什么吗?

最佳答案

事实证明这是我的错误...为了回答这个问题,你发送的正是我上面发布的内容,或者只是

{
  "TableName": "my-table-name",
  "BillingMode": "PAY_PER_REQUEST"
}

...正如 Nadav Har'El 指出的那样,“AttributeDefinitions”是不必要的。

问题是,在我的 lambda 版本中,我根据已更改的内容构建要发送的对象,并包含 ProvisionedThroughput: undefined ,这导致 SDK 尝试验证该对象。我很长一段时间都没有看到这个问题,因为 console.log(JSON.stringify()) 删除了任何值为 undefined 的键。用另一种方式说明这一点:

$ node
> var a = {foo:1, bar:undefined}
undefined
> a
{ foo: 1, bar: undefined }
> console.log(JSON.stringify(a))
{"foo":1}
undefined

关于javascript - 如何在 Node 中将 DynamoDB 表从 PROVISIONED 更新为 PAY_PER_REQUEST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277868/

相关文章:

javascript - 如何使用 JS/jQuery 验证两个下拉字段中的时间值?

javascript - RequireJS 和 Backbone ajax 问题

node.js - 构建模块时,我们在哪里保存演示应用程序依赖项?

amazon-web-services - AWS Elasticsearch Supports是否支持强制区域感知?

javascript - Angular.js - 两个并发但互斥的路由 ($routeProvider)

javascript - 将 addEventListener 添加到单击的表格单元格以更改颜色

javascript - JavaScript 中的原型(prototype) OO

javascript - Node.js 同步读取文件作为字符串(不是缓冲区)

amazon-web-services - 为什么 CloudFormation 不创建我的数据库?

json - 如何构建此 JSON CloudFormation 模板