AWS Glue のテスト接続が失敗するのはなぜですか?
AWS Glue で失敗したテスト接続をトラブルシューティングしたいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
AWS Glue で失敗したテスト接続をトラブルシューティングするために、ネットワークと認証接続を確認します。
ネットワークに関する問題
JDBC データストアへの接続を確認する
AWS Glue は、接続のサブネット内のプライベート IP アドレスを使用して Elastic ネットワークインターフェイスを作成します。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 へのアウトバウンドトラフィックを制限できます。詳細については、「AWS Glue から Amazon RDS データストアへの JDBC 接続用に Amazon VPC を設定する」を参照してください。
使用できる IP アドレスの数を確認する
サブネット内の使用できる IP アドレスの数は、ジョブで指定されたワーカーの数より多い必要があります。この条件が満たされていると、AWS Glue は指定されたサブネット内でネットワークインターフェイスを作成することができます。
サブネットが Amazon S3 にアクセスできることを確認する
サブネットのルートテーブルで Amazon Simple Storage Service (Amazon S3) エンドポイントまたは NAT ゲートウェイへのルートを指定します。詳細については、「Error: Could not find S3 endpoint or NAT Gateway for subnetId in VPC (VPC 内に subnetId に対応する S3 エンドポイントまたは NAT ゲートウェイがありません)」を参照してください。
AWS KMS VPC エンドポイントがあるかどうかを確認する
AWS Glue データカタログで接続を暗号化するには、AWS Key Management Service (AWS 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 で暗号化を設定する」を参照してください。
接続ログを確認する
ログにエラーメッセージがあるかどうかを確認します。テスト接続からのログは、Amazon CloudWatch Logs の /aws-glue/testconnection/output にあります。
SSL 設定を確認する
データストアで、指定されたユーザーに SSL 接続を要求する場合は、コンソールで接続を作成する際に [SSL 接続が必要] を選択します。このオプションは、データストアが SSL をサポートしている場合にのみ選択してください。
JDBC のユーザー名とパスワードを確認する
ユーザーには、Java Database Connectivity (JDBC) データストアにアクセスするのに十分なアクセス許可が必要です。たとえば、AWS Glue クローラーには SELECT のアクセス許可が必要です。データストアに書き込むジョブには、INSERT、UPDATE、DELETE のアクセス許可が必要です。
JDBC URL の構文を確認する
構文の要件は、データベースエンジンによって異なります。詳細については、「AWS Glue JDBC 接続のプロパティ」を参照し、「JDBC URL」にある例を確認してください。
その他のヒント
接続タイプを確認する
正しい接続タイプを選択していることを確認します。[接続タイプ] に Amazon RDS または Amazon Redshift を選択すると、AWS Glue によって VPC、サブネット、セキュリティグループが自動的に入力されます。
テスト接続機能は MySQL 5.x バージョンでのみ機能します。組み込みの AWS Glue JDBC ドライバーは MySQL バージョン 8 をサポートしていません。バージョン 5.x よりも新しい MySQL バージョンで接続をテストした場合、接続タイムアウトエラーが発生する可能性があります。AWS Glue 接続を使用して MySQL バージョン 8 に接続します。MySQL バージョン 8 以降と互換性のあるドライバーの Java Archive (JAR) を入力し、抽出、ロード、変換 (ETL) ジョブでの接続を使用します。次に、JAR ファイルをジョブにロードします。詳細については、「AWS Glue for Spark での ETL に使用する接続タイプとオプション」を参照してください。
DNS が問題の原因ではないことを確認する
DNS が問題の原因になっていないことを確認するには、データストアのパブリック IP アドレスまたはプライベート 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 を使用してデータストアに接続します。または、接続に使用するものと同じサブネットとセキュリティグループに SSH でアクセスできる Amazon EC2 インスタンスを起動します。次に、SSH を使用してインスタンスに接続し、次のコマンドを実行して接続をテストします。
dig hostname$ nc -zv hostname port
関連情報
関連するコンテンツ
- 質問済み 2ヶ月前lg...
- 質問済み 6ヶ月前lg...
- 質問済み 6ヶ月前lg...
- AWS公式更新しました 2ヶ月前