使用 Amazon EventBridge 计划 Amazon Redshift 数据 API 操作 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EventBridge 计划 Amazon Redshift 数据 API 操作

您可以创建规则来匹配选定的事件,并将它们路由到目标以采取操作。此外,您还可以使用规则对预定的计划采取操作。有关更多信息,请参阅 Amazon EventBridge 用户指南

要使用 EventBridge 计划数据 API 操作,关联的 IAM 角色必须信任 CloudWatch Events (events.amazonaws.com) 的委托人。此角色应附加相当于托管式策略 AmazonEventBridgeFullAccess 的策略。它还应具有 AmazonRedshiftDataFullAccess 策略权限,这些权限由数据 API 管理。您可以在 IAM 控制台上创建具有这些权限的 IAM 角色。在 IAM 控制台上创建角色时,为 CloudWatch Events 选择 Amazon 服务可信任实体。在 EventBridge 目标的 RoleArn JSON 值中指定 IAM 角色。有关创建 IAM 角色的更多信息,请参阅《IAM 用户指南》中的为 Amazon 服务创建角色(控制台)

您在 Amazon EventBridge 中创建的规则的 name 必须与 RedshiftDataParameters 中的 StatementName 相匹配。

以下示例显示了使用单个或多个 SQL 语句创建 EventBridge 规则的变体,并将 Amazon Redshift 集群或 Amazon Redshift Serverless 工作组作为数据仓库。

以下示例使用 Amazon CLI 创建 EventBridge 规则,用于对 Amazon Redshift 集群运行 SQL 语句。

aws events put-rule --name test-redshift-cluster-data --schedule-expression "rate(1 minute)"

然后创建一个 EventBridge 目标,以按照规则中指定的计划运行。

aws events put-targets --cli-input-json file://data.json

输入 data.json 文件如下。Sql JSON 键表示只有一个 SQL 语句。Arn JSON 值包含集群标识符。RoleArn JSON 值包含用于运行 SQL 的 IAM 角色,如前所述。

{ "Rule": "test-redshift-cluster-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "DbUser": "root", "Sql": "select 1;", "StatementName": "test-redshift-cluster-data", "WithEvent": true } } ] }

以下示例使用 Amazon CLI 创建 EventBridge 规则,用于对 Amazon Redshift Serverless 工作组运行一个 SQL 语句。

aws events put-rule --name test-redshift-serverless-workgroup-data --schedule-expression "rate(1 minute)"

然后创建一个 EventBridge 目标,以按照规则中指定的计划运行。

aws events put-targets --cli-input-json file://data.json

输入 data.json 文件如下。Sql JSON 键表示只有一个 SQL 语句。Arn JSON 值包含工作组名称。RoleArn JSON 值包含用于运行 SQL 的 IAM 角色,如前所述。

{ "Rule": "test-redshift-serverless-workgroup-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sql": "select 1;", "StatementName": "test-redshift-serverless-workgroup-data", "WithEvent": true } } ] }

以下示例使用 Amazon CLI 创建 EventBridge 规则,用于对 Amazon Redshift 集群运行多个 SQL 语句。

aws events put-rule --name test-redshift-cluster-data --schedule-expression "rate(1 minute)"

然后创建一个 EventBridge 目标,以按照规则中指定的计划运行。

aws events put-targets --cli-input-json file://data.json

输入 data.json 文件如下。Sqls JSON 键表示有多个 SQL 语句。Arn JSON 值包含集群标识符。RoleArn JSON 值包含用于运行 SQL 的 IAM 角色,如前所述。

{ "Rule": "test-redshift-cluster-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sqls": ["select 1;", "select 2;", "select 3;"], "StatementName": "test-redshift-cluster-data", "WithEvent": true } } ] }

以下示例使用 Amazon CLI 创建 EventBridge 规则,用于对 Amazon Redshift Serverless 工作组运行多个 SQL 语句。

aws events put-rule --name test-redshift-serverless-workgroup-data --schedule-expression "rate(1 minute)"

然后创建一个 EventBridge 目标,以按照规则中指定的计划运行。

aws events put-targets --cli-input-json file://data.json

输入 data.json 文件如下。Sqls JSON 键表示有多个 SQL 语句。Arn JSON 值包含工作组名称。RoleArn JSON 值包含用于运行 SQL 的 IAM 角色,如前所述。

{ "Rule": "test-redshift-serverless-workgroup-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sqls": ["select 1;", "select 2;", "select 3;"], "StatementName": "test-redshift-serverless-workgroup-data", "WithEvent": true } } ] }