
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)。
建立與疑難排解至 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)。
連接到資料源
向 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-sales、snowflake-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
- 資料源類型關鍵字(例如
snowflake、oracle):預先填入類型並直接跳至步驟 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) |
參考文件
- jdbc-setup.md -- Oracle、SQL Server、PostgreSQL、MySQL、RDS、Redshift
- snowflake-setup.md -- Glue
SNOWFLAKE類型、驗證模式 - bigquery-setup.md -- Glue
BIGQUERY類型、GCP 服務帳戶 - discovery.md -- 尋找現有連線與候選資料源
- credential-security.md -- Secrets Manager 與 IAM 資料庫驗證
- network-setup.md -- VPC、子網路、安全性群組、端點
- troubleshooting.md -- 連線錯誤與診斷流程





