我有一个现有的DDB表,该表使用BillingMode: PROVISIONED
和ProvisionedThroughput:{...}
。我想将其更改为使用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"
}
我还尝试发送一个ProvisionedThroughput
和ReadCapacityUnits
的{{1}}字段,但这返回了:
WriteCapacityUnits
...这是我从阅读the docs中学到的期望。
有什么想法我在做什么错吗?
答案 0 :(得分:0)
此应该对您有用,在https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html中有一个示例:
aws dynamodb update-table --table-name Music --billing-mode PAY_PER_REQUEST
请求中的“ AttributeDefinitions”部分似乎是多余的,您是否尝试了不使用它?
答案 1 :(得分:0)
事实证明,这是我的错误...要回答这个问题,您只需发送我上面发布的内容,或者只是
{
"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
答案 2 :(得分:0)
我遇到这个问题是因为我有一个类似的问题。
原来,我使用的是CDK watchful,它需要PROVISIONING MODE,并且为发电机表定义了readCapacity
和writeCapacity
。完成此操作后,cdk diff
,cdk synth
再次感到高兴。