Netbeans + JDBC + Amazon Athena でつまづいたところ


もうそこらじゅうにサンプルがあるけど知識が少なすぎてアレだったので一応つまづいたところをふまえてメモ。

前提

とりあえずもう Web コンソールから SQL 実行できるとする。DB名は logs としてある。

リージョン US Standard でバケットを作っておく

JDBC経由で実行した結果は得られるんだが、それをS3に保存することは必須になっている。そしてちゃんとAmazon Athenaが動くリージョンじゃないとダメらしい(エラーになる)。リージョンを US Standard としてS3バケットを作成する。

プロジェクト作成

Netbeans を起動して新規プロジェクト > Java > Javaアプリケーション

コードのコピペ

Amazon Athena に JDBC 接続する | Developers.IO を参考にした。

コピペする。

認証設定

認証はJDBCドライバに渡すプロパティ一式のなかに、 aws_credentials_provider_arguments というプロパティに値を渡すことで aws_credentials_provider_class のコンストラクタを指定できるようだ。

ようだ・・・が、いろいろあってこれを用いられなかったのでこのアクセスキーとシークレットアクセスキーを用いる方法でいく。

Accessing Amazon Athena with JDBC — User Guide

上記ページを参考にプロパティ user にアクセスキー、同 password にシークレットアクセスキーを設定した。

    info.put("s3_staging_dir", "s3://us-standar-region-phx-athena");
    info.put("user", "AWSACCESSKEYID");
    info.put("password", "AWSSECRETACCESSKEY");

ライブラリの追加

上記3つ解凍して、それぞれのjarをプロジェクトに追加する。Netbeasでプロジェクト右クリ > プロパティ > ライブラリ > JAR/フォルダの追加 > を3度

SQLの実行

Webコンソールではデフォルトデータベースが正しく指定されているが、コレ経由だとちゃんと指定しないとダメぽ。(デフォルトDB指定できるだろうからまぁそれやりゃいいんだろうけど)

例えば

select * from target_table limit 3;

select * from logs.target_table limit 3;

こんな感じで。