能否根据使用量停用按需模式DynamoDB表以控制月度成本?
按需模式DynamoDB表的费用控制与停止方案
首先明确两个核心点:
- DynamoDB没有内置的「达到指定请求数后自动停止表」功能,但可以通过监控+手动/自动化操作实现类似的成本控制效果
- 按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
相关产品推荐
相关产品推荐

