connecting-to-data-source

connecting-to-data-source

熱門

建立與疑難排解至 JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS)、Redshift、Snowflake 及 BigQuery 的 AWS Glue 連線。收集使用者的連線提示,自動探索現有的連線與 RDS/Redshift 候選來源,在 Secrets Manager 或 IAM DB 驗證中註冊憑證,設定 VPC 並進行測試。觸發條件:connect to database、set up Glue connection、register data source、connect to Snowflake/BigQuery/RDS、connection timeout、test connection、troubleshoot connection。請勿用於搬移資料(請改用 ingesting-into-data-lake)、建立資料表(請改用 creating-data-lake-table)、執行查詢(請改用 querying-data-lake)、目錄探索(請改用 exploring-data-catalog)或 SaaS(Salesforce、ServiceNow、SAP、MongoDB、Kafka)。

2147星標
202分支
更新於 2026/7/27
SKILL.md
唯讀
名稱
connecting-to-data-source
描述

建立與疑難排解至 JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS)、Redshift、Snowflake 及 BigQuery 的 AWS Glue 連線。收集使用者的連線提示,自動探索現有的連線與 RDS/Redshift 候選來源,在 Secrets Manager 或 IAM DB 驗證中註冊憑證,設定 VPC 並進行測試。觸發條件:connect to database、set up Glue connection、register data source、connect to Snowflake/BigQuery/RDS、connection timeout、test connection、troubleshoot connection。請勿用於搬移資料(請改用 ingesting-into-data-lake)、建立資料表(請改用 creating-data-lake-table)、執行查詢(請改用 querying-data-lake)、目錄探索(請改用 exploring-data-catalog)或 SaaS(Salesforce、ServiceNow、SAP、MongoDB、Kafka)。

版本
1

連接到資料源

向 AWS Glue 註冊外部資料源,以便下游 Skill(ingesting-into-data-lake)能從中搬移資料。Glue 連線會儲存單一資料源的網路設定、驅動程式與憑證參照。每個資料源只需建立一次,即可在多個作業中重複使用。

設計理念

連線是具名的管道(named pipe),而非資料管道(pipeline)。 本 Skill 旨在產生經過測試且可重複使用的 Glue 連線,本身並不搬移資料。

常見工作

連線時,你必須使用 AWS MCP 伺服器工具執行命令——這些工具提供驗證、沙盒化執行與稽核紀錄。僅在 MCP 無法使用時,才退回使用 AWS CLI。在執行每個步驟之前,你必須先向使用者說明。

工作流程

1. 驗證依賴項與上下文

  • 必須檢查 AWS MCP 工具或 AWS CLI 是否可用,若缺少請通知使用者
  • 必須確認目標 AWS 區域,並透過 aws sts get-caller-identity 驗證憑證

2. 資料源分類

詢問使用者想要連接的資料源類型,或從提示中推論:

使用者提到... 資料源類型 連線類型 參考文件
"Oracle"、"SQL Server"、"Postgres"、"MySQL"、"RDS <引擎>" JDBC 資料庫 JDBC jdbc-setup.md
"Redshift"、"my cluster"、"my data warehouse on AWS" Redshift JDBC jdbc-setup.md (Redshift 區段)
"Snowflake" Snowflake SNOWFLAKE snowflake-setup.md
"BigQuery"、"Google analytics warehouse" BigQuery BIGQUERY bigquery-setup.md

如果使用者提到 DynamoDB 或本機檔案,請停止並說明:Glue 可直接讀取 DynamoDB 而無需連線;本機檔案則屬於 ingesting-into-data-lake Skill 的本機上傳流程。

3. 向使用者收集連線提示

必須詢問使用者能提供的提示——切勿自行猜測。

