JDBC/ODBC ドライバーで Amazon Athena に接続する際の「An error occurred while communicating with Amazon Athena」エラーをトラブルシューティングする方法を教えてください。

最終更新日: 2021 年 5 月 5 日

Java データベース接続 (JDBC)/オープンデータベース接続 (ODBC) ドライバで Amazon Athena を使用するときに接続タイムアウトの問題が発生します。

- または -

ビジネスインテリジェンスツールで Athena クエリの結果を表示できません。

解決方法

このエラーの最も一般的な理由は、JDBC/ODBC ドライバーをインストールしたホストと Athena または AWS Glue エンドポイントの間の接続の問題です。

このエラーのトラブルシューティングを行うには、JDBC/ODBC ドライバーをインストールしたホストと Athena/AWS Glue の間の接続を確認します。

Athena への接続

ホストは、Athena パブリックサービスエンドポイントまたは Athena プライベートエンドポイントのいずれかを使用して Athena に接続できます。エンドポイントの設定の詳細については、「コマンドラインオプション」およびBoto3 のドキュメントを参照してください。

  • Athena はポート 443 を使用してホストに接続します。
  • Athena のストリーミング API はポート 444 を使用してクエリ結果をストリーミングします。JDBC/ODBC ドライバーを使用する場合、Athena はこのポートを使用して、クライアントホストにインストールされている JDBC/ODBC ドライバーにクエリ結果をストリーミングします。したがって、JDBC/ODBC ドライバーを使用して Athena に接続する場合は、このポートのブロックを解除します。このポートがブロックされている場合、ビジネスインテリジェンスツールがタイムアウトすることや、クエリの実行時にクエリ結果を表示できないことがあります。

Athena パブリックリージョンのエンドポイント

Athena パブリックサービスエンドポイント (athena.us-east-1.amazonaws.com など) を使用している場合は、接続しようとしているリージョンに基づいてエンドポイントを更新してください。

  • Windows を使用している場合は、Telnet または Test-NetConnection を使用して、Athena パブリックエンドポイントへの接続をテストします。
    注意: 同様のコマンドを使用してポート 444 への接続をテストできます。
telnet athena.us-east-1.amazonaws.com 443

– または –

Test-NetConnection -Computer_Name athena.us-east-1.amazonaws.com -Port 443
  • Linux または MAC オペレーティングシステムを使用している場合は、次のようなコマンドを実行して Athena の接続を確認します。
    注意: 同様のコマンドを使用して、ポート 444 への接続をテストできます。
nc -v athena.us-east-1.amazonaws.com 443

Athena プライベートインターフェイス VPC エンドポイント

  • パブリックサービスエンドポイントではなく Athena プライベートエンドポイントを使用している場合は、インターフェイス VPC エンドポイントへの接続をテストします。
  • エンドポイント固有の DNS ホスト名がある場合は、エンドポイント固有の DNS ホスト名への接続を確認します。そうでない場合は、デフォルトの DNS ホスト名への接続を確認します。
    • エンドポイントのプライベート DNS を有効にしている場合は、ホスト名に vpce- .athena.us-east-1.vpce.amazonaws.com を使用します。
    • エンドポイントのプライベート DNS をオフにしている場合は、ホスト名に athena.us-east-1.amazonaws.com を使用します。
  • Windowsを使用している場合は、次のコマンドを使用します。ポート 443 のテストに加えて、ポート 444 の接続もテストしてください。
    注意: telnet コマンドの実行に問題がある場合は、Test-NetConnection を使用して接続をテストします。
    エンドポイントのプライベート DNS をオフにしている場合は、以下のコマンドを使用できます。
telnet vpce-<name>.athena.us-east-1.vpce.amazonaws.com 443

– または –

Test-NetConnection -Computer_Name vpce-<name>.athena.us-east-1.vpce.amazonaws.com -Port 443
  • Linux/Mac を使用している場合は、次のようなコマンドを実行して Athena の接続を確認します。接続に成功すると、「Connection to athena.us-east-1.amazonaws.com port 443 [tcp/https] succeeded」のようなメッセージが表示されます。
nc -v vpce-<name>.athena.us-east-1.vpce.amazonaws.com 443
  • エンドポイントのプライベート DNS 構成に従って、ビジネスツール構成で適切な JDBC 接続 URL を使用します。
    • プライベート DNS を無効にしている場合は、接続文字列「jdbc:awsathena://vpce-.athena.us-east-1.vpce.amazonaws.com:443」を使用します。
    • プライベート DNS を有効にしている場合は、接続文字列「 jdbc:awsathena://athena.us-east-1.amazonaws.com:443」を使用します。
  • VPC エンドポイントにアタッチされたセキュリティグループで、JDBC/ODBC ドライバーをインストールしたホストからのトラフィックが許可されていることを確認します。
  • ポート 444 がブロックされていないことを確認してください。AWS PrivateLink エンドポイントを使用して Athena に接続する場合は、AWS PrivateLink エンドポイントにアタッチされたセキュリティグループがポート 444 のインバウンドトラフィックに対して開かれていることを確認してください。Athena はポート 444 を使用してクエリ結果をストリーミングします。ポート 444 がブロックされている場合、結果はクライアントホストにストリーミングされません。このような状況では、「[Simba][AthenaJDBC](100123) An error has occurred.Exception during column initialization」のようなエラーメッセージが表示されることがあります その場合、ビジネスインテリジェンスツールが応答を停止し、クエリの結果が表示されないことがあります。

AWS Glue への接続

JDBC/ODBC ドライバーをインストールしたホストと AWS Glue の間の接続を確認してください。ホストは、AWS Glue パブリックサービスエンドポイントまたは AWS Glue プライベートサービスエンドポイントのいずれかを使用して AWS Glue に接続できます。詳細については、「AWS Glue サービスエンドポイント」を参照してください。Athena は、AWS Glue データカタログを使用して、アカウント内の Amazon S3 データのテーブルメタデータを格納および取得します。したがって、JDBC/ODBC ドライバーは AWS Glue カタログに正常に接続して、テーブルのメタデータ情報を取得する必要があります。

AWS Glue パブリックサービスエンドポイントを使用している場合は、次のようなコマンドを使用して接続をテストします。

注意: オペレーティングシステムに基づいてポートの接続を確認するには、Test-NetConnection または nc を使用する必要があることがあります。

telnet glue.us-east-1.amazonaws.com 443

AWS Glue VPC インターフェイスエンドポイントを使用している場合は、次のようなコマンドを使用して接続をテストします。

注意: エンドポイントのプライベート DNS を無効にしている場合は、次のコマンドを使用します。

telnet vpce-<name>.glue.us-east-1.vpce.amazonaws.com 443

エンドポイントのプライベート DNS を有効にしている場合は、次のコマンドを使用します。

telnet glue.us-east-1.amazonaws.com 443

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?