在 Amazon Redshift 控制台上安排查询 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon Redshift 控制台上安排查询

要创建运行 SQL 语句的计划,您可以使用 Amazon Redshift 控制台上的查询编辑器。您可以创建一个计划,以便按照与业务需求相匹配的时间间隔运行 SQL 语句。当计划查询运行时,Amazon EventBridge 会启动查询。

创建在控制台上运行 SQL 语句的调度

  1. 打开控制台和查询编辑器,如使用查询编辑器

  2. 选择Schedule创建运行 SQL 语句的计划。

    在定义调度时,您需要提供以下信息:

您还可以使用 Amazon Redshift 控制台管理和更新计划查询。根据控制台版本的不同,计划查询可能会在以下位置列出:

  • 在存储库的Schedules选项卡上的集群详细信息页面。

  • 在您可以从导航窗格访问的计划查询列表上。要查看列表,请在导航窗格中选择QUERIES计划查询列表

  • 在存储库的计划的查询查询编辑器的选项卡。

如果选择计划名称,则可以查看和编辑计划查询的定义。

设置在 Amazon Redshift 控制台上安排查询的权限

要计划查询,Amazon Identity and Access Management(IAM) 用户定义计划以及与计划关联的 IAM 角色必须按如下方式进行配置。

对于登录 Amazon Redshift 控制台的 IAM 用户,请执行以下操作:

  • 将附加到AmazonEventBridgeFullAccess Amazon托管策略。

  • 将策略附加到sts:AssumeRole权限,您在定义调度 SQL 语句时指定的 IAM 角色。

    以下示例说明了代入指定 IAM 角色的策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeIAMRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account-id:role/sql-statement-iam-role" } ] }

对于您指定使调度程序能够运行查询的 IAM 角色,请执行以下操作:

  • 确保此 IAM 角色指定了 EventBridge 服务主体 (events.amazonaws.com)。下面是示例信任关系。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    有关如何为 EventBridge 事件创建 IAM 角色的更多信息,请参阅使用 Amazon EventBridge 计划程序所需的权限

  • 将附加到AmazonRedshiftDataFullAccess Amazon管理的策略添加到 IAM 角色。

  • 要允许 IAM 用户查看计划历史记录,请编辑 IAM 角色以添加sts:AssumeRole权限。

以下是 IAM 角色定义的示例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" }, { "Sid": "AssumeRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/user-name" }, "Action": "sts:AssumeRole" } ] }

以下示例代码段允许特定 IAM 用户查看计划历史记录。

{ "Sid": "AssumeRole", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:user/testRedshiftUser", "arn:aws:iam::account-id:user/myusername" ] }, "Action": "sts:AssumeRole" }

对计划查询进行身份验证

当您计划查询时,在查询 SQL 运行时使用下列身份验证方法之一。每种方法都需要来自 Amazon Redshift 控制台的不同输入组合。

Amazon Secrets Manager

使用此方法,为秘密 arn中存储的Amazon Secrets Manager。此密钥包含用于连接到数据库的凭据。密钥标记为密钥RedshiftDataFullAccess

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

临时凭证

使用此方法,提供database数据库用户值。

这些区域有:AmazonRedshiftDataFullAccess策略允许名为redshift_data_api_user的权限redshift:GetClusterCredentials。如果要使用其他数据库用户运行 SQL 语句,请向 IAM 角色添加策略以允许redshift:GetClusterCredentials。以下示例策略允许数据库用户awsusermyuser

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseTemporaryCredentialsForAllDbUsers", "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:*:*:dbuser:*/awsuser", "arn:aws:redshift:*:*:dbuser:*/myuser" ] } ] }