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

使用Python Lambda无法列出AWS Secrets Manager全部密钥的问题排查

问题原因

AWS Secrets Manager的list_secrets接口采用分页返回结果,单次调用默认最多返回20条密钥。你的Python代码只调用了一次接口,所以只能拿到第一页的数据;而AWS CLI会自动处理分页逻辑,帮你遍历所有页面获取全部密钥。另外你的代码里还有个拼写错误:boto3.sesssion.Session应该是boto3.session.Session(多写了一个s),这个错误会导致代码无法正常运行。

修复后的代码
import boto3

region = 'us-west-2'

# 修正拼写错误:sesssion → session
session = boto3.session.Session(region_name=region)
client = session.client('secretsmanager')

all_secrets = []
next_token = None

# 循环遍历所有分页结果
while True:
    # 根据是否有NextToken决定调用参数
    if next_token:
        response = client.list_secrets(NextToken=next_token)
    else:
        response = client.list_secrets()
    
    # 将当前页的密钥列表合并到总列表
    all_secrets.extend(response['SecretList'])
    # 获取下一页的标记,没有则终止循环
    next_token = response.get('NextToken')
    
    if not next_token:
        break

# 输出所有密钥名称
for secret in all_secrets:
    print(secret['Name'])
核心要点
  • 利用NextToken参数实现分页遍历:每次调用接口后检查返回结果中的NextToken,存在则继续请求下一页,直到没有NextToken为止。
  • 使用extend方法合并每页数据,避免覆盖之前的结果。
  • 修正会话初始化的拼写错误,确保代码能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:45:21