AthenaにIntellij IDEAから接続してみる

AthenaにIntellij IDEAを使用して接続します。AssumeRoleしてアカウントに接続している場合にも対応しています。JDBCを利用していますので SQL Workbench/J などでも同じ設定が利用できます!
2020.02.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSマネジメントコンソールからAthenaにクエリを実行することができますが、Intellij IDEAを使用することでより便利になります。今回は接続方法をご紹介したいと思います。

正確には有償のIntellij IDEA Ultimate、または、DataGripが必要になります。

プロジェクトの作成

まずは接続の設定を行う前にからのプロジェクトを作成します。

Intellij IDEAを起動し、「Create New Project」を選択

今回はAthenaに接続したいだけなので「Empty Project」を選択

適当なプロジェクト名と保存先を指定し、「Finish」をクリック

AthenaのJDBCドライバを追加

ドライバのダウンロード

下記のサイトからAthenaのJDBCドライバをダウンロードします。特に理由がなければ JDBC 4.2 のバージョンをダンロードしてください。

JDBC ドライバーを介した Athena の使用 - Amazon Athena

AWS STSにて一時認証情報を作成(AssumeRole)して利用している場合は、Athenaカスタム認証情報プロバイダを利用する必要があります。下記のファイルをダウンロードしてください。

https://s3.amazonaws.com/athena-blog-jdbc-custom-credentials-provider/athena-jdbc-custom-credentials-provider-0.0.1-SNAPSHOT.jar

Intellij IDEAにAthenaのドライバ設定を作成

Intellij IDEAにAthenaのドライバ設定を作成していきます。

データベースツールウィンドウを表示し Data Source Propertiesをクリック

「+」→「Driver」をクリック

必要な情報を入力

Name:
Athena
Class:
com.simba.athena.jdbc.Driver
Driver files:
上記でダンロードしたファイル2つ
URL templates: default
jdbc:awsathena://athena.[{host::ap-northeast-1}].amazonaws.com:443;S3OutputLocation={S3OutputLocation:param};

「Options」タブにてDialectを「Generic SQL」に変更し、OKをクリック

接続設定: アクセスキーの場合

「+」→ 「Athena」をクリック

Name:
任意の接続名
Host:
接続するリージョン
User:
アクセスキー
Password:
シークレットアクセスキー
S3OutPutLocation
クエリ結果を保存するS3バケット

最後に「Test Connection」をクリックし、接続できるか確認

接続設定: AssumeRoleの場合

スイッチロールしている場合の接続方法です。STSのassume-roleで作成した一時認証情報を使用します。

Name:
任意の接続名
Host:
接続するリージョン
User:
未入力
Password:
未入力
S3OutPutLocation
クエリ結果を保存するS3バケット

Advancedタブに切り替え下記の情報を入力。AwsCredentialsProviderArgumentsにはassume-roleで取得した情報を入力。

AwsCredentialsProviderClass
com.amazonaws.custom.athena.jdbc.CustomIAMRoleAssumptionSAMLCredentialsProvider
AwsCredentialsProviderArguments
<AccessKeyId>,<SecretAccessKey>,<SessionToken>

クエリを実行してみる

Intellij IDEAからAthenaにクエリが実行でき結果まで確認できました。

まとめ

マネジメントコンソールでもクエリの実行は可能ですが、専用のツールのほうが色々と便利な機能が利用できるのでぜひ設定してみてはいかがでしょうか。

また、他のツールを使用する場合でもJDBCの設定は同じですので参考にしてみてください。

参考情報

Using AWS Athena from IntelliJ-based IDE | DataGrip Blog

一時的認証情報を使用してフェデレーティッドアイデンティティで、Amazon Athena に接続する | Amazon Web Services ブログ

aws-samples/aws-blog-athena-custom-jdbc-credentials: The repository demonstrates use cases for running queries using Athena utilizing a custom JDBC credentials provider

jdbc guide