boto3 Kinesis客户端list_streams接口未返回预期流的问题
问题原因与解决方案
核心原因
list_streams方法的ExclusiveStartStreamName参数作用是从指定流名称的下一个流开始返回结果,而非包含指定流本身。所以传入"stream_a"时,只会返回排在它之后的stream_b,这是该参数的正常设计行为,并非boto3或AWS API的问题。
正确用法
- 若要获取所有流,直接调用无参数的
list_streams()即可,和AWS CLI行为一致:import boto3 kinesis = boto3.client('kinesis') response = kinesis.list_streams() print(response['StreamNames']) # 返回 ['stream_a', 'stream_b'] - 针对分页场景(比如流数量超过默认返回上限100个时),先调用一次无参数的
list_streams(),拿到返回结果中的LastStreamName,再将其作为ExclusiveStartStreamName传入下一次调用,获取后续流列表。也可以用分页器自动处理:kinesis = boto3.client('kinesis') paginator = kinesis.get_paginator('list_streams') for page in paginator.paginate(): print(page['StreamNames'])
内容的提问来源于stack exchange,提问作者doublethink13
相关产品推荐
相关产品推荐

