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

3 分的閱讀內容
0

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

解決方案

檢查下列常見問題。

聯網問題

  • **檢查與 JDBC 資料存放區的連線功能:**AWS Glue 會在連線的子網路中建立具有私有 IP 位址的彈性網路介面。這表示 AWS Glue 無法使用公有網際網路連接至資料存放區。

  • 如果資料存放區位於 Amazon Virtual Private Cloud (Amazon VPC) 之外,則子網路的路由表必須具有公有子網路中 NAT 閘道的路由。否則,連線會逾時。
    **注意:**Amazon VPC 之外的資料存放區可能是內部部署資料存放區或具有公有主機名稱的 Amazon Relational Database Service (Amazon RDS) 資源。

  • 如果資料存放區位於 Amazon VPC 中,請確認連線的安全群組和網路存取控制清單 (network ACL) 是否允許傳入資料存放區的流量。

  • **檢查連線的安全群組:**其中一個與連線相關聯的安全群組必須具有自我參考傳入規則,該規則會對所有 TCP 連接埠開放。同樣地,其中一個安全群組也必須對所有傳出流量開放。您可以使用自我參考規則,將傳出流量限制到 Amazon VPC。如需詳細資訊,請參閱設定 VPC 以連接至 JDBC 資料存放區

  • **檢查可用 IP 位址的數量:**子網路中的可用 IP 位址數量必須大於為任務指定的資料處理單位 (DPU) 數量。這樣會允許 AWS Glue 在指定的子網路中建立彈性網路介面。

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

  • **檢查您是否有 AWS KMS VPC 端點:**如果您的 AWS Glue Data Catalog 正在加密連線,請確保您具有 AWS KMS 的路由。例如,此路由可以是 AWS KMS VPC 介面端點。如需詳細資訊,請參閱透過 VPC 端點連接至 AWS KMS

  • **檢查 AWS Glue 連線和資料庫是否使用不同的 VPC:**下列條件為 true 時,您的測試連線失敗,發生逾時錯誤:
    無法公開存取資料庫。
    AWS Glue 任務會連接到使用不同 VPC 的連線,無需 VPC 對等。
    您可以建立專用的 AWS Glue VPC,並視需要設定與其他 VPC 對應的 VPC 對等來解決此問題。如需詳細資訊,請參閱使用專用的 AWS Glue VPC 連線至多個 VPC 中的 ETL 任務並予以執行

  • **檢查與內部部署資料存放區的連線功能:**如果您要測試 AWS Glue 與內部部署資料庫的連線,則最佳實務是連接至用於連線的相同 VPC、子網路和安全群組中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。然後,從 Amazon EC2 執行個體執行下列測試。如果您在執行命令時發生問題,請檢查您的 VPN 以及 VPC、子網路、安全群組和網路存取控制清單 (ACL) 的組態。請確保這些組態不會封鎖從 VPC 到內部部署資料庫的連線功能,或從內部部署資料庫建立防火牆問題。如需詳細資訊,請參閱如何使用 AWS Glue 存取和分析內部部署資料存放區

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

驗證問題

  • **選擇正確的 IAM 角色:**您為測試連線選取的 AWS Identity and Access Management (IAM) 角色必須具有與 AWS Glue 的信任關係。這樣做的一種簡單方法是選擇服務連結角色,其具有連接至該角色的 AWSGlueServiceRole 政策。
  • **檢查連線的 IAM 角色:**如果連線密碼是使用 AWS Key Management Service (AWS KMS) 加密,請確認連線的 IAM 角色是否允許金鑰的 kms:Decrypt 動作。如需詳細資訊,請參閱在 AWS Glue 中設定加密
  • **檢查連線日誌:**測試連線的日誌位於 /aws-glue/testconnection/output 下的 Amazon CloudWatch Logs 中。檢查日誌是否有錯誤訊息。
  • 檢查 SSL 設定:如果資料存放區需要指定使用者的 SSL 連線功能,請務必在主控台上建立連線時選取需要 SSL 連線。如果資料存放區不支援 SSL,請勿選取此選項。
  • **檢查 JDBC 使用者名稱和密碼:**存取 JDBC 資料存放區的使用者必須具有足夠的存取許可。例如,AWS Glue 編目程式需要 SELECT 許可。寫入資料存放區的任務需要 INSERT、UPDATE 和 DELETE 許可。
  • **檢查 JDBC URL 語法:**語法要求會依資料庫引擎而有所不同。如需詳細資訊,請參閱新增 AWS Glue 連線,並檢閱 JDBC URL 下的範例。

其他疑難排解

  • 檢查連線類型:

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

  • 如果您需要連接至 MySQL,請注意測試連線功能僅適用於 MySQL 5.x 版。內建 AWS Glue JDBC 驅動程式不支援 MySQL 第 8 版。如果您針對比 5.x 版更新的 MySQL 版本測試連線,則可能會發生連線逾時錯誤。但是,您仍然可以使用 AWS Glue 連線透過因應措施連線至 MySQL 第 8 版。手動提供 MySQL 第 8 版及更高版本的相容驅動程式 JAR,對擷取、載入和轉換 (ETL) 任務使用連線。然後,將此 JAR 檔案載入到您的任務,類似於在 Spark 任務上載入任何 JDBC 驅動程式的方式。如需詳細資訊,請參閱在 AWS Glue 中 ETL 的連線類型和選項

  • 排除 DNS 問題:若要排除 DNS 問題,請使用資料存放區的公有或私有 IP 位址作為 AWS Glue 連線的 JDBC URL。您這樣做時,您必須取消勾選需要 SSL 連線,因為您不再使用網域名稱。

  • **檢查驅動程式是否不相容:**如果連線因為不相容的驅動程式而失敗,請在任務屬性中提供正確的驅動程式作為額外的 JAR 檔案,以及失敗的連線名稱。(您將連線名稱指定為任務屬性時,AWS Glue 會使用連線的聯網設定,例如 VPC 和子網路。) 然後,使用您在任務屬性中提供的 JAR 檔案手動建立 Apache Spark DataFrame,以覆寫預設的 AWS Glue 資料存放區驅動程式。建立 DataFrame 之後,您可以選擇將其轉換為 AWS Glue DynamicFrame。如需詳細資訊,請參閱 fromDF

  • **檢查 JDBC 資料存放區是否可以公開存取:**使用 MySQL Workbench 和 JDBC URL 連接至資料存放區。或者,啟動 Amazon EC2 執行個體,該執行個體具有用於連線的相同子網路和安全群組的 SSH 存取權。然後,使用 SSH 連接至執行個體,然後執行下列命令以測試連線功能。

$ dig hostname
$ nc -zv hostname port

相關資訊

在 AWS Glue Data Catalog 中定義連線

對 AWS Glue 中的錯誤進行疑難排解

AWS 官方
AWS 官方已更新 3 年前