適用於所有資料源:

  • 期望的連線名稱(小寫字母、連字號:oracle-prod-salessnowflake-analytics
  • 現有的 Secrets Manager secret,或另外建立一個
  • 資料源是否可從 Glue VPC 存取(同 VPC、Peering、VPN、Direct Connect)

JDBC: 主機名稱/端點(hostname/endpoint)、通訊埠(port)、資料庫、是否為 RDS/Aurora/自管資料庫、是否啟用 IAM 資料庫驗證(Aurora/RDS MySQL/Postgres)、是否需要 SSL。

Snowflake: 帳戶識別碼(account identifier)、Warehouse、角色(role)、預設資料庫、驗證方式(密碼、金鑰對、OAuth)。

BigQuery: GCP 專案 ID、位置(location)、是否已設定服務帳戶 JSON。

4. 探索現有連線與候選資料源

在建立之前先檢查已存在哪些資源。

現有的 Glue 連線:

aws glue get-connections --filter ConnectionType=<TYPE> --region <REGION>

若已有合適的連線,請與使用者確認並直接跳至步驟 7。

帳戶中的候選資料源(僅限 JDBC/Redshift):

  • RDS:aws rds describe-db-instances
  • Aurora:aws rds describe-db-clusters
  • Redshift:aws redshift describe-clusters

將候選項目展示給使用者並由其選擇。請參閱 discovery.md

5. 註冊憑證

必須鼓勵使用 AWS Secrets Manager,而非明文密碼。在支援的情況下(Aurora/RDS MySQL 與 PostgreSQL、Redshift),你應該優先採用 IAM 資料庫驗證。請參閱 credential-security.md

  • 建立新的 Secrets Manager secret 之前,你必須先與使用者確認
  • 絕不可將明文憑證寫入對話或日誌紀錄中
  • 若使用 IAM 資料庫驗證,則無需建立 Secret

6. 建立 Glue 連線

請遵循各資料源專用的參考文件設定連線屬性:

aws glue create-connection --connection-input '<JSON>' --region <REGION>

私有資料源需要設定 PhysicalConnectionRequirements(包含 SubnetId、SecurityGroupIdList、AvailabilityZone)。請參閱 network-setup.md

7. 測試連線

在交付之前你必須進行測試。測試分為兩個階段:快速 API 檢查,以及引擎層級的驗證。

階段 A:Glue TestConnection(網路與憑證健康檢查)
aws glue test-connection --connection-name <NAME> --region <REGION>

這能驗證 Glue 是否能連通資料源並完成驗證。但這不代表連線能在使用者預計使用的查詢引擎中完整運作。

階段 B:引擎層級驗證

TestConnection 通過後,透過執行最少量的查詢,驗證連線是否能在使用者預期的引擎中運作:

  • Glue ETL(預設): 執行冒煙測試(smoke-test)Glue 作業,透過連線讀取一筆列資料。請參閱 troubleshooting.md
  • Athena: 若使用者打算透過 Athena 使用聯合連接器(federated connector)進行查詢,請透過 Athena 連線執行 SELECT 1,以確認基於 Lambda 的連接器能連通資料源。
  • Glue Crawler: 若使用者打算對資料源進行爬取(crawl),請針對單一資料表執行測試爬取。

階段 B 能捕捉 TestConnection 忽略的問題:作業執行時的驅動程式相容性、目錄(Catalog)設定、Spark 層級的序列化,以及特定引擎的驗證流程(例如:Snowflake 的 SNOWFLAKE 類型可在 ETL 中運作,但無法透過 JDBC Crawler 使用)。

若兩個階段皆成功,請通知使用者連線名稱已準備好供 ingesting-into-data-lake 使用。若任一階段失敗,請進入步驟 8。

8. 疑難排解(僅在測試失敗時)

依序診斷:網路、憑證、驅動程式。請參閱 troubleshooting.md

限制條件:

  • 在歸咎於憑證問題之前,你必須先檢查 VPC 路由、安全性群組(Security Group)與 S3 VPC 端點
  • 必須確認 Glue 角色擁有讀取 Secrets Manager secret 的權限
  • 未經使用者確認,你絕不可輪替(rotate)憑證

引數路由(Argument Routing)

  • 無引數:以互動方式引導完成步驟 1 至 7
  • 資料源類型關鍵字(例如 snowflakeoracle):預先填入類型並直接跳至步驟 2
  • 現有連線名稱:直接跳至步驟 7(測試),若失敗則進入步驟 8
  • 主機名稱或 RDS 端點:預先填入候選項目並直接跳至步驟 4

常見陷阱與注意事項

  • Glue 的 SNOWFLAKE 連線類型與針對 Snowflake 設定的 JDBC 不同。對於 Spark ETL 作業,你必須使用 SNOWFLAKE 類型;切勿使用 JDBC。
  • 連線名稱建立後即無法修改(immutable),請謹慎選擇。
  • PhysicalConnectionRequirements.AvailabilityZone 必須與子網路的可用區域(AZ)完全一致,否則連線將在作業執行時失敗(而非建立時失敗)。
  • IAM 資料庫驗證權杖(Token)會在 15 分鐘後過期。Glue 作業每次連線時都會產生新的權杖;請勿快取。
  • 在私有資料源連線使用的 VPC 中,必須存在 S3 VPC 閘道端點(Gateway Endpoint)。若缺少該端點,Glue 作業將無法讀取其腳本或將結果寫入 S3。

疑難排解

錯誤訊息 可能原因 解決方法
Connect timed out VPC 路由問題、安全性群組規則未設定,或缺少 NAT 閘道 請參閱 troubleshooting.md
Access denied for user / ORA-01017 憑證錯誤、缺少 Secrets Manager 存取權限,或 IAM 資料庫驗證設定有誤 請參閱 troubleshooting.md
No suitable driver found 未設定自訂驅動程式 JAR 或類別名稱(class name)錯誤 請參閱 troubleshooting.md
SSL handshake failed Glue 與資料源之間的 JDBC_ENFORCE_SSL 設定不符合 請參閱 troubleshooting.md
UnableToFindVpcEndpoint 缺少 S3 VPC 端點 在該連線所屬的 VPC 中建立 S3 閘道端點(Gateway Endpoint)

參考文件