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

如何排查AWS中半年未使用的Lambda及查询其依赖对象

获取并清理AWS半年未使用的Lambda函数

一、筛选过去180天未被调用的Lambda函数

方法1:使用AWS CLI批量检测

结合Lambda与CloudWatch的CLI命令,批量标记无调用记录的函数:

# 导出所有Lambda函数ARN到文件
aws lambda list-functions --query 'Functions[*].FunctionArn' --output text | tr '\t' '\n' > lambda_arns.txt

# 遍历每个ARN,检查过去180天的调用次数
for arn in $(cat lambda_arns.txt); do
  func_name=$(basename "$arn")
  # 查询CloudWatch调用统计
  invocations=$(aws cloudwatch get-metric-statistics \
    --namespace AWS/Lambda \
    --metric-name Invocations \
    --dimensions Name=FunctionName,Value="$func_name" \
    --start-time $(date -d "-180 days" --utc +%Y-%m-%dT%H:%M:%SZ) \
    --end-time $(date --utc +%Y-%m-%dT%H:%M:%SZ) \
    --period 86400 \
    --statistics Sum \
    --query 'Datapoints[*].Sum' --output text)
  
  # 无数据或调用次数为0则标记为未使用
  if [ -z "$invocations" ] || [ "$invocations" == "0" ]; then
    echo "$arn" >> unused_lambdas.txt
  fi
done

执行完成后,unused_lambdas.txt会列出所有半年未使用的Lambda ARN。

方法2:通过AWS控制台可视化筛选

  1. 打开CloudWatch控制台,进入指标 > 所有指标 > AWS/Lambda > 按函数名称
  2. 勾选所有函数的Invocations指标,将时间范围设置为「过去180天」
  3. 在图表中筛选出数值始终为0的函数,记录名称或ARN即可

二、批量删除未使用的Lambda函数

CLI批量删除

读取之前生成的unused_lambdas.txt,批量删除函数:

while read arn; do
  aws lambda delete-function --function-name "$arn"
done < unused_lambdas.txt

控制台手动删除

  1. 进入Lambda控制台,在函数列表中找到标记的未使用函数
  2. 选中函数后点击操作 > 删除,确认后完成删除

三、排查Lambda的关联依赖对象

Lambda可能关联多种AWS资源,以下是常用排查方式:

1. 触发器关联

触发器是最常见的依赖(如API Gateway、S3事件、SNS主题等):

  • 控制台:进入函数详情页配置 > 触发器面板,查看所有关联触发器
  • CLI命令:
aws lambda list-event-source-mappings --function-name <函数名/ARN>

2. 执行IAM角色

Lambda的执行角色关联权限与潜在资源依赖:

  • 控制台:函数详情页配置 > 权限 > 执行角色,点击角色名查看权限策略与关联资源
  • CLI命令:
aws lambda get-function --function-name <函数名/ARN> --query 'Configuration.Role'

3. 附加层(Layers)

若函数使用共享层,需确认层的依赖:

  • 控制台:函数详情页代码 > 层面板,查看所有附加层
  • CLI命令:
aws lambda get-function --function-name <函数名/ARN> --query 'Configuration.Layers[*].Arn'

4. VPC资源关联

若函数配置VPC,会关联子网与安全组:

  • 控制台:函数详情页配置 > VPC,查看关联的子网和安全组ID
  • CLI命令:
aws lambda get-function --function-name <函数名/ARN> --query 'Configuration.VpcConfig'

5. CloudWatch日志组

Lambda默认生成对应日志组,格式为/aws/lambda/<函数名>:

  • 控制台:函数详情页监控 > 日志,直接跳转至对应日志组
  • CLI命令:
aws logs describe-log-groups --log-group-name-prefix /aws/lambda/<函数名>

6. 代码中的资源依赖

排查代码内调用的AWS资源(如DynamoDB表、S3桶),可先下载代码包分析:

# 下载函数代码包
aws lambda get-function --function-name <函数名/ARN> --query 'Code.Location' | xargs curl -o function_code.zip
# 解压后查看代码中的资源引用
unzip function_code.zip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:27:12