AWS Kinesis流写入成功但控制台无数据显示问题求助
Kinesis流写入成功但控制台无数据显示的排查方案
问题描述
我在AWS Kinesis中创建了一个流(截图:Kinesis流创建完成的界面),使用AWS官方文档中的脚本向流写入记录:
import datetime import json import random import boto3 STREAM_NAME = "apache-flink-demo-input-1" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) response = kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="1") print(response) print() if __name__ == '__main__': generate(STREAM_NAME, boto3.client( 'kinesis', aws_access_key_id="XXXX", # Hidden aws_secret_access_key="XXXX", # Hidden region_name='us-west-1'))
每条写入请求都返回成功响应:
{'ShardId': 'shardId-000000000003', 'SequenceNumber': '49644599907995286627749093391250621075271860022832791602', 'ResponseMetadata': {'RequestId': 'f0e04f67-94fa-934b-ad60-6e3e40d06706', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'f0e04f67-94fa-934b-ad60-6e3e40d06706', 'x-amz-id-2': 'KLepCUNwgrZMY639W6QhdyFRsfeiqAnBqdLWdPSdDKxgDnGUqRGNly/dCPE/GHGVhUN3YXXB98PUvtWRHidOM4PRI4/edeaI', 'date': 'Sat, 16 Sep 2023 21:33:13 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '110'}, 'RetryAttempts': 0}}
但Kinesis控制台仪表板中没有显示任何数据(截图:Kinesis控制台无数据的仪表板界面)。
排查解决步骤
1. 核对控制台区域与流所在区域
脚本中指定的流区域是us-west-1(美国西部俄勒冈),务必确认当前打开的Kinesis控制台处于同一区域——区域不匹配是最常见的“看不到数据”原因。
2. 调整控制台时间范围并刷新
- Kinesis控制台默认时间范围可能未覆盖你写入数据的时段,手动调整为「最近15分钟」或自定义时间段,覆盖你执行写入脚本的时间。
- 点击控制台的刷新按钮,强制加载最新数据。
3. 主动读取流数据验证写入结果
既然写入响应返回成功,直接读取流内数据确认是否真的写入:
# 第一步:获取分片迭代器 aws kinesis get-shard-iterator --stream-name apache-flink-demo-input-1 --shard-id shardId-000000000003 --shard-iterator-type TRIM_HORIZON --region us-west-1 # 第二步:用返回的ShardIterator值替换下方占位符,读取记录 aws kinesis get-records --shard-iterator <你的ShardIterator值> --region us-west-1
如果能读取到你写入的JSON数据,说明数据已存在,只是控制台显示延迟或配置问题;如果读不到,再排查写入逻辑或权限问题。
4. 确认IAM权限与流名称正确性
- 检查脚本使用的IAM用户是否拥有
kinesis:PutRecord权限,且资源ARN正确指向目标流:arn:aws:kinesis:us-west-1:<你的AWS账户ID>:stream/apache-flink-demo-input-1。 - 再次核对脚本中的
STREAM_NAME与控制台创建的流名称完全一致(Kinesis流名称大小写敏感)。
5. 等待控制台显示延迟
Kinesis的实时指标和数据显示可能存在1-5分钟的延迟,尤其是新创建的流。等待几分钟后再刷新控制台查看。
内容的提问来源于stack exchange,提问作者Edward Igushev
相关产品推荐
相关产品推荐

