我想使用 AWS Identity and Access Management(IAM)角色通过 JDBC 驱动程序连接到 Amazon Athena。或者,我想在通过 JDBC 驱动程序连接到 Athena 之前切换到另一个 IAM 角色。
解决方法
使用 IAM 角色凭证连接到 Athena JDBC 驱动程序
检索该角色的临时凭证。检索临时凭证的流程取决于您担任该角色的方式。
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
有关详细信息,请参阅使用 IAM 角色并查看比较使用角色的方法表。
临时凭证包含会话令牌、访问密钥 ID 和秘密访问密钥。必须具备这三个凭证才能验证 JDBC 至 Athena 的连接。请记住,临时凭证的最长使用期限为 12 小时。
-
在已安装 Athena JDBC 驱动程序的计算机上,将临时凭证以命名配置文件的形式保存至 AWS 凭证文件(~/.aws/credentials)中。有关详细信息,请参阅配置和凭证文件设置。
以下是名为 testprofile 的 AWS CLI 配置文件中存储的临时凭证示例:
[testprofile]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX
-
要使用 JDBC 驱动程序连接到 Athena,请在 JDBC 连接字符串中指定配置文件名称(例如:jdbc:awsathena://AwsRegion=us-west-2;Profile=testprofile;)。或者,在 Profile JDBC 配置属性中设置配置文件名称。
注意:Profile 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
在此示例中,默认配置文件包含 IAM 用户或有权代入 testrole 的角色的凭证:
[default]
aws_access_key_id=ASIAXXXXXXXXX
aws_secret_access_key=XXXXXXXX
aws_session_token=XXXXXXXXXXXXXXXXXX
注意: AWS CLI 支持在 AWS CLI 配置文件(/.aws/config)中指定 source_profile,在单独的 AWS CLI 凭证文件(~/.aws/credentials)中指定用户凭证。但是,Athena JDBC 驱动程序仅支持从 AWS CLI 凭证文件读取凭证。由于此限制,必须将这些配置文件放在同一 AWS CLI 凭证文件(/.aws/creditions)中。另外,不要在其前面加上 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 角色