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

如何基于AWS CloudWatch按Lambda及客户端公网IP统计调用量?

基于AWS原生功能按客户端IP统计Lambda调用次数的方案

方案1:CloudWatch Logs Insights 构建可视化报表

  • 直接复用现有CloudWatch日志组,通过Logs Insights编写查询语句,提取Lambda名称、客户端IP并统计调用次数。
  • 查询示例(假设客户端IP在日志的requestContext.identity.sourceIp字段中):
fields @timestamp, event.requestContext.identity.sourceIp as client_ip, @logStream as lambda_name
| filter @message contains 'requestContext'
| stats count(*) as call_count by client_ip, lambda_name
| sort call_count desc
  • 执行查询后,可直接查看表格形式的统计结果,也能将该查询添加到CloudWatch仪表盘中作为自定义小部件,满足按Lambda和IP分组统计的需求。
  • 优势:无需额外开发,操作成本低,直接利用现有日志数据。

方案2:自定义指标结合维度(时序图表需求)

  • 如果需要时序图表展示调用趋势,可在Lambda代码中主动上报带维度的自定义指标到CloudWatch:
    • 修改Lambda代码,提取客户端IP和当前Lambda名称作为维度,调用CloudWatch的PutMetricData接口上报调用次数。
    • Python代码示例:
import boto3
import os

cloudwatch = boto3.client('cloudwatch')

def handler(event, context):
    # 提取客户端IP
    client_ip = event['requestContext']['identity']['sourceIp']
    # 获取当前Lambda函数名称
    lambda_name = os.environ['AWS_LAMBDA_FUNCTION_NAME']
    
    # 上报自定义指标
    cloudwatch.put_metric_data(
        Namespace='API_Gateway_Lambda_Calls',
        MetricData=[
            {
                'MetricName': 'CallCount',
                'Dimensions': [
                    {'Name': 'ClientIP', 'Value': client_ip},
                    {'Name': 'LambdaFunction', 'Value': lambda_name}
                ],
                'Value': 1,
                'Unit': 'Count'
            }
        ]
    )
    
    # 原有业务逻辑
    # logger.info(str(event))
    return {
        'statusCode': 200,
        'body': 'Success'
    }
  • 上报完成后,在CloudWatch中创建时序图表时,可按LambdaFunction和ClientIP维度拆分数据,展示每个IP对不同Lambda的调用次数趋势。
  • 注意:CloudWatch对维度数量有上限,若客户端IP量级极大(超过千级),建议优先使用Logs Insights方案。

方案3:API Gateway访问日志(更轻量化的数据源)

  • 开启API Gateway的访问日志功能,直接将请求日志输出到CloudWatch日志组,日志中默认包含客户端IP、请求资源路径(对应Lambda绑定的API资源)等信息,无需在Lambda中额外记录请求event。
  • 配置访问日志时,可自定义格式确保包含$context.identity.sourceIp(客户端IP)和$context.resourcePath(API资源路径)字段。
  • 后续同样通过CloudWatch Logs Insights查询统计,相比Lambda日志,访问日志更轻量化,不依赖Lambda的日志输出逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:25:19