使用 JDBC 驱动程序连接到 Athena 时,如何使用我的 IAM 角色凭据或切换至另一个 IAM 角色?

上次更新时间:2021 年 11 月 8 日

我想要使用 AWS Identity and Access Management (IAM) 角色通过 JDBC 驱动程序连接到 Amazon Athena。

-或者-

在通过 JDBC 驱动程序连接到 Athena 之前,我想要切换至我的 AWS 账户或其他账户中的另一个 IAM 角色。

解决方法

使用 IAM 角色凭证连接到 Athena JDBC 驱动程序

检索角色的临时凭证。检索临时凭证的过程取决于您代入角色的方式:

  • 代入 a SAML 身份提供商角色:Active Directory Federation Services (AD FS) 3.0、Okta、PingFederate 和 Azure AD 是 Athena JDBC 驱动程序中直接受支持的唯一 SAML 2.0 身份提供商如果代入不同身份提供商角色,请使用 assume-role-with-saml 命令获取临时凭证。
  • 代入账户中的不同角色:如果代入相同 AWS 账户中的不同角色,请使用 assume-role 获取临时凭证。

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

有关更多信息,请参阅使用 IAM 角色并查看使用角色方法对比表。

临时凭证包含会话令牌、访问密钥 ID 和秘密访问密钥。必须具备这三个凭证才能验证 JDBC 至 Athena 的连接。请记住,临时凭证的最长使用期限为 12 小时。

1.    在已安装 Athena JDBC 驱动程序的计算机上,将临时凭证以命名配置文件的形式保存至 AWS 凭证文件 (~/.aws/credentials) 中。有关更多信息,请参阅配置和凭证文件设置

以下是名为 testprofile 的 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;)。或者,设置配置文件 JDBC 配置属性中的配置文件名称。

注意:配置文件 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 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/credentials) 中,并且不得以 profile 为前缀。Athena JDBC 驱动程序不支持在命名的配置文件中使用 credential_source = Ec2InstanceMetadata

2.    要使用 JDBC 驱动程序连接到 Athena,请在 JDBC 连接字符串中指定配置文件名称(例如:jdbc:awsathena://AwsRegion=us-west-2;Profile=switchroletest;)。或者,设置配置文件 JDBC 配置属性中的配置文件名称。