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

能否根据使用量停用按需模式DynamoDB表以控制月度成本?

按需模式DynamoDB表的费用控制与停止方案

首先明确两个核心点:

  1. DynamoDB没有内置的「达到指定请求数后自动停止表」功能,但可以通过监控+手动/自动化操作实现类似的成本控制效果
  2. 按us-east-1(俄亥俄)的按需定价,100万写请求刚好花费1.25美元,100万强一致性读请求刚好0.25美元,完全匹配你的预算要求

具体实现方式

1. 手动监控+停表(新手快速上手)

  • 打开AWS CloudWatch,找到你的DynamoDB表对应的WriteRequestCount和ReadRequestCount指标
  • 给这两个指标配置告警:比如当月累计写请求接近90万、读请求接近90万时,触发邮件或短信通知
  • 收到告警后,直接在DynamoDB控制台删除表(删除后立即停止计费);如果需要保留数据,先将表数据导出到S3再删表,后续可从S3恢复数据

2. 自动化脚本(推荐,无需手动值守)

用AWS Lambda写个简单脚本,每天定时检查当月累计请求数,达到阈值自动处理:

  • 核心逻辑:调用CloudWatch API获取当月读写请求总和,判断是否达到100万阈值,是的话先导出数据到S3(可选),再删除表
  • 示例Python核心代码:
import boto3
from datetime import datetime

def lambda_handler(event, context):
    cw_client = boto3.client('cloudwatch')
    dd_client = boto3.client('dynamodb')
    table_name = "你的表名"
    s3_bucket = "你的备份桶名"  # 可选,用于存储导出数据

    # 获取当月累计写请求量
    write_stats = cw_client.get_metric_statistics(
        Namespace='AWS/DynamoDB',
        MetricName='WriteRequestCount',
        Dimensions=[{'Name': 'TableName', 'Value': table_name}],
        StartTime=datetime.now().replace(day=1, hour=0, minute=0, second=0),
        EndTime=datetime.now(),
        Period=86400,
        Statistics=['Sum']
    )
    total_writes = sum(dp['Sum'] for dp in write_stats['Datapoints'])

    # 获取当月累计读请求量
    read_stats = cw_client.get_metric_statistics(
        Namespace='AWS/DynamoDB',
        MetricName='ReadRequestCount',
        Dimensions=[{'Name': 'TableName', 'Value': table_name}],
        StartTime=datetime.now().replace(day=1, hour=0, minute=0, second=0),
        EndTime=datetime.now(),
        Period=86400,
        Statistics=['Sum']
    )
    total_reads = sum(dp['Sum'] for dp in read_stats['Datapoints'])

    # 触发停止逻辑
    if total_writes >= 1000000 or total_reads >= 1000000:
        # 可选:导出数据到S3
        dd_client.export_table_to_point_in_time(
            TableName=table_name,
            S3Bucket=s3_bucket
        )
        # 删除表以停止计费
        dd_client.delete_table(TableName=table_name)
  • 给Lambda设置定时触发器(比如每天凌晨执行一次),确保及时检测请求量

3. 替代方案:切换容量模式(适合不想删表的场景)

如果不想删除表,可以把按需模式切换为预置容量模式,设置读写容量单位为1(最低配置),每月费用几乎可以忽略。但要注意:预置模式有最低费用门槛,且切换后如果请求突增可能触发限流,控制成本的彻底性不如直接停表。

定价核对(us-east-1俄亥俄)

  • 写请求:按需模式每100万次收费1.25美元,刚好卡你的预算上限
  • 读请求:强一致性读每100万次0.25美元;如果是最终一致性读,费用为强一致性的一半(每100万次0.125美元),你的0.25美元预算可覆盖200万次最终一致性读请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:24:56