JDBC/ODBC 드라이버로 Amazon Athena에 연결할 때 ‘Amazon Athena와 통신하는 동안 오류가 발생했습니다’ 오류 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 5월 5일

Amazon Athena를 Java 데이터베이스 연결(JDBC)/개방형 데이터베이스 연결(ODBC) 드라이버와 함께 사용할 때 연결 시간 초과 문제가 발생합니다.

-또는-

비즈니스 인텔리전스 도구에서 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 또는 테스트 네트워크 연결을 사용하여 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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?