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

如何在Lambda函数内获取AWS账号全量Lambda函数名列表

实现方案

步骤1:配置Lambda执行角色权限

首先需要给当前执行清理任务的Lambda函数的IAM执行角色添加lambda:ListFunctions权限,否则无法拉取账号内的Lambda函数列表,权限示例如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:ListFunctions",
            "Resource": "*"
        }
    ]
}

如果你需要跨区域清理所有Lambda,还需要确保权限没有区域限制。

步骤2:修改代码动态拉取函数名

通过boto3调用Lambda的官方API拉取全量函数名,自动处理分页避免遗漏函数,修改后的完整代码如下:

from argparse import Namespace
import boto3
from clear_lambda_storage import remove_old_lambda_versions

def get_all_lambda_names(region_name=None):
    """拉取指定区域所有Lambda函数名称,自动处理分页"""
    lambda_client = boto3.client('lambda', region_name=region_name)
    function_names = []
    paginator = lambda_client.get_paginator('list_functions')
    for page in paginator.paginate():
        for func in page['Functions']:
            function_names.append(func['FunctionName'])
    return function_names

def clear_lambda_storage(event, context):
    # 拉取当前区域所有Lambda函数名,如需指定区域可传入region_name参数
    all_func_names = get_all_lambda_names()
    remove_old_lambda_versions(Namespace(
        token_key_id=None, 
        token_secret=None, 
        regions=None, 
        profile=None, 
        num_to_keep=3, 
        function_names=all_func_names
    ))
    return "Successful clean! 🗑 ✅"

可选:跨区域全账号清理

如果需要拉取账号内所有区域的Lambda函数,只需要新增拉取可用区域的逻辑即可,修改get_all_lambda_names方法如下:

def get_all_region_lambda_names():
    """拉取全账号所有区域的Lambda函数名称"""
    # 先获取所有支持Lambda的区域
    ec2_client = boto3.client('ec2', region_name='us-east-1')
    regions = [region['RegionName'] for region in ec2_client.describe_regions()['Regions']]
    all_func_names = []
    for region in regions:
        lambda_client = boto3.client('lambda', region_name=region)
        paginator = lambda_client.get_paginator('list_functions')
        for page in paginator.paginate():
            for func in page['Functions']:
                all_func_names.append(func['FunctionName'])
    return all_func_names

调用时把regions参数也设置为对应的区域列表,即可实现全区域自动清理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:01