使用 Amazon Redshift Data API - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 Amazon Redshift Data API

您可以使用内置的 Amazon Redshift 访问您的 Amazon Redshift Data API 数据库。使用此 API,您可以通过基于 Web 服务Amazon Redshift的应用程序(包括 –、AWS Lambda、AWS AppSync 笔记本和 Amazon SageMaker)访问 AWS Cloud9 数据。有关这些应用程序的更多信息,请参阅 AWS LambdaAWS AppSyncAmazon SageMakerAWS Cloud9。

不需要与集群的持久性连接。Data API相反,它提供了安全 HTTP 终端节点以及与 AWS SDKs 的集成。 您可以使用终端节点运行 SQL 语句,而无需管理连接。对 Data API 的调用是异步的。

使用存储在 Data API 中的凭证或临时数据库凭证。AWS Secrets Manager您无需使用任一授权方法在 API 调用中传递密码。有关 AWS Secrets Manager 的更多信息,请参阅 中的什么是 AWS Secrets Manager?。AWS Secrets Manager 用户指南

有关 Data API 操作的更多信息,请参阅 Amazon Redshift 数据 API 参考

使用 Amazon Redshift Data API

在使用 Amazon Redshift Data API 之前,请检查以下步骤:

  1. 确定您是否作为Data API的调用方获得授权。有关授权的更多信息,请参阅 授予对 Amazon Redshift Data API 的访问权限

  2. 确定您打算使用来自 Data API 的身份验证凭证还是临时凭证调用 Secrets Manager。有关更多信息,请参阅在调用 Amazon Redshift Data API 时选择身份验证凭证

  3. 如果将 Secrets Manager 用于身份验证凭证,则设置密钥。有关更多信息,请参阅在 AWS Secrets Manager 中存储数据库凭证

  4. 查看调用 Data API 时的注意事项和限制。有关更多信息,请参阅调用 Amazon Redshift Data API 时的注意事项

  5. 从 Data API (AWS Command Line Interface)、从您自己的代码或使用 AWS CLI 控制台中的查询编辑器调用 Amazon Redshift。有关从 AWS CLI 调用 的示例,请参阅使用 Data API 调用AWS CLI

授予对 Amazon Redshift Data API 的访问权限

