使用 Amazon EventBridge 计划 Amazon Redshift 数据 API 操作
您可以创建规则来匹配选定的事件,并将它们路由到目标以采取操作。此外,您还可以使用规则对预定的计划采取操作。有关更多信息,请参阅 Amazon EventBridge 用户指南。
要使用 EventBridge 计划数据 API 操作,关联的 IAM 角色必须信任 CloudWatch Events (events.amazonaws.com) 的委托人。此角色应附加相当于托管式策略 AmazonEventBridgeFullAccess
的策略。它还应具有 AmazonRedshiftDataFullAccess
策略权限,这些权限由数据 API 管理。您可以在 IAM 控制台上创建具有这些权限的 IAM 角色。在 IAM 控制台上创建角色时,为 CloudWatch Events 选择 AWS 服务可信任实体。在 EventBridge 目标的 RoleArn
JSON 值中指定 IAM 角色。有关创建 IAM 角色的更多信息,请参阅《IAM 用户指南》中的为 AWS 服务创建角色(控制台)。
您在 Amazon EventBridge 中创建的规则的 name
必须与 RedshiftDataParameters
中的 StatementName
相匹配。
以下示例显示了使用单个或多个 SQL 语句创建 EventBridge 规则的变体,并将 Amazon Redshift 集群或 Amazon Redshift Serverless 工作组作为数据仓库。
以下示例使用 AWS 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 } } ] }
以下示例使用 AWS 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 } } ] }
以下示例使用 AWS 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 } } ] }
以下示例使用 AWS 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 } } ] }