You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过CDK切换DynamoDB计费模式时CloudFormation报错的解决咨询

通过CDK切换DynamoDB计费模式时CloudFormation报错的解决咨询

嘿,这个问题我之前也折腾过,CloudFormation报这个错的核心原因是:当你从带自动扩缩容的预配置模式切换到按需模式时,它需要明确知道原来自动扩缩容的所有配置细节,才能生成可靠的回滚方案。直接把旧配置注释掉的话,CloudFormation找不到这些必要信息,就会拒绝执行变更。

解决这个问题的关键是分两步部署,先清理自动扩缩容的依赖,再切换计费模式:

第一步:先把表改成固定容量的预配置模式

先移除自动扩缩容的配置,将表设置为固定容量的预配置模式,这样CloudFormation会先删除和自动扩缩容相关的所有资源(比如缩放策略、追踪目标等)。

修改你的CDK代码如下:

table = new TableV2(this, props.tableName, {
  partitionKey: { name: props.partitionId, type: AttributeType.STRING },
  sortKey: { name: props.sortId!, type: AttributeType.STRING },
  removalPolicy: cdk.RemovalPolicy.DESTROY,
  // 替换成固定容量的预配置模式,容量值填你当前自动扩缩容的最小容量,或者表的当前实际容量
  billing: Billing.provisioned({
    readCapacity: Capacity.fixed(1), // 这里根据你的实际情况调整
    writeCapacity: Capacity.fixed(1) // 同理调整
  }),
  dynamoStream: StreamViewType.NEW_AND_OLD_IMAGES
});

执行cdk deploy完成这次变更,确保CloudFormation成功更新表的配置。

第二步:切换到按需模式

第一步完成后,表已经没有自动扩缩容的关联资源了,这时候再切换到按需模式就不会报错了。恢复你原本的按需模式代码:

table = new TableV2(this, props.tableName, {
  partitionKey: { name: props.partitionId, type: AttributeType.STRING },
  sortKey: { name: props.sortId!, type: AttributeType.STRING },
  removalPolicy: cdk.RemovalPolicy.DESTROY,
  billing: Billing.onDemand({
    maxReadRequestUnits: 25600,
    maxWriteRequestUnits: 6400
  }),
  dynamoStream: StreamViewType.NEW_AND_OLD_IMAGES
});

再次执行cdk deploy,这次就能顺利完成计费模式的切换了。

简单来说,就是不能一步从“自动扩缩容预配置”直接跳到“按需”,得先把自动扩缩容的尾巴清掉,CloudFormation才敢帮你做模式切换~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:23:09