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

如何为AWS Amplify表指定读写容量单元以脱离按需模式?

在AWS Amplify中通过CloudFormation配置DynamoDB预置容量模式的最佳实践

由于AWS Amplify CLI未提供直接切换DynamoDB表计费模式的选项,以下是基于基础设施即代码(IaC)原则的最佳实践方案,确保变更可复用、可追踪且不会被Amplify后续操作覆盖:

1. 使用Amplify内置的资源覆盖机制(推荐)

Amplify允许通过override命令修改自动生成的CloudFormation资源配置,这是最贴合Amplify工作流的方式:

  • 执行命令生成覆盖模板:
    amplify override api
    
  • 在生成的amplify/backend/api/<你的API名称>/override.ts(或.js)文件中,找到目标DynamoDB表资源,修改计费模式与预置吞吐量:
    import { AmplifyApiGraphQlResourceStackTemplate } from '@aws-amplify/cli-extensibility-helper';
    
    export function override(resources: AmplifyApiGraphQlResourceStackTemplate) {
      // 替换为你实际的表名,比如对应GraphQL模型的表
      const targetTable = resources.tables['TodoTable'];
      // 设置为预置计费模式
      targetTable.billingMode = 'PROVISIONED';
      // 指定预置读写容量(根据业务负载调整)
      targetTable.provisionedThroughput = {
        ReadCapacityUnits: 5,
        WriteCapacityUnits: 5
      };
    }
    
  • 执行amplify push部署变更,该配置会被纳入Amplify的版本控制体系,后续部署自动沿用。

2. 独立创建自定义DynamoDB资源

如果需要完全脱离Amplify API的自动生成逻辑,可单独定义CloudFormation模板管理表:

  • 在Amplify项目中添加自定义资源:
    amplify add custom
    
  • 在amplify/backend/custom/<自定义资源名称>/template.yaml中编写表的配置:
    Resources:
      CustomProvisionedTable:
        Type: AWS::DynamoDB::Table
        Properties:
          TableName: CustomProvisionedTable
          AttributeDefinitions:
            - AttributeName: id
              AttributeType: S
          KeySchema:
            - AttributeName: id
              KeyType: HASH
          BillingMode: PROVISIONED
          ProvisionedThroughput:
            ReadCapacityUnits: 5
            WriteCapacityUnits: 5
    
  • 若需要关联Amplify的GraphQL API,可在API配置中通过ARN引用该自定义表,避免Amplify自动生成重复资源。

3. 保障配置的可维护性

  • 将所有修改的模板文件(override脚本、自定义CloudFormation模板)加入Git版本控制,确保变更可追溯、可协作。
  • 建议使用CloudFormation参数隔离环境差异,比如为开发/生产环境设置不同的预置容量:
    // 在override.ts中引用参数
    targetTable.provisionedThroughput = {
      ReadCapacityUnits: resources.templateParameters.ReadCapacity || 2,
      WriteCapacityUnits: resources.templateParameters.WriteCapacity || 2
    };
    
    然后在amplify/team-provider-info.json中为不同环境配置参数值。

4. 安全验证变更

  • 在生产环境部署前,先在测试环境执行amplify push并查看CloudFormation变更集,确认仅修改计费模式与吞吐量,无其他意外变更。
  • 切换模式后,持续监控CloudWatch中的表读写指标,根据实际负载调整预置容量,避免出现限流或资源浪费。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:02:02