Amazon Athena
사용 설명서

이전 버전의 JDBC 드라이버 사용

JDBC 드라이버의 최신 버전인 버전 2.0.6을 사용하는 것이 좋습니다. 자세한 내용은 Using Athena with the JDBC Driver(Athena를 JDBC 드라이버와 함께 사용)을 참조하십시오. 이전 버전이 필요하다면 이 섹션의 절차에 따라 드라이버를 다운로드하여 구성하십시오.

JDBC 드라이버 이전 버전은 2.0.5 및 2.0.2입니다.

JDBC 드라이버 버전 1.1.0도 다운로드할 수 있지만, 드라이버 현재 버전으로 마이그레이션할 것을 강력하게 권장합니다. 자세한 내용은 JDBC 드라이버 마이그레이션 가이드를 참조하십시오.

JDBC 드라이버 버전 1.0.1 및 이전 버전은 사용되지 않습니다.

이전 버전의 JDBC 드라이버 사용

  1. 필요한 드라이버 버전을 다운로드합니다.

    이전 버전의 JDBC 드라이버 다운로드 링크

    드라이버 버전 2.0.5 다운로드 링크
    JDBC 2.0.5는 JDBC 4.1 및 JDK 7.0 이상과 호환 AthenaJDBC41-2.0.5.jar
    JDBC 2.0.5는 JDBC 4.2 및 JDK 8.0 이상과 호환 AthenaJDBC42-2.0.5.jar
    드라이버 버전 2.0.2 다운로드 링크
    JDBC 2.0.2은 JDBC 4.1 및 JDK 7.0 이상과 호환 AthenaJDBC41-2.0.2.jar
    JDBC 2.0.2은 JDBC 4.2 및 JDK 8.0 이상과 호환 AthenaJDBC42-2.0.2.jar
  2. 1단계에서 다운로드한 드라이버의 출시 정보, 라이선스 계약공지를 다운로드합니다.

  3. 다음 명령과 함께 AWS CLI를 사용합니다.

    aws s3 cp s3://path_to_the_driver [local_directory]
  4. 드라이버를 사용하려면 다음 설명서를 확인하십시오.

JDBC 드라이버 버전 1.1.0용 지침

이 단원에는 JDBC 드라이버 1.1.0 버전의 지침이 포함되어 있습니다. 최신인 (그리고 지원되는) JDBC 드라이버 버전으로 마이그레이션하지 않았을 때만 이 지침을 사용하십시오.

JDBC 4.1 및 JDK 7.0과 호환되는 JDBC 드라이버 버전 1.1.0(AthenaJDBC41-1.1.0.jar)을 다운로드합니다. 또한 드라이버의 드라이버 라이선스 타사 라이선스도 다운로드하십시오. AWS CLI를 aws s3 cp s3://path_to_the_driver [local_directory] 명령어와 함께 사용한 다음 이 단원의 남은 지침을 활용하십시오.

참고

다음 지침은 JDBC 버전 1.1.0 이하에만 적용됩니다.

JDBC 드라이버 버전 1.1.0: 연결 문자열 지정

사용자 지정 애플리케이션에서 JDBC 드라이버 연결 URL을 지정하려면 다음 형식의 문자열을 사용하십시오.

jdbc:awsathena://athena.{REGION}.amazonaws.com:443

여기에서 {REGION}us-west-2 같은 리전 식별자입니다. Athena 리전에 대한 정보는 리전을 참조하십시오.

JDBC 드라이버 버전 1.1.0: JDBC 드라이버 클래스 이름 지정

사용자 지정 애플리케이션에서 드라이버를 사용하려면 Java 클래스 경로를 Amazon S3 https://s3.amazonaws.com/athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/AthenaJDBC41-1.1.0.jar에서 다운로드한 JAR 파일의 위치로 설정합니다. 그러면 JAR의 클래스를 사용할 수 있습니다. 기본 JDBC 드라이버 클래스는 com.amazonaws.athena.jdbc.AthenaDriver입니다.

JDBC 드라이버 버전 1.1.0: JDBC 드라이버 자격 증명 입력

Athena 및 Amazon S3 버킷 같은 AWS 서비스와 리소스에 대한 액세스를 얻으려면 애플리케이션에 JDBC 드라이버 자격 증명을 입력합니다.

