如何用AWS CLI查询Lambda最近调用时间,识别未使用函数?
获取Lambda函数最近调用时间的可行方法
要区分在用和停用的Lambda函数,确实可以通过几种方式获取最近调用时间,以下是实用的CLI操作方案:
1. 利用CloudWatch Metrics(最可靠)
Lambda默认会生成Invocations指标(除非手动禁用了指标收集),可以通过CloudWatch CLI查询每个函数的最近调用记录:
aws cloudwatch get-metric-statistics \ --namespace AWS/Lambda \ --metric-name Invocations \ --dimensions Name=FunctionName,Value=<函数名> \ --start-time $(date -d "30 days ago" +%Y-%m-%dT%H:%M:%SZ) \ --end-time $(date +%Y-%m-%dT%H:%M:%SZ) \ --period 86400 \ --statistics Sum \ --query 'Datapoints[?Sum>0] | sort_by(@, &Timestamp) | [-1].Timestamp'
- 替换
<函数名>为目标Lambda函数名,或改用Name=FunctionArn,Value=<函数ARN>按ARN查询 - 调整
start-time的时间范围(比如改成90天)覆盖更长周期 - 如果返回时间戳,说明该时间段内有调用;无返回则可能未被调用
2. 查询CloudWatch日志流的最后事件时间
若函数开启了日志(默认会发送到CloudWatch Logs),可以通过日志流的最后事件时间判断:
aws logs describe-log-streams \ --log-group-name /aws/lambda/<函数名> \ --order-by LastEventTime \ --descending \ --max-items 1 \ --query 'logStreams[0].lastEventTimestamp'
- 将返回的时间戳转换为可读时间(比如用
date -d @<时间戳>/1000) - 若日志组不存在或无日志流,说明函数从未被调用或日志被禁用
3. 辅助判断:Lambda最后修改时间
如果上述两种方法都无数据,可以用函数的最后修改时间作为参考(注意:修改≠调用,仅作辅助):
aws lambda list-functions \ --query 'Functions[?FunctionName==`<函数名>`].LastModified'
注意:如果函数完全没有配置CloudWatch指标和日志,且从未被调用过,确实无法直接获取调用时间,这种情况下可以结合函数的创建时间、关联的触发器状态(比如API Gateway、EventBridge规则是否启用)来综合判断是否为停用函数。
内容的提问来源于stack exchange,提问作者Bev Rivling
相关产品推荐
相关产品推荐

