JDBC ドライバーを使用して Athena に接続するときに、独自の IAM ロール認証情報を使用する、または別の IAM ロールに切り替える方法を教えてください。

最終更新日: 2020 年 6 月 25 日

JDBC ドライバー経由での Amazon Athena への接続に AWS Identity and Access Management (IAM) ロールを使用したいと考えています。または、自分の AWS アカウントもしくは別のアカウント内にある別の IAM ロールに切り替えてから、JDBC ドライバーを介して Athena に接続したいとも考えています。

解決方法

IAM ロール認証情報を使用して Athena JDBC ドライバーに接続する

ロールの一時的な認証情報を取得します。一時的な認証情報を取得するプロセスは、ロールの継承方法によって異なります。

詳細については、「IAM ロールを使用する」でロールを使用するためのメソッドの比較表を参照してください。

一時的な認証情報には、セッショントークン、アクセスキー ID、およびシークレットアクセスキーが含まれます。JDBC を介した Athena への接続を認証するためには、この 3 つの認証情報が必要です。一時的な認証情報の有効期間は最大 12 時間であることに注意してください。

1.    Athena JDBC ドライバーがインストールされているマシンで、一時的な認証情報を名前付きプロファイルとして AWS 認証情報ファイル (~/.aws/credentials) に保存します。詳細については、「設定ファイルと認証情報ファイルの設定」を参照してください。

以下は、testprofile という名前の AWS コマンドラインインターフェイス (AWS CLI) プロファイルに保存された一時的な認証情報の例です。

[testprofile]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX

2.    JDBC ドライバーで Athena に接続するには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=testprofile;)。または、Profile JDBC 設定プロパティにプロファイル名を設定します。

注意: Profile JDBC 設定プロパティは、Athena JDBC ドライバーのバージョン 2.0.6 以降で使用できます。最新の JDBC ドライバーを入手するには、「JDBC ドライバーをダウンロードするリンク」を参照してください。

異なる IAM ロールに切り替えてから Athena JDBC ドライバーに接続する

Athena JDBC ドライバーに接続する前にロールを切り替えるには、名前付きプロファイルで source_profile オプションを使用します。

1.    Athena JDBC ドライバーがインストールされているマシンで、名前付きプロファイルを AWS CLI 認証情報ファイル (~/.aws/credentials) に追加します。名前付きプロファイルの作成に関する詳細については、「名前付きプロファイル」を参照してください。プロファイルには、以下のプロパティを含める必要があります。

role_arn: 継承するロールの Amazon リソースネーム (ARN)
source_profile: ロールを継承する権限を持つ IAM ユーザーまたは IAM ロールの認証情報を含むプロファイル

たとえば、arn:aws:iam::123456789012:role/testrole という ARN を持つロール (名前: testrole) を継承するには、次のような名前付きプロファイルを作成します。

[switchroletest]
role_arn=arn:aws:iam::123456789012:role/testrole
source_profile=default

この例では、デフォルトのプロファイルに testrole を引き受ける許可を持つ IAM ユーザーまたはロールの認証情報が含まれています。

[default]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX

2.    JDBC ドライバーで Athena に接続するには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=switchroletest;)。または、Profile JDBC 設定プロパティにプロファイル名を設定します。