要访问 Data API,用户必须获得授权。您可以通过向用户添加托管策略(这是预定义的 Data API (AWS Identity and Access Management) 策略)来授权该用户访问 IAM。要查看托管策略允许和拒绝的权限,请参阅 IAM 控制台 (https://console.amazonaws.cn/iam/)。

Amazon Redshift 提供 AmazonRedshiftDataFullAccess 托管策略。此策略提供对 Amazon Redshift 数据 API 操作的完全访问权限。此策略还允许对身份验证和访问 Amazon Redshift 集群所需的特定 AWS Secrets Manager、IAM 和 Amazon Redshift API 操作进行范围限定的访问。如果您使用 AWS Secrets Manager 进行身份验证,则该策略允许使用 secretsmanager:GetSecretValue 操作来检索使用密钥 RedshiftDataFullAccess 标记的密钥。 如果您使用临时凭证进行身份验证,则该策略允许对集群中的任何数据库使用对数据库用户名 redshift:GetClusterCredentialsredshift_data_api_user 操作。此用户名必须已在您的数据库中创建。

您还可以创建自己的 IAM 策略来允许访问特定资源。要创建策略,请使用 AmazonRedshiftDataFullAccess 策略作为您的启动模板。创建策略后,将它添加到需要访问 Data API 的每个用户。

有关创建 IAM 策略的信息,请参阅 中的IAM创建 策略。IAM 用户指南有关将 IAM 策略添加到用户的信息,请参阅 中的IAM添加和删除 身份权限。IAM 用户指南

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

当您调用 Data API 时,可以在 AWS Secrets Manager 中使用密钥传递集群的凭证。要通过此方式传递凭证,您需要指定密钥的名称或密钥的 Amazon 资源名称 (ARN)。

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

在 Amazon Redshift 集群的密钥中存储您的凭证

  1. 使用 AWS Secrets Manager 创建包含集群凭证的密钥:

    • 当您选择 Store a new secret (存储新密钥) 时,请选择 Credentials for Redshift cluster (Redshift 集群凭证)

    • User name (数据库用户)、PasswordDB cluster (集群标识符) 的值存储在您的密钥中。

    • 使用键 RedshiftDataFullAccess 标记密钥。 AWS 托管策略 AmazonRedshiftDataFullAccess 仅允许对使用密钥 secretsmanager:GetSecretValue 标记的密钥执行 RedshiftDataFullAccess 操作。

    有关说明,请参阅 https://docs.amazonaws.cn/secretsmanager/latest/userguide/manage_create-basic-secret.html 中的创建基本密钥AWS Secrets Manager 用户指南。

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

    记下密钥的名称和 ARN。您可以在对 Data API 的调用中使用这些值。

调用 Amazon Redshift Data API 时的注意事项

在调用 Data API 时,请考虑以下事项:

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

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

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

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

  • 可用于查询以下节点类型的单节点和多节点集群:Data API

    • dc2.large

    • dc2.8xlarge

    • ds2.xlarge

    • ds2.8xlarge

    • ra3.xlplus

    • ra3.4xlarge

    • ra3.16xlarge

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

在调用 Amazon Redshift Data API 时选择身份验证凭证

调用 Data API 时,您可以为某些 API 操作使用以下身份验证方法之一。每个方法需要不同的参数组合。

AWS Secrets Manager

使用此方法,请提供存储在 secret-arn 中的 AWS Secrets Manager 密钥值。指定的密钥包含用于连接到数据库的凭证。您还将为 cluster-identifier 提供一个与密钥中的集群标识符匹配的值。

临时凭证

使用此方法,请提供您的 cluster-identifierdatabasedb-user 值。

对于这两种方法,您还可以提供指定集群所在 AWS 区域的 region 值。

在调用 Amazon Redshift Data API 时映射 JDBC 数据类型

下表将 Java 数据库连接 (JDBC) 数据类型映射到您在 Data API 调用中指定的数据类型。

JDBC 数据类型

数据 API 数据类型

INTEGER, TINYINT, SMALLINT, BIGINT

LONG

FLOAT, REAL, DOUBLE

DOUBLE

DECIMAL

STRING

BOOLEAN, BIT

BOOLEAN

BLOB, BINARY, LONGVARBINARY, VARBINARY

BLOB

CLOB

STRING

其他类型(包括与日期和时间有关的类型)

STRING

对于某些特定类型(例如 DECIMALTIME),可能需要提示。该提示指示 Data API 应将 String 值作为不同类型的传递到数据库。您可以通过在 SqlParameter 数据类型中包含 typeHint 中的值来实现这一点。typeHint 的可能值如下所示:

  • DECIMAL – 相应的 String 参数值作为 DECIMAL 类型的对象发送到数据库。

  • TIMESTAMP – 相应的 String 参数值作为 TIMESTAMP 类型的对象发送到数据库。接受的格式为 YYYY-MM-DD HH:MM:SS[.FFF]

  • TIME – 相应的 String 参数值作为 TIME 类型的对象发送到数据库。接受的格式为 HH:MM:SS[.FFF]

  • DATE – 相应的 String 参数值作为 DATE 类型的对象发送到数据库。接受的格式为 YYYY-MM-DD

注意

目前,Data API 不支持通用唯一标识符 (UUID) 的数组。

调用数据 API

您可以调用 Data API 或 AWS CLI 以在集群上运行 SQL 语句。运行 SQL 语句的主要操作是 ExecuteStatement。 支持 AWS 开发工具包所支持的编程语言。Data API有关这些内容的更多信息,请参阅用于在 AWS 上进行构建的工具

使用 Data API 调用AWS CLI

您可以使用 Data API 调用 AWS CLI。

以下示例使用 AWS CLI 调用 Data API。要运行示例,请编辑参数值以匹配您的环境。这些示例演示了一些 Data API 操作。有关更多信息,请参阅 AWS CLI Command Reference。

运行 SQL 语句

要运行 SQL 语句,请使用 aws redshift-data execute-statement AWS CLI 命令。

以下 AWS CLI 命令运行 SQL 语句并返回标识符以提取结果。此示例使用 AWS Secrets Manager 身份验证方法。

aws redshift-data execute-statement --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --sql "select * from stl_query limit 1" --database dev

以下为响应示例。

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598323175.823, "Database": "dev", "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:yanruiz-secret-hKgPWn" }

以下 AWS CLI 命令运行 SQL 语句并返回标识符以提取结果。此示例使用临时凭证身份验证方法。

aws redshift-data execute-statement --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --sql "select * from stl_query limit 1"

以下为响应示例。

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598306924.632, "Database": "dev", "DbUser": "myuser", "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766" }

列出有关 SQL 语句的元数据

要列出有关 SQL 语句的元数据,请使用 aws redshift-data list-statements AWS CLI 命令。运行此命令的授权基于调用方的 IAM 权限。

