使用查询编辑器查询数据库 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用查询编辑器查询数据库

使用查询编辑器是在由 Amazon Redshift 集群托管的数据库上运行查询的简单方法。创建集群后,可以使用 Amazon Redshift 控制台上的查询编辑器立即运行查询。

注意

您无法使用此原始查询编辑器在 Amazon Redshift Serverless 中查询数据。而应使用 Amazon Redshift 查询编辑器 v2。

2021 年 2 月,部署了更新的查询编辑器,并更改了使用查询编辑器的授权权限。新的查询编辑器使用 Amazon Redshift 数据 API 来运行查询。作为 Amazon 托管式 Amazon Identity and Access Management (IAM) 策略的 AmazonRedshiftQueryEditor 策略已更新为包含必要的权限。如果您有自定义 IAM 策略,请务必更新它。将 AmazonRedshiftQueryEditor 用作指南。对 AmazonRedshiftQueryEditor 的更改包括以下内容:

  • 管理查询编辑器语句结果的权限需要语句拥有者用户。

  • 已添加使用 Secrets Manager 连接到数据库的权限。

有关更多信息,请参阅使用 Amazon Redshift 控制台查询编辑器所需的权限

从新的查询编辑器连接到集群时,您可以使用两种身份验证方法之一,如使用查询编辑器进行连接所述。

使用查询编辑器可以执行以下操作:

  • 运行单个 SQL 语句查询。

  • 将大小为 100 MB 的结果集下载到一个逗号分隔值 (CSV) 文件。

  • 保存查询以供重用。您无法在欧洲(巴黎)区域、亚太地区(大阪)区域、亚太地区(香港)区域或中东(巴林)区域中保存查询。

  • 查看用户定义表的查询运行时详细信息。

  • 安排查询在未来运行。

  • 查看您在查询编辑器中创建的查询的历史记录。

  • 使用增强型 VPC 路由对集群运行查询。

查询编辑器注意事项

请考虑下列有关使用查询编辑器时处理查询的事项:

  • 查询的最长持续时间为 24 小时。

  • 查询结果的最大大小为 100 MB。如果调用返回的响应数据超过 100 MB,则调用将终止。

  • 查询结果的最长保留时间为 24 小时。

  • 最大查询语句大小为 100 KB。

  • 集群必须在基于 Amazon VPC 服务的 Virtual Private Cloud (VPC) 中。

  • 不能在查询编辑器中使用事务处理。有关事务的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 BEGIN

  • 您可以保存最长为 3000 个字符的查询。

启用对查询编辑器的访问

要访问查询编辑器,您需要相应权限。要启用访问,我们建议您将用于 IAM 权限的 AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess Amazon 托管式策略附加到您用于访问集群的 IAM 角色。然后,可以将该角色分配给用户。您可以使用 IAM 控制台 (https://console.aws.amazon.com/iam/) 附加 IAM 策略。有关更多信息,请参阅为 Amazon Redshift 使用基于身份的策略(IAM 策略)

如果您已创建用户来访问 Amazon Redshift,则可以通过分配的角色将 AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess Amazon 托管式策略附加到该用户。如果您尚未创建用户,则可以创建一个,然后将策略附加到 IAM 角色并将该角色分配给该用户。

Amazon 托管式策略 AmazonRedshiftQueryEditor 允许操作 redshift:GetClusterCredentials,这在原定设置情况下提供了对数据库的超级用户访问权限。要限制访问,您可以执行下列操作之一:

  • 创建自定义策略,该策略允许调用 redshift:GetClusterCredentials 并将资源限制为 DbUser 的给定值。

  • 添加拒绝对于 redshift:GetClusterCredentials 的权限的策略。获得了已附加此权限的角色的任何用户,必须使用临时凭证登录查询编辑器。此拒绝策略说明了这一示例。

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "redshift:GetClusterCredentials", "Resource": "*" } }

