Atehna JDBC ドライバで Credential を明示的に指定せずに Athena にアクセスする
少し前まで対応していなかったのか、 JDBC ドライバで Athena にアクセス する際に Credential を明示的に渡さず、EC2 インスタンスなどに付与されているロールの権限でアクセスする方法が探しても見つからなかったのですが、(いつからかはわかりませんが) 今はできるようになっていました。 これで Credential の管理を気にせずに Athena JDBC ドライバが使えます。 How to configure aws_credentials_provider_class に com.amazonaws.athena.jdbc.shaded.com.amazonaws.auth.DefaultAWSCredentialsProviderChain を指定する。これだけです。 EC2 でも Lambda でもこれで OK。 How it works JavaDoc によると、DefaultAWSCredentialsProviderChain クラスは 環境変数 Java のシステムプロパティ ~/.aws/credentials ECS、EC2 のインスタンスメタデータ を探してアクセスキー ID、シークレットアクセスキーを取得するように動作します。AWS CLI の Credential を探す動作と似てますね ( boto3 っぽい感じ)。 このクラスを使うと、特にプロパティファイルや ~/.aws/credentials で認証情報を指定していない場合、EC2 の場合はインスタンスメタデータから、Lambda の場合は環境変数からアクセスキー ID、シークレットアクセスキーを取得し、EC2 インスタンスや Lambda についているロールの権限で Athena にアクセスできるようになります。 ちなみにこの DefaultAWSCredentialsProviderChain を使った方法、今の所は AWS Developer Guide では Undocumented の模様。Athena JDBC ドライバのドキュメントには InstanceProfileCredentialsProvider を使った方法 は書いてありますが、このクラスはあくまで EC2 インスタンス用 (インスタン...