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

如何找出调用DynamoDB次数最多的AWS Lambda函数

排查Lambda调用DynamoDB资源消耗的方法

方法1:用AWS CloudTrail追踪API调用

  • 确保CloudTrail处于开启状态,它会记录所有DynamoDB的API请求,包括来自Lambda的调用。
  • 进入CloudTrail控制台的事件历史页面,筛选事件源为dynamodb.amazonaws.com,查看userIdentity字段里的invokedBy,就能定位到发起调用的Lambda函数ARN。
  • 可以进一步统计每个Lambda发起的不同DynamoDB操作(如PutItem、Query、Scan)的频次,不同操作对应不同的RCU/WCU消耗,以此判断资源消耗大户。

方法2:给Lambda添加自定义CloudWatch指标

  • 在Lambda代码中集成CloudWatch自定义指标,每次调用DynamoDB操作后,上报操作类型、消耗的RCU和WCU数值。
  • Python示例代码:
    import boto3
    from botocore.client import Config
    
    cloudwatch = boto3.client('cloudwatch', config=Config(region_name='你的区域'))
    
    def report_dynamodb_metrics(func_name, operation, consumed_rcu, consumed_wcu):
        cloudwatch.put_metric_data(
            Namespace='Lambda-DynamoDB-Cost',
            MetricData=[
                {
                    'MetricName': 'RequestCount',
                    'Dimensions': [{'Name': 'FunctionName', 'Value': func_name}],
                    'Value': 1,
                    'Unit': 'Count'
                },
                {
                    'MetricName': 'ConsumedRCU',
                    'Dimensions': [{'Name': 'FunctionName', 'Value': func_name}],
                    'Value': consumed_rcu,
                    'Unit': 'Count'
                },
                {
                    'MetricName': 'ConsumedWCU',
                    'Dimensions': [{'Name': 'FunctionName', 'Value': func_name}],
                    'Value': consumed_wcu,
                    'Unit': 'Count'
                }
            ]
        )
    
    # 调用DynamoDB后上报指标
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('你的表名')
    response = table.put_item(Item={'id': 'test', 'data': 'content'})
    consumed_cap = response['ConsumedCapacity']
    report_dynamodb_metrics(
        func_name='你的Lambda函数名',
        operation='PutItem',
        consumed_rcu=consumed_cap['CapacityUnits'],
        consumed_wcu=consumed_cap['CapacityUnits']
    )
    
  • 之后在CloudWatch控制台就能按Lambda函数维度,查看各函数的DynamoDB资源消耗数据。

方法3:用AWS X-Ray追踪请求链路

  • 给所有Lambda开启X-Ray追踪,AWS SDK默认支持捕获DynamoDB调用链路。
  • 进入X-Ray控制台的服务地图,可以直观看到Lambda与DynamoDB的调用关系,点击具体Lambda节点,就能查看它对DynamoDB的调用次数、延迟及资源消耗统计。
  • 还能通过X-Ray查询编辑器编写查询语句,统计每个Lambda发起的DynamoDB请求总量和资源消耗。

方法4:结合DynamoDB标签与CloudWatch指标

  • 在Lambda调用DynamoDB时,给请求添加RequestTag标签(比如FunctionName=你的Lambda函数名)。
  • 进入DynamoDB的CloudWatch指标页面,选择ConsumedReadCapacityUnits或ConsumedWriteCapacityUnits指标,按FunctionName标签维度分组统计,直接查看各Lambda对应的资源消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:17:12