AWS Glue テスト接続に失敗しました

最終更新日: 2019 年 11 月 7 日

AWS Glue で失敗したテスト接続のトラブルシューティング方法を教えてください。

解決方法

次の一般的な問題を確認します。

ネットワーキングの問題

  • JDBC データストアへの接続を確認する: AWS Glue は、接続のサブネットにプライベート IP アドレスを持つ Elastic Network Interface を作成します。つまり、AWS Glue はパブリックインターネットを使用してデータストアに接続できません。データストアが VPC の外部にある場合 (オンプレミスのデータストアや、パブリックホスト名を持つ Amazon Relational Database Service (Amazon RDS) リソースなど)、サブネットのルートテーブルには、パブリックサブネット内の NAT ゲートウェイへのルートが必要です。それ以外の場合、接続がタイムアウトします。データストアが VPC にある場合は、接続のセキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) でデータストアへのトラフィックが許可されていることを確認してください。
  • 接続のセキュリティグループを確認する: 接続に関連付けられたセキュリティグループの 1 つに、すべての TCP ポートに対して開かれている自己参照型のインバウンドルールが必要です。同様に、セキュリティグループの 1 つがすべてのアウトバウンドトラフィックに対して開かれている必要もあります。自己参照型ルールを使用して、VPC へのアウトバウンドトラフィックを制限できます。詳細については、「JDBC データストアに接続するための VPC の設定」をご参照ください。
  • 空き IP アドレスの数を確認する: サブネットの空き IP アドレスの数は、ジョブに指定されたデータ処理ユニット (DPU) の数より大きくする必要があります。これで、AWS Glue は指定されたサブネットに Elastic Network Interface を作成できます。
  • サブネットが Amazon Simple Storage Service (Amazon S3) にアクセスできることを確認する: Amazon S3 エンドポイント を指定するか、サブネットのルートテーブルで NAT ゲートウェイへのルートを指定します。詳細については、「エラー: VPC の subnetId に S3 エンドポイントまたは NAT ゲートウェイが見つかりませんでした」をご参照ください。

認証の問題

  • 正しい IAM ロールを選択する: テスト接続用に選択した AWS Identity and Access Management (IAM) ロールには、AWS Glue との信頼関係が必要です。これを行う簡単な方法は、AWSGlueServiceRole ポリシーを添付したサービスにリンクされたロールを選択することです。
  • 接続パスワードが AWS Key Management Service (AWS KMS) で暗号化されている場合: 接続の IAM ロールで、キーの kms:Decrypt アクションが許可されていることを確認します。詳細については、「AWS Glue での暗号化のセットアップ」をご参照ください。
  • 接続ログを確認する: テスト接続からのログは /aws-glue/testconnection/output 下の Amazon CloudWatch Logs にあります。ログでエラーメッセージを確認します。
  • SSL 設定を確認する: データストアが指定されたユーザーの SSL 接続を必要とする場合は、コンソールで接続を作成するときに [Require SSL connection] を必ず選択してください。データストアが SSL をサポートしていない場合は、このオプションを選択しないでください。
  • JDBC のユーザー名とパスワードを確認する: JDBC データストアにアクセスしているユーザーは、適切なアクセス許可が必要です。たとえば、AWS Glue クローラには SELECT のアクセス許可が必要です。データストアに書き込むジョブには、INSERT、UPDATE、DELETE のアクセス許可が必要です。
  • JDBC URL 構文を確認する: 構文要件はデータベースエンジンによって異なります。詳細については、「データストアに接続を追加する」および JDBC URL の例をご参照ください。

追加のトラブルシューティング

  • 接続タイプ: 正しい接続タイプを選択していることを確認してください。Amazon RDS または Amazon Redshift を [Connection type] で選択すると、AWS Glue によって VPC、サブネット、およびセキュリティグループが自動的に入力されます。
  • DNS の問題: DNS の問題を除外するには、AWS Glue 接続の JDBC URL としてデータストアのパブリック IP アドレスまたはプライベート IP アドレスを使用します。その場合は、ドメイン名を使用しなくなったため、[Require SSL connection] のチェックを外す必要があります。
  • 互換性のないドライバー: 互換性のないドライバーのために接続が失敗した場合は、失敗した接続名とともに、ジョブのプロパティで追加の JAR ファイルとして正しいドライバーを指定します。(ジョブプロパティとして接続名を指定すると、AWS Glue は VPC やサブネットなどの接続のネットワーク設定を使用します。) 次に、ジョブプロパティで指定した JAR ファイルを使用して Apache Spark データフレームを手動で作成して、デフォルトの AWS Glue データストアドライバを上書きします。データフレームを作成したら、オプションで AWS Glue 動的フレームに変換できます。詳細については、fromDF をご参照ください。
  • JDBC データストアがパブリックでアクセス可能である場合: MySQL Workbench および JDBC URL を使用して、データストアに接続します。または、接続に使用したものと同じサブネットとセキュリティグループに SSH アクセスできる Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動します。次に、SSH を使用してインスタンスに接続し、次のコマンドを実行して接続をテストします。
$ dig hostname
$ nc -zv hostname port