AWS Identity and Access Management (IAM) ロールを使用して JDBC ドライバー経由で Amazon Athena に接続したいと考えています。または、JDBC ドライバー経由で Athena に接続する前に、別の IAM ロールに切り替えたいと思っています。
解決方法
IAM ロールの認証情報を使用して Athena JDBC ドライバーに接続します
ロールの一時的な認証情報を取得します。一時的な認証情報を取得するプロセスは、ロールを引き受ける方法によって異なります。
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用しているかどうかを確認してください。
詳細については、「IAM ロールを使用する」を参照し、ロールの使用方法の比較テーブルを確認してください。
一時的な認証情報には、セッショントークン、アクセスキー ID、およびシークレットアクセスキーが含まれます。これら 3 つの認証情報は、Athena への JDBC 接続を認証するために必要です。一時的な認証情報の最大有効期間は 12 時間であることに注意してください。
-
Athena JDBC ドライバがインストールされているマシン上で、一時的な資格情報を AWS 認証ファイル (~/.aws/credentials) に名前付きプロファイルとして保存します。詳細については、「設定ファイルと認証情報ファイルの設定」を参照してください。
testprofile という名前の AWS CLI プロファイルに保存されている一時的な認証情報の例を次に示します。
[testprofile]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX
-
Athena の JDBC ドライバを使用して接続するためには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=testprofile;)。または、Profile JDBC 設定プロパティにプロファイル名を設定します。
注:プロファイル JDBC 設定プロパティは Athena JDBC ドライバーバージョン 2.0.6 以降で使用できます。最新の JDBC ドライバーを取得するには、「JDBC を使用して Amazon Athena に接続する」を参照してください。
別の IAM ロールに切り替えて、Athena JDBC ドライバーに接続します。
Athena JDBC ドライバーに接続する前にロールを切り替えるには、指定されたプロファイルの source_profile オプションを使用します。
-
Athena JDBC ドライバーがインストールされているマシンで、AWS CLI 認証情報ファイル (~/.aws/credentials) に名前付きプロファイルを追加します。名前付きプロファイルの作成について詳しくは、「名前付きプロファイルを使用する」を参照してください。プロファイルには次のプロパティを含める必要があります。
role_arn: 引き受けたいロールの Amazon リソースネーム (ARN)
source_profile: ロールを引き受けるための権限を持つ IAM ユーザーまたは IAM ロールの認証情報を含むプロファイル
例えば、ARN が arn:aws:iam::123456789012:role/testrole の testrole という名前のロールを引き受ける場合、以下のような名前付きプロファイルを作成します。
[switchroletest]
role_arn=arn:aws:iam::123456789012:role/testrole
source_profile=default
この例では、default プロファイルには、testrole を受ける権限を持つ IAM ユーザーやロールの認証情報が含まれています。
[default]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX
注: AWS CLI では、source_profile を AWS CLI の設定ファイル (/.aws/config) およびユーザーの認証情報を別の AWS CLI の認証情報ファイル (~/.aws/credentials) に指定することができます。ただし、Athena JDBC ドライバーは AWS CLI 認証情報ファイルからの認証情報の読み取りのみをサポートします。この制限のため、これらのプロファイルは同じ AWS CLI 認証情報ファイル (/.aws/credentials) に配置する必要があります。また、profile でプレフィックスを付けないでください。Athena JDBC ドライバーは、名前付きプロファイルで credential_source = Ec2InstanceMetadata を使用することはサポートしていません。
-
JDBC ドライバを使用して Athena に接続するためには、JDBC 接続文字列でプロファイル名を指定します (例: jdbc:awsathena://AwsRegion=us-west-2;Profile=switchroletest;)。または、Profile JDBC 設定プロパティにプロファイル名を設定します。
関連情報
一時的なセキュリティ認証情報を要求する
SQL コネクタ付き Simba Athena JDBC ドライバーインストールおよび設定ガイド (バージョン 2.0.9)
IAM ロールへの切り替え (AWS CLI)
AWS CLI で IAM ロールを使用する