有关创建具有所需权限的角色的更多信息,请参阅创建有权调用 GetClusterCredentials 的 IAM 角色

如果通过 Amazon 托管式策略 AmazonRedshiftQueryEditor 为任何用户授予了访问 Amazon Redshift 查询编辑器的权限,则相应的用户可以列出所有密钥。但是,此策略仅允许创建和检索使用密钥 RedshiftQueryOwner 和值 ${aws:userid} 标记的密钥。如果您从 Amazon Redshift 查询编辑器创建密钥,则会自动标记该密钥。要使用不是通过 Amazon Redshift 查询编辑器创建的密钥,请确认该密钥是否使用键 RedshiftQueryOwner 和您的唯一 IAM 用户标识符的值标记,例如 AIDACKCEVSQ6C2EXAMPLE

使用 Amazon Redshift 查询编辑器所需的权限为 AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess

要提供访问权限,请为您的用户、组或角色添加权限:

使用查询编辑器进行连接

当您使用查询编辑器连接到集群时,您可以使用下列身份验证方法之一。每种方法都需要来自 Amazon Redshift 控制台的不同输入组合。

Amazon Secrets Manager

使用此方法,为存储在 Amazon Secrets Manager 中的 secret-arn 提供一个密钥值。此密钥包含用于连接到数据库的凭证。

临时凭证

使用此方法,提供 databasedb-user 值。

在 Amazon Secrets Manager 中存储数据库凭证

调用查询编辑器时,您可以使用 Amazon Secrets Manager 中的密钥传递集群的凭证。要通过此方式传递凭证,您需要指定密钥的名称或 Amazon 资源名称 (ARN)。

有关最低权限的更多信息,请参阅《Amazon Secrets Manager 用户指南》中的使用 Amazon Secrets Manager 创建和管理密钥

要将凭证存储在 Amazon Redshift 集群的密钥中
  1. 使用 Amazon Secrets Manager 创建包含集群凭证的密钥。当您选择存储新密钥时,选择 Redshift 集群的凭证。将用户名(数据库用户)、密码数据库集群(集群标识符)的值存储在您的密钥中。

    有关说明,请参阅《Amazon Secrets Manager 用户指南》中的创建基本密钥

  2. 使用 Amazon Secrets Manager 控制台查看您创建的密钥的详细信息,或运行 aws secretsmanager describe-secret Amazon CLI 命令。

如果您选择为集群的管理员凭证使用 Amazon Secrets Manager,则可以使用 Secrets Manager 存储的管理员凭证连接到数据库。

使用查询编辑器

在以下示例中,您使用查询编辑器执行以下任务:

  • 运行 SQL 命令。

  • 查看查询执行详细信息。

  • 保存查询。

  • 下载查询结果集。

要完成以下示例,您需要现有 Amazon Redshift 集群。如果您没有集群,请通过执行创建集群中所述的过程来创建一个集群。

要在 Amazon Redshift 控制台上使用查询编辑器
  1. 登录到 Amazon Web Services Management Console并打开 Amazon Redshift 控制台,网址:https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择查询编辑器,然后连接到集群中的数据库。

  3. 对于架构,选择公有以基于该架构创建新表。

  4. 在查询编辑器窗口中输入以下内容,然后选择运行以创建新表。

    create table shoes( shoetype varchar (10), color varchar(10));
  5. 选择清除

  6. 在查询编辑器窗口中输入以下命令,然后选择运行以向表中添加行。

    insert into shoes values ('loafers', 'brown'), ('sandals', 'black');
  7. 选择清除

  8. 在查询编辑器窗口中输入以下命令,然后选择运行以查询新表。

    select * from shoes;

    查询结果将显示相应结果。

    Shoe 类型 颜色

    sandals

    black

    loafers

    brown

  9. 选择执行以查看运行详细信息。

  10. 选择数据,然后选择导出以便以文件形式下载查询结果。