애플리케이션에 Java 코드 형식의 자격 증명을 입력하려면:

  1. AWSCredentialsProvider를 구현하는 클래스를 사용합니다.

  2. 클래스 이름과 동일한 JDBC 속성 aws_credentials_provider_class를 설정하고 클래스 경로에 포함합니다.

  3. 생성자 파라미터를 포함하려면 다음 구성 옵션 단원에서 지정한 대로 JDBC 속성 aws_credentials_provider_arguments를 설정합니다.

SQL Workbench 같은 BI 도구에 자격 증명을 제공하는 다른 방법은, JDBC에 사용되는 자격 증명을 AWS 액세스 키로, AWS 비밀 키를 사용자 및 암호용 JDBC 속성에 각각 제공하는 것입니다.

JDBC 드라이버를 통해 연결하고 프로필에 사용자 지정 액세스 정책을 연결한 사용자는 Amazon Athena API 참조의 정책 작업 이외의 정책 작업에 대한 권한이 필요합니다.

1.1.0 버전의 JDBC 드라이버에 대한 정책

JDBC 사용자가 정책별 작업 집합을 수행하도록 허용해야 합니다. 다음 작업이 허용되지 않으면 사용자가 데이터베이스와 테이블을 볼 수 없습니다.

  • athena:GetCatalogs

  • athena:GetExecutionEngine

  • athena:GetExecutionEngines

  • athena:GetNamespace

  • athena:GetNamespaces

  • athena:GetTable

  • athena:GetTables

JDBC 드라이버 버전 1.1.0: JDBC 드라이버 옵션 구성

