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

求助:为Python脚本添加分页器以批量清理AWS Lambda旧版本

修复Lambda版本清理脚本以获取全部函数

你的脚本当前仅能获取第一页Lambda函数(默认最多返回50个),当账号内函数数量超过这个限制时会遗漏大量函数。核心问题是list_functions接口未做分页处理,需要补充对应逻辑来遍历所有函数结果。

修改后的完整代码

import boto3

def clean_old_lambda_versions(client):
    # 使用boto3分页器获取所有Lambda函数
    paginator = client.get_paginator('list_functions')
    function_pages = paginator.paginate()
    
    for page in function_pages:
        for function in page['Functions']:
            arn = function['FunctionArn']
            print(arn)
            all_versions = []

            # 版本分页逻辑保持原有逻辑不变
            versions = client.list_versions_by_function(
                FunctionName=arn)
            while True:
                page_versions = [int(v['Version']) for v in versions['Versions'] if v['Version'] != '$LATEST']
                all_versions.extend(page_versions)
                try:
                    marker = versions['NextMarker']
                except KeyError:
                    break
                versions = client.list_versions_by_function(
                    FunctionName=arn, Marker=marker)

            # 排序并保留最新5个版本
            all_versions.sort()
            print('待删除版本:')
            print(all_versions[:-5])
            print('保留版本:')
            print(all_versions[-5:])
            
            # 删除旧版本
            for version_num in all_versions[:-5]:
                function_arn_with_version = f"{arn}:{version_num}"
                client.delete_function(FunctionName=function_arn_with_version)

if __name__ == '__main__':
    client = boto3.client('lambda', region_name='us-east-1')
    clean_old_lambda_versions(client)

关键修改说明

  • 新增函数分页逻辑:用get_paginator('list_functions')替代直接调用list_functions(),由boto3自动处理分页标记,确保遍历账号内所有Lambda函数
  • 优化异常捕获:将通用except改为except KeyError,仅捕获NextMarker不存在的预期情况,避免屏蔽其他错误
  • 简化代码写法:用f-string替代format()进行字符串拼接,提升代码可读性

修改后脚本可正常遍历所有Lambda函数,同时保留原有的版本清理逻辑,确保只保留$LATEST和最新5个版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:03:23