メニュー
Amazon Athena
ユーザーガイド

以前のバージョンの JDBC ドライバーを使用する

最新バージョンのドライバーを使用することをお勧めします。ただし、以前のバージョンを使用する必要がある場合は、このセクションのステップに従って、ドライバーをダウンロードして設定します。

以前のバージョンの JDBC ドライバーをダウンロードする

  1. Amazon S3 で、こちらの場所 (https://s3.amazonaws.com/athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/AthenaJDBC41-1.1.0.jar) からドライバー (JDBC 4.1 および Java 8 互換) をダウンロードします。

  2. ライセンス (https://s3.amazonaws.com/athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/docs/LICENSE.txt)、およびサードパーティーライセンス (https://s3.amazonaws.com/athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/docs/third-party-licenses.txt) をダウンロードします。

  3. AWS CLI で次のコマンドを使用します。

    aws s3 cp s3://athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/AthenaJDBC41-1.1.0.jar [local_directory]

接続文字列の指定

カスタムアプリケーションで JDBC ドライバーの接続 URL を指定するには、次の形式で文字列を使用します。

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

{REGION} は、us-west-2 などのリージョン識別子です。Athena のリージョンの詳細については、「リージョン」を参照してください。

JDBC ドライバーのクラス名を指定します。

カスタムアプリケーションでドライバーを使用するには、前のセクションで Amazon S3 の https://s3.amazonaws.com/athena-downloads/drivers/JDBC/AthenaJDBC_1.1.0/AthenaJDBC41-1.1.0.jar からダウンロードした JAR ファイルの場所への Java クラスパスをセットアップします。これにより、JAR 内のクラスが使用可能になります。JDBC ドライバーのメインクラスは com.amazonaws.athena.jdbc.AthenaDriver です。

JDBC ドライバーの認証情報の提供

Athena や Amazon S3 バケットなど、AWS のサービスやリソースへのアクセスを取得するには、JDBC ドライバーの認証情報をアプリケーションに提供します。

アプリケーションに Java コードで認証情報を提供するには

  1. AWSCredentialsProvider を実装するクラスを使用します。

  2. JDBC プロパティの aws_credentials_provider_class をクラス名と同じに設定し、それをクラスパスに含めます。

  3. コンストラクターパラメータを含めるには、JDBC プロパティの aws_credentials_provider_arguments を、設定オプションに関する次のセクションで指定しているとおりに設定します。

BI ツール (SQL Workbench など) に認証情報を提供する別の方法としては、JDBC で JDBC プロパティの AWS アクセスキーと AWS シークレットキーとしてそれぞれユーザーとパスワードに使用している認証情報を提供します。

JDBC ドライバーを介して接続するユーザーが、ユーザープロファイルにカスタムアクセスポリシーがアタッチされている場合は、Amazon Athena API リファレンスに示すアクションに加えて、ポリシーアクションへのアクセス許可も必要です。

ポリシー

JDBC ユーザーに対して、ポリシー専用のアクションセットの実行を許可する必要があります。これらのアクションは Athena API には含まれていません。以下のアクションを許可しないと、ユーザーはデータベースとテーブルを表示できません。

  • athena:GetCatalogs

  • athena:GetExecutionEngine

  • athena:GetExecutionEngines

  • athena:GetNamespace

  • athena:GetNamespaces

  • athena:GetTable

  • athena:GetTables

JDBC ドライバーオプションの設定

以下のオプションは、廃止バージョンの JDBC ドライバーで設定できます。次のバージョンのドライバーでは、標準の JDBC URL 構文を使用してパラメータを渡すこともできます (例 :jdbc:awsathena://athena.us-west-1.amazonaws.com:443?max_error_retries=20&connection_timeout=20000)。

以前のバージョンの JDBC ドライバーのオプション

プロパティ名 説明 デフォルト値 必須
s3_staging_dir クエリの出力を書き込む先の S3 の場所 (例: s3://query-results-bucket/folder/)。Athena コンソール (https://console.aws.amazon.com/athena/) の [Settings] で設定します。次に、JDBC ドライバーは、結果を読み取ってデータの行をユーザーに返すように Athena に要求します。 該当なし はい
query_results_encryption_option s3_staging_dir で指定したディレクトリに使用する暗号化方法。指定しないと、場所は暗号化されません。有効な値は、SSE_S3SSE_KMSCSE_KMS です。 該当なし いいえ
query_results_aws_kms_key

query_results_encryption_optionSSE-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 に接続する再試行間の最大遅延間隔 (ミリ秒)。 1,000 いいえ
log_path Athena JDBC ドライバーのログのローカルパス。ログのパスを指定しないと、ログファイルは作成されません。 該当なし いいえ
log_level Athena JDBC ドライバーのログのログレベル。有効な値: INFO, DEBUG, WARN, ERROR, ALL, OFF, FATAL, TRACE. 該当なし いいえ

例: JDK で以前のバージョンの JDBC ドライバーを使用する

次のコード例では、Java アプリケーションで以前のバージョンの JDBC ドライバーを使用する方法を示しています。これらの例は、AWS JAVA SDK (特に aws-java-sdk-core モジュール) がクラスパスに含まれていることを前提としています。このクラスパスには、例で参照される認証パッケージ (com.amazonaws.auth.*) が含まれています。

例: ドライバーの作成

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 インターフェイスを実装する認証情報プロバイダーを使用するさまざまな方法を示しています。

例: 認証情報プロバイダーの使用

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