為什麼我的 AWS Glue 測試連線失敗?

3 分的閱讀內容
0

我想要對在 AWS Glue 中的測試連線失敗進行疑難排解。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

若要解決 AWS Glue 中失敗的測試連線問題,請檢查您的網路和驗證連線。

網路問題

檢查與 JDBC 資料存放區的連線功能

AWS Glue 會在連線的子網路中建立具有私有 IP 位址的彈性網路介面。儲存在 Amazon Virtual Private Cloud (Amazon VPC) 之外的資料需要子網路的路由表包含公有子網路中的 NAT 閘道。否則,連線會逾時。

**注意:**在 Amazon VPC 之外儲存的資料是內部部署資料存放區或具有公有主機名稱的 Amazon Relational Database Service (Amazon RDS) 資源。

檢查連線的安全群組和網路存取控制清單 (網路 ACL) 是否允許流量傳輸到 VPC 中的資料。然後,使用 AWS Systems Manager 中的 AWSSupport-TroubleshootGlueConnection 執行手冊。如需詳細資訊,請參閱如何對具有 JDBC 來源的 AWS Glue 連線錯誤進行疑難排解?

如果連線需要 NAT 閘道或存取 AWS Secrets Manager 和 AWS Security Token Service (AWS STS),則附加端點。如需詳細資訊,請參閱連線到資料

檢查連線的安全群組

其中一個與連線相關聯的安全群組必須具有自我參考傳入規則,該規則會對所有 TCP 連接埠開放。其中一個安全群組必須對所有傳出流量開放。您可以使用自我參考規則,來限制流向 VPC 的傳出流量。如需詳細資訊,請參閱設定 Amazon VPC,以從 AWS Glue 透過 JDBC 連線到 Amazon RDS 資料存放區

檢查可用 IP 位址的數量

子網路中的可用 IP 位址數量必須大於您為該作業指定的工作器數量。這樣會允許 AWS Glue 在指定的子網路中建立網路介面。

檢查子網路是否可以存取 Amazon S3

在子網路的路由表中提供 Amazon Simple Storage Service (Amazon S3) 端點或到 NAT 閘道的路由。如需詳細資訊,請參閱錯誤: 無法在 VPC 中找到子網路 ID 的 S3 端點或 NAT 閘道

檢查您是否擁有 AWS KMS VPC 端點

若要加密 AWS Glue Data Catalog 的連線,請確保您具到 AWS Key Management Service (KMS) 的路由。例如,路由可以是 AWS KMS VPC 介面端點。如需詳細資訊,請參閱透過 VPC 端點連線至 AWS KMS

檢查 AWS Glue 連線和資料庫是否使用不同的 VPC

當以下情況成立時,您的測試連線將失敗,並發生逾時錯誤:

  • 無法公開存取資料庫。
  • AWS Glue 作業會附加到使用其他 VPC 的連線,且沒有 VPC 對等互連。

若要解決測試連線失敗,請建立專用的 AWS Glue VPC,並設定與其他 VPC 關聯的 VPC 對等互連

檢查與內部部署資料存放區的連線功能

若要檢查與 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體連線的內部部署資料庫 AWS Glue 連線,請執行下列命令:

$ telnet hostname port  
$ nc -zv hostname port  
$ dig hostname  
$ traceroute -AnT -p IP port

檢查您的 VPN 和 VPC、子網路、安全群組和網路 ACL 組態。請確保這些組態不會封鎖從 VPC 到內部部署資料庫的連線功能,也不會在內部部署資料庫中造成防火牆問題。如需詳細資訊,請參閱如何使用 AWS Glue 存取和分析內部部署資料存放區

驗證問題

選擇正確的 IAM 角色

您為測試連線選取的 AWS Identity and Access Management (IAM) 角色必須具有與 AWS Glue 的信任關係。選擇附加了 AWSGlueServiceRole 政策的服務連結角色,以建立信任關係。

檢查連線的 IAM 角色

如果您使用 AWS KMS 加密連線密碼,請檢查連線的 IAM 角色是否允許對金鑰執行 kms:Decrypt 動作。如需詳細資訊,請參閱在 AWS Glue 中設定加密

檢查連線日誌

檢查日誌是否有錯誤訊息。您可以在 /aws-glue/testconnection/output 下的 Amazon CloudWatch Logs 中找到來自測試連線的日誌。

檢查 SSL 設定

如果資料存放區要求指定使用者建立 SSL 連線,請在主控台上建立連線時,選取 Require SSL connection (需要 SSL 連線)。只有在資料存放區支援 SSL 時,才選取此選項。

檢查 JDBC 使用者名稱和密碼

使用者必須擁有足夠的權限才能存取 Java Database Connectivity (JDBC) 資料存放區。例如,AWS Glue 編目程式需要 SELECT 權限。寫入資料存放區的作業需要 INSERTUPDATEDELETE 權限。

檢查 JDBC 網址語法

語法要求會依資料庫引擎而有所不同。如需詳細資訊,請參閱AWS Glue 連線屬性,並查看 JDBC URL 下的範例。

其他提示

檢查連線類型

請確認選擇正確的連線類型。您選擇 Amazon RDSAmazon Redshift 作為連線類型時,AWS Glue 會自動填入 VPC、子網路和安全群組。

測試連線功能僅適用於 MySQL 5.x 版本。內建的 AWS Glue JDBC 驅動程式不支援 MySQL 第 8 版。如果您針對比 5.x 版本更新的 MySQL 版本測試連線,則可能會發生連線逾時錯誤。使用您的 AWS Glue 連線來連接到 MySQL 第 8 版。輸入與 MySQL 第 8 版及更新版本相容的驅動程式 Java 封存 (JAR),以在擷取、載入和轉換 (ETL) 作業上使用此連線。然後,將 JAR 檔案載入到您的作業中。如需詳細資訊,請參閱在適用於 Spark 的 AWS Glue 中 ETL 的連線類型和選項

確認問題不是由 DNS 引起的

若要確認問題是不是由 DNS 導致的,請使用資料存放區的公有或私有 IP 位址作為 AWS Glue 連線的 JDBC 網址。清除需要 SSL 連線欄位,因為不再使用網域名稱。

檢查驅動程式是否不相容

在作業屬性中提供正確的驅動程式作為額外的 JAR 檔案,以及失敗的連線名稱。您將連線名稱指定為作業屬性時,AWS Glue 會使用連線的網路設定,例如 VPC 和子網路。使用作業屬性中的 JAR 檔案建立 Spark DataFrame,以覆寫預設的 AWS Glue 資料存放區驅動程式。

您也可以將 DataFrame 轉換為 AWS Glue DynamicFrame。如需詳細資訊,請參閱 fromDF

檢查 JDBC 資料存放區是否可以公開存取

使用 MySQL Workbench 和 JDBC 網址連線至資料存放區。或者,啟動 Amazon EC2 執行個體,該執行個體具有對用於連線的相同子網路和安全群組的 SSH 存取權。然後,使用 SSH 連線到執行個體,然後執行下列命令來測試連線性:

dig hostname$ nc -zv hostname port

相關資訊

Spark 錯誤疑難排解

AWS 官方
AWS 官方已更新 3 個月前