1. 項目背景
AWS的官方文檔,關于Glue和Vpc配置部分已經比較舊了,按照官方文檔配置的流程始終跑不通,花了一番時間和波折后,才終于完整的跑通了。
在數據分析和商業智能(BI)領域,我們常需要將存儲在 Amazon S3 上的原始數據加載到 Amazon Redshift?Serverless,進行清理和轉換后,再導入 Amazon QuickSight 進行可視化分析。本文將介紹如何使用 AWS Glue 讀取 S3 文件,上傳數據到 Redshift,并導出到 QuickSight,同時解決 VPC 訪問問題。
2. 架構流程
-
數據存儲:S3 作為數據源,存放 CSV、JSON 或 Parquet 文件。
-
數據 ETL:Glue 讀取 S3 數據,轉換格式后上傳到 Redshift。
-
數據分析:Redshift 存儲清洗后的數據,提供 SQL 查詢能力。
-
可視化展示:QuickSight 連接 Redshift 進行數據分析。
-
VPC 配置:Redshift 運行在私有子網,需要 VPC 連接讓 Glue 和 QuickSight 訪問它。
? ? AWS整體流程配置順序:
? ? 配置VPC --> 創建 Redshfit 的IAM? --> 創建含Glue讀寫權限的IAM --> 創建Redshift 命名空間?? ? ? ? --> 創建Glue任務? --> Quicksight 創建VPC配置 --> 讀取Redshift
3. 詳細操作步驟
3.1??VPC配置 (最重要的一個環節)?
? 創建VPC: 其他選項按照默認的配置,手動開啟DSN設置。(或者直接使用默認的VPC)
創建子網,互聯網網關,子網和路由按照默認的做配置,之后自己需要再手動配置路由,所有的配置的時候下拉框都選擇剛剛創建的VPC
路由需要加入0.0.0.0/0 igw,才能訪問公網? (如果使用默認VPC,此處需要確認,沒有的話手動加一下)
配置網絡ACL,入站和出站規則:
然后再點擊子網關聯,編輯子網,把創建的子網加入進去
創建一個安全組,把所有流量都配置到源為安全組名稱自己的配置上
終端節點,添加vpce-svc-0704d47ebfd5f32fc,s3,redshift,sts,kms,?secretsmanager,這幾個都必須要,缺一不可。
3.2? 創建 Amazon Redshift Serverless 集群
-
登錄 AWS 控制臺,進入 Amazon Redshift Serverless控制面板。
-
創建工作組,配置需注意:
-
Performance and cost controls:選擇基本容量
-
RPU選擇這個地方是大坑,天坑,一定要慎重選擇,默認值是128, 一定要根據自己的數據大小看清楚合適的配置。(一個 RPU 提供 16 GB 內存),如果配置太高,哪怕只是執行簡單一條查詢,每次都按配置的RPU進行搜索計費。
Amazon Redshift Serverless 的計算容量? ? ?Amazon Redshift Serverless 的計費
-
網絡和安全:選擇配置的VPC,或者默認VPC,選擇 私有子網
-
安全組:選擇一個自定義的安全組,記住名稱,這個安全組后面還需要做一些配置
-
增強型 VPC 路由:打開
-
IAM
-
-
創建表結構:寫sql創建,例如:
CREATE TABLE zyytest1 (id INT PRIMARY KEY,test_f1 VARCHAR(255),create_time TIMESTAMP );
3.3? 在 S3 上傳數據
?在 S3 上傳數據?zyytest1__max__3.json
[{"id":5, "test_f1": "test_value_6", "create_time": "2025-03-26T10:00:06"},{"id":7, "test_f1": "test_value_7", "create_time": "2025-03-26T10:00:07"},{"id":8, "test_f1": "test_value_8", "create_time": "2025-03-26T10:00:08"}
]
3.4? 配置 AWS Glue 讀取 S3 數據并上傳到 Redshift
????????3.4.1??創建 Glue VPC網絡
?????????進入 AWS Glue 控制臺,選擇 Connections > Create connection
? ? ? ? ? 選擇Network --> next --> 選擇3.1 里搭建的VPC,子網,安全組,保存default_vpc。創建完之后狀態是ready就是正常的。
????????3.4.2??創建 Glue 數據連接
????????????????進入 AWS Glue 控制臺,選擇 Connections > Create connection。
? ? ? ? ? ? ? ? 選擇redshift --> 填寫name:redshift-dev,把剛剛創建的redshift用戶名命名填寫上,保存后顯示Ready,就是正常的可用狀態。
如果配置完不可用,可以點擊這個Test connection? 來測試連接是否正常
????????3.4.3??創建 Glue Visual?
? ? ? ? 點Visual ETL,選擇S3,配置路徑后,先查看schema是否正確
配置完之S3的路徑之后,可以在左下角看到schema
?正確的話進行下一步,選擇Redshift,配置數據庫連接,查看數據庫表的schema是否正確。
? ? ? ?
這個IAM記得配置上,就可以看到數據庫的schema,在左下角。
然后點擊Script,可以看到圖形化的配置生成的Script,并且可以在這個Script上,用python腳本更改配置。
到這一步就證明VPC和Redshift的數據庫都通了,接下來就可以摸索按照自己的需要,選擇用圖形化的方式配置更合適,或者用腳本的方式更合適了。
配置完保存之后運行一遍,成功的話,在redshift查詢下是否完整存入,如果缺少數據,需要手動指定schema。
????????3.4.4? 如果查詢失敗,再檢查下IAM配置,選擇合適的策略?
????????????????
????????3.4.5??Job details 檢查配置
3.5 配置QuickSight?VPC?
點擊右上角管理Quicksight --> 管理VPC鏈接 --> 添加VPC鏈接,把3.1配置的vpc,子網,安全組附加上去
3.6?配置 Amazon QuickSight 訪問 Redshift
找到數據集 --> 新數據集 -->?Redshift手動連接 ,選擇剛剛創建的vpc,配置redshift的數據庫賬號密碼,點擊驗證連接,驗證通過后,創建數據源
點擊分析,新分析,創建界面化的表格,進行DIY。
4. 總結
-
AWS Glue 負責從 S3 讀取數據,轉換后寫入 Redshift。
-
VPC 配置 解決 Glue 和 QuickSight 無法訪問 Redshift 的問題。
-
QuickSight 連接 Redshift 進行 數據可視化。
通過該流程,我們可以自動化數據管道,實現從 S3 -> Glue -> Redshift -> QuickSight 的完整數據流,為企業 BI 提供高效的數據分析能力! 🚀
參考鏈接:
AWS Glue官方文檔