JDBC 드라이버 버전 1.1.0에 대해 다음 옵션을 구성할 수 있습니다. 이 버전의 드라이버를 사용하면 표준 JDBC URL 구문(예: jdbc:awsathena://athena.us-west-1.amazonaws.com:443?max_error_retries=20&connection_timeout=20000)을 사용하여 파라미터를 전달할 수도 있습니다.

1.0.1 버전의 JDBC 드라이버에 대한 옵션

속성 이름 설명 기본값 필요 사항
s3_staging_dir 쿼리 출력이 작성되는 S3 위치(예: s3://query-results-bucket/folder/)는 Athena 콘솔 https://console.aws.amazon.com/athena/설정에서 설정됩니다. 그러면 JDBC 드라이버가 Athena에 결과를 읽고 데이터 행을 사용자에게 다시 제공할 것을 요청합니다. 해당 사항 없음
query_results_encryption_option s3_staging_dir에서 지정한 디렉터리에 사용할 암호화 방법입니다. 지정되지 않은 경우 위치가 암호화되지 않습니다. 유효 값은 SSE_S3, SSE_KMSCSE_KMS입니다. 해당 사항 없음 아니요
query_results_aws_kms_key

query_results_encryption_option에서 SSE-KMS 또는 CSE-KMS를 지정하는 경우 사용되는 AWS 고객 마스터 키(CMK)의 ID입니다. 예: 123abcde-4e56-56f7-g890-1234h5678i9j

해당 사항 없음 아니요
aws_credentials_provider_class AWSCredentialsProvider 인터페이스를 구현하는 자격 증명 공급자 클래스 이름입니다. 해당 사항 없음 아니요
aws_credentials_provider_arguments 쉼표로 구분된 값으로 표현되는, 자격 증명 공급자 생성자에 대한 인수입니다. 해당 사항 없음 아니요
max_error_retries

JDBC 클라이언트가 Athena에 요청을 시도할 수 있는 최대 재시도 횟수입니다.

10 아니요
connection_timeout 시도가 종료되기 전에 Athena와(과) 연결하기 위해 사용할 수 있는 최대 시간(밀리 초)입니다. 10,000개 아니요
socket_timeout Athena(으)로 데이터를 보내기 위해 소켓을 기다리는 최대 시간(밀리 초)입니다. 10,000개 아니요
retry_base_delay Athena 연결을 위한 재시도 사이의 최소 지연 시간(밀리초)입니다. 100 아니요
retry_max_backoff_time Athena 연결을 위한 재시도 사이의 최대 지연 시간(밀리초)입니다. 1000 아니요
log_path Athena JDBC 드라이버 로그의 로컬 경로입니다. 로그 경로가 입력되지 않으면 로그 파일이 생성되지 않습니다. 해당 사항 없음 아니요
log_level Athena JDBC 드라이버 로그의 로그 수준입니다. 유효한 값: INFO, DEBUG, WARN, ERROR, ALL, OFF, FATAL, TRACE. 해당 사항 없음 아니요

예제: JDK에서 1.1.0 버전의 JDBC 드라이버 사용

다음 코드 예제는 Java 애플리케이션에서 JDBC 드라이버 버전 1.1.0을 사용하는 방법을 보여 줍니다. 이러한 예제는 classpath에 AWS JAVA SDK(예제에서 언급한 인증 패키지(com.amazonaws.auth.*)를 포함하는 aws-java-sdk-core 모듈)가 포함되어 있다고 가정합니다.

예제: 드라이버 버전 1.0.1 만들기

Properties info = new Properties(); info.put("user", "AWSAccessKey"); info.put("password", "AWSSecretAccessKey"); info.put("s3_staging_dir", "s3://S3 Bucket Location/"); info.put("aws_credentials_provider_class","com.amazonaws.auth.DefaultAWSCredentialsProviderChain"); Class.forName("com.amazonaws.athena.jdbc.AthenaDriver"); Connection connection = DriverManager.getConnection("jdbc:awsathena://athena.us-east-1.amazonaws.com:443/", info);

다음 예제는 이전 버전의 JDBC 드라이버와 AWSCredentialsProvider 인터페이스를 구현하는 자격 증명 공급자를 사용하는 여러 방법을 보여 줍니다.

예제: JDBC 드라이버 1.0.1의 자격 증명 공급자 사용

Properties myProps = new Properties(); myProps.put("aws_credentials_provider_class","com.amazonaws.auth.PropertiesFileCredentialsProvider"); myProps.put("aws_credentials_provider_arguments","/Users/myUser/.athenaCredentials");

이 경우 /Users/myUser/.athenaCredentials 파일에 다음이 포함되어야 합니다.

accessKey = ACCESSKEY secretKey = SECRETKEY

오른쪽 부분을 해당 계정의 AWS 액세스 및 보안 키로 바꿉니다.

예제: 자격 증명 공급자에 여러 인수 사용

이 예제는 세션 토큰 외에 액세스 및 보안 키를 사용하는 CustomSessionsCredentialsProvider 자격 증명 공급자의 예를 보여 줍니다. CustomSessionsCredentialsProvider은(는) 예제로만 제공되며 드라이버에 포함되어 있지 않습니다. 클래스 서명은 다음과 같습니다.

public CustomSessionsCredentialsProvider(String accessId, String secretKey, String token) { //... }

속성을 다음과 같이 설정할 수 있습니다.

Properties myProps = new Properties(); myProps.put("aws_credentials_provider_class","com.amazonaws.athena.jdbc.CustomSessionsCredentialsProvider"); String providerArgs = "My_Access_Key," + "My_Secret_Key," + "My_Token"; myProps.put("aws_credentials_provider_arguments",providerArgs);

참고

InstanceProfileCredentialsProvider을(를) 사용한다면 자격 증명 공급자 인수를 제공할 필요가 없습니다. 애플리케이션을 실행하는 인스턴스의 Amazon EC2 인스턴스 프로파일을 사용하여 인수가 제공되기 때문입니다. 하지만 aws_credentials_provider_class 속성은 이 클래스 이름으로 계속 설정합니다.

1.1.0 버전 이전의 JDBC 드라이버에 대한 정책

이처럼 정책에서 더 이상 사용되지 않는 작업에는 반드시 1.1.0 이전 버전의 JDBC 드라이버를 사용합니다. JDBC 드라이버를 업그레이드하는 경우 더 이상 사용되지 않는 작업을 허용하거나 거부하는 정책 설명을 적절한 API 작업으로 바꿉니다. 그렇지 않으면 오류가 발생합니다.

더 이상 사용되지 않는 정책 관련 작업 해당하는 Athena API 작업
athena:RunQuery
athena:StartQueryExecution
athena:CancelQueryExecution
athena:StopQueryExecution
athena:GetQueryExecutions
athena:ListQueryExecutions