以下 AWS CLI 命令列出了运行的 SQL 语句。

aws redshift-data list-statements --region us-west-2 --status ALL

以下为响应示例。

{ "Statements": [ { "CreatedAt": 1598306924.632, "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766", "QueryString": "select * from stl_query limit 1", "Status": "FINISHED", "UpdatedAt": 1598306926.667 }, { "CreatedAt": 1598311717.437, "Id": "e0ebd578-58b3-46cc-8e52-8163fd7e01aa", "QueryString": "select * from stl_query limit 1", "Status": "FAILED", "UpdatedAt": 1598311719.008 }, { "CreatedAt": 1598313683.65, "Id": "c361d4f7-8c53-4343-8c45-6b2b1166330c", "QueryString": "select * from stl_query limit 1", "Status": "ABORTED", "UpdatedAt": 1598313685.495 }, { "CreatedAt": 1598306653.333, "Id": "a512b7bd-98c7-45d5-985b-a715f3cfde7f", "QueryString": "select 1", "Status": "FINISHED", "UpdatedAt": 1598306653.992 }, { "CreatedAt": 1598306836.273, "Id": "1d765bf4-b124-4ee5-b384-9e3e0417707b", "QueryString": "select 1", "Status": "CANCELLED", "UpdatedAt": 1598306836.944 } ] }

描述有关 SQL 语句的元数据

要获取 SQL 语句的元数据描述,请使用 aws redshift-data describe-statement AWS CLI 命令。运行此命令的授权基于调用方的 IAM 权限。

以下 AWS CLI 命令描述 SQL 语句。

aws redshift-data describe-statement --id d9b6c0c9-0747-4bf4-b142-e8883122f766 --region us-west-2

以下为响应示例。

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598306924.632, "Duration": 1095981511, "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766", "QueryString": "select * from stl_query limit 1", "RedshiftPid": 20859, "RedshiftQueryId": 48879, "ResultRows": 1, "ResultSize": 4489, "Status": "FINISHED", "UpdatedAt": 1598306926.667 }

获取 SQL 语句的结果

要从运行的 SQL 语句中提取结果,请使用 redshift-data get-statement-result AWS CLI 命令。运行此命令的授权基于调用方的 IAM 权限。

aws redshift-data get-statement-result --id d9b6c0c9-0747-4bf4-b142-e8883122f766 --region us-west-2

以下为响应示例。

{ "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "userid", "length": 0, "name": "userid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "query", "length": 0, "name": "query", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "label", "length": 0, "name": "label", "nullable": 0, "precision": 320, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "xid", "length": 0, "name": "xid", "nullable": 0, "precision": 19, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int8" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "pid", "length": 0, "name": "pid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "database", "length": 0, "name": "database", "nullable": 0, "precision": 32, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "querytxt", "length": 0, "name": "querytxt", "nullable": 0, "precision": 4000, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "starttime", "length": 0, "name": "starttime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "endtime", "length": 0, "name": "endtime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "type": 93, "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "aborted", "length": 0, "name": "aborted", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "insert_pristine", "length": 0, "name": "insert_pristine", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "concurrency_scaling_status", "length": 0, "name": "concurrency_scaling_status", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" } ], "Records": [ [ { "longValue": 1 }, { "longValue": 3 }, { "stringValue": "health " }, { "longValue": 1023 }, { "longValue": 15279 }, { "stringValue": "dev " }, { "stringValue": "select system_status from stv_gui_status; " }, { "stringValue": "2020-08-21 17:33:51.88712" }, { "stringValue": "2020-08-21 17:33:52.974306" }, { "longValue": 0 }, { "longValue": 0 }, { "longValue": 6 } ] ], "TotalNumRows": 1 }

描述表

要获取描述表的元数据,请使用 aws redshift-data describe-table AWS CLI 命令。

以下 AWS CLI 命令运行 SQL 语句并返回描述表的元数据。此示例使用 AWS Secrets Manager 身份验证方法。

aws redshift-data describe-table --region us-west-2 --cluster-identifier mycluster-test --database dev --schema information_schema --table sql_features --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn

以下为响应示例。

