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

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

在 Amazon Redshift 控制台上计划查询

要创建运行 SQL 语句的计划,您可以使用 Amazon Redshift 控制台上的查询编辑器。您可以创建计划以在满足业务需求的时间间隔运行 SQL 语句。在计划查询开始运行时,Amazon EventBridge 启动查询。

创建计划以在控制台上运行 SQL 语句

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

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

    在定义计划时,您需要提供以下信息:

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

  • 在集群的详细信息页面的 Schedules (计划) 选项卡上。

  • 在可从导航窗格访问的计划查询列表中。要查看列表,请在导航窗格上依次选择 QUERIES (查询)Schedule query list (计划查询列表)

  • 查询编辑器的 Scheduled queries (计划查询) 选项卡上。

如果您从其中一个位置选择 Schedule name (计划名称),您可以查看和编辑计划查询的定义。

设置权限以在 Amazon Redshift 控制台上计划查询

要计划查询,定义计划的 AWS Identity and Access Management (IAM) 用户和与计划关联的 IAM 角色必须按如下所示配置。

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

  • 附加 AmazonEventBridgeFullAccess AWS 托管策略。

  • 附加一个策略,该策略具有您在定义计划 SQL 语句时指定的 IAM 角色的 sts:AssumeRole 权限。

    以下示例显示了担任指定 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 AWS 托管策略附加到 IAM 角色。

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

以下是 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 控制台的不同输入组合。

AWS Secrets Manager

使用此方法,请为存储在 中的 secret-arnAWS Secrets Manager 提供一个密钥值。此密钥包含用于连接到数据库的凭证。必须使用密钥 RedshiftDataFullAccess 标记密钥。

有关最低权限的更多信息,请参阅 https://docs.amazonaws.cn/secretsmanager/latest/userguide/managing-secrets.html 中的使用 AWS Secrets Manager 创建和管理密钥AWS Secrets Manager 用户指南。

临时凭证

使用此方法,请提供您的数据库db-user 值。

策略允许名为 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" ] } ] }