---
# System prepended metadata

title: Kinesis - Analytics
tags: [AWS]

---

# Kinesis
:::info
日期 : 2025/04/08
:::


Kinesis 是個 real time data 處理站

-------

#### 和 SQS 差別

SQS : 處理一筆一筆任務，可延遲 / 重試，消費者 poll 訊息才處理一次(定時)
Kinesis : 處理大量即時資料流，消費者可同時讀取資料(real time)

---

#### 特點

* 收集、處理、分析大量串流資料
* 有順序、資料保存有期限(預設 24 小時)
* 通過 Shards 來控制 Kinesis 量能
* 用途 : 即時 log 分析、即時推薦系統、即時警報、資料管線串接

---

#### 子服務

* Kinesis Data Streams：接收、儲存、串流資料
* Kinesis Data Firehose : 自動把資料串流傳送到其他服務(Serverless, 僅支援S3、Redshift、OpenSearch、Splunk 這幾個目的地)
* Kinesis Data Analytics : 寫 SQL 查即時資料流
* Kinesis Video Streams : 專門處理影像串流

---

#### 常見整合

* Kinesis Data Firehose
    * S3 冷儲存
    * Redshift 轉成結構化資料做分析
    * OpenSearch 即時搜尋與可視化
    * Splunk 企業日誌
* Lambda 即時處理資料
* Glue / EMR / Spark 做進階的 ETL 或批次處理
* CloudWatch Logs 即時監控資料

AWS 服務介紹
*Redshift : 可用 SQL 查的大型 Data Warehouse
*Spark : 大數據處理引擎，支援分散式運算，用來做 ETL、SQL 查詢、機器學習。Glue 和 EMR 都是跑 Spark 的平台
*Glue : Serverless 的 Spark ETL 工具
*EMR : 自己架的 Spark/Hadoop 分散式平台


---

#### 架構

Firehose
![image](https://hackmd.io/_uploads/HJosQHm0Jx.png =70%x)


CDC pipeline (change data capture) 
![image](https://hackmd.io/_uploads/SJtaLHXRye.png)

1. EventBridge 每 1 分鐘 triggers 一次 Lambda
2. Lambda 製造模擬資料並送進 Kinesis Data Stream
3. Firehose 讀取資料
4. Kinesis Data Firehose
    *  Dynamic Partitioning configuration : Firehose 根據你設定的欄位自動將資料分類進 S3 不同路徑 
    *  Custom Dynamic Partitioning : 呼叫另一個 Lambda 來處理資料(改欄位名稱、算新欄位、格式轉換)
5. 儲存結果到 Amazon S3
6. 用 Athena queries 在 S3 中的資料，Athena 會使用 Glue Data Catalog 提供的 schema 來讀懂欄位

*EventBridge : 某事件觸發後，根據規則分發給目標
*Glue Data Catalog : 資料庫 + 資料表的欄位說明書


---

https://believe67.medium.com/aws-saa%E7%B3%BB%E5%88%97-%E8%A8%8A%E6%81%AF-sns-sqs-kinesis-360c0d6b8759
https://aws.amazon.com/tw/blogs/big-data/load-cdc-data-by-table-and-shape-using-amazon-kinesis-data-firehose-dynamic-partitioning/