{ "ColumnList": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" } ] }

以下 AWS CLI 命令运行描述表的 SQL 语句。此示例使用临时凭证身份验证方法。

aws redshift-data describe-table --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --schema information_schema --table sql_features

以下为响应示例。

{ "ColumnList": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "sub_feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "sub_feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "is_supported", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "is_verified_by", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "comments", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" } ] }

列出集群中的数据库

要列出集群中的数据库,请使用 aws redshift-data list-databases AWS CLI 命令。

以下 AWS CLI 命令运行 SQL 语句以列出数据库。此示例使用 AWS Secrets Manager 身份验证方法。

aws redshift-data list-databases --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev

以下为响应示例。

{ "Databases": [ "dev" ] }

以下 AWS CLI 命令运行 SQL 语句以列出数据库。此示例使用临时凭证身份验证方法。

aws redshift-data list-databases --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev

以下为响应示例。

{ "Databases": [ "dev" ] }

列出数据库中的架构

要列出数据库中的架构,请使用 aws redshift-data list-schemas AWS CLI 命令。

以下 AWS CLI 命令运行 SQL 语句以列出数据库中的架构。此示例使用 AWS Secrets Manager 身份验证方法。

aws redshift-data list-schemas --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev

以下为响应示例。

{ "Schemas": [ "information_schema", "pg_catalog", "pg_internal", "public" ] }

以下 AWS CLI 命令运行 SQL 语句以列出数据库中的架构。此示例使用临时凭证身份验证方法。

aws redshift-data list-schemas --region us-west-2 --db-user mysuser --cluster-identifier mycluster-test --database dev

以下为响应示例。

{ "Schemas": [ "information_schema", "pg_catalog", "pg_internal", "public" ] }

列出数据库中的表

要列出数据库中的表,请使用 aws redshift-data list-tables AWS CLI 命令。

以下 AWS CLI 命令运行 SQL 语句以列出数据库中的表。此示例使用 AWS Secrets Manager 身份验证方法。

aws redshift-data list-tables --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev --schema information_schema

以下为响应示例。

{ "Tables": [ { "name": "sql_features", "schema": "information_schema", "type": "SYSTEM TABLE" }, { "name": "sql_implementation_info", "schema": "information_schema", "type": "SYSTEM TABLE" } }

以下 AWS CLI 命令运行 SQL 语句以列出数据库中的表。此示例使用临时凭证身份验证方法。

aws redshift-data list-tables --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --schema information_schema

以下为响应示例。

{ "Tables": [ { "name": "sql_features", "schema": "information_schema", "type": "SYSTEM TABLE" }, { "name": "sql_implementation_info", "schema": "information_schema", "type": "SYSTEM TABLE" } ] }

排查 Amazon Redshift Data API 的问题

使用以下部分(标题为常见错误消息)帮助解决您使用 Data API 时遇到的问题。

用于查询的数据包太大

如果您看到一个错误,指示查询的数据包太大,通常是为行返回的结果集太大。数据库返回的结果集中的 Data API 大小限制为每行 64 KB。

要解决此问题,请确保结果集中的每一行都小于或等于 64 KB。

数据库响应超出大小限制

如果您看到一个错误,指示数据库响应已超出大小限制,则数据库返回的结果集的大小通常太大。数据库返回的结果集中的 Data API 限制为 100 MB。

要解决此问题,请确保对 Data API 的调用返回 100 MB 或更少数据。如果您需要返回超过 100 MB 的值,可以在查询中使用 LIMIT 子句运行多个语句调用。

使用 Amazon Redshift Data API 计划 Amazon EventBridge 操作

Amazon EventBridge 可帮助您响应 AWS 资源的状态更改。当您的资源的状态发生变化时,会自动向事件流发送事件。事件将发送到包含 Amazon Redshift 数据库的账户。您可以创建与流中选定事件匹配的规则,并将这些规则路由到目标以采取操作。您还可以使用规则按照预先确定的计划执行操作。有关更多信息,请参阅Amazon EventBridge 用户指南

要使用 Data API 安排 EventBridge 操作,关联的 IAM 角色必须信任 CloudWatch Events 的委托人 (events.amazonaws.com)。此角色应已附加与托管策略 AmazonEventBridgeFullAccess 等效的策略。它还应具有由 AmazonRedshiftDataFullAccess 管理的 Data API 策略权限。您可以在 IAM 控制台上使用这些权限创建 IAM 角色。在 IAM 控制台上创建角色时,为 CloudWatch Events 选择 AWS 服务可信实体。有关创建 IAM 角色的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console 中的创建用于 AWS 服务的角色(控制台)IAM 用户指南。

以下示例使用 AWS CLI 创建用于运行 SQL 语句的 EventBridge 规则。

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

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

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

输入 data.json 文件如下所示。

{ "Rule": "test-redshift-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-scheduler-statement", "WithEvent": true } } ] }