使用 Amazon Redshift 无服务器(预览版) - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon Redshift 无服务器(预览版)

以下是针对预览版 Amazon Redshift 无服务器的预发行文档。文档和功能都可能会更改。我们建议您仅在测试环境中使用此功能,不要在生产环境中使用。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版服务参与

如果您对此预览版有任何疑问,请通过电子邮件 redshift-preview-serverless@amazon.com 与 Amazon Redshift 无服务器团队联系。对于服务问题,请联系 Amazon Web Services Support。

Amazon Redshift 无服务器会自动预置数据仓库容量并智能扩展基础资源。无服务器端点可在几秒钟内调整容量,以便为要求最苛刻和急剧波动的工作负载提供始终如一的高性能和简化操作。

使用无服务器端点,您可从以下功能中受益:

  • 无需设置、优化和管理 Amazon Redshift 预置集群即可访问和分析数据。

  • 使用卓越的 Amazon Redshift SQL 功能、行业领先的性能和智能湖仓架构,以无缝查询数据仓库、数据湖和操作数据源。

  • 通过在几秒钟内实现智能和弹性伸缩,即使是最苛刻和急剧波动的工作负载,也能提供始终如一的高性能和简化操作。

  • 仅在使用数据仓库时付费。

通过无服务器端点,您可使用控制台界面访问无服务器数据仓库。通过数据仓库,您可访问 Amazon Redshift 托管存储和 Amazon S3 数据湖。

可通过以下部分了解 Amazon Redshift 无服务器的基础知识。

Amazon Redshift 无服务器入门

要使用 Amazon Redshift 控制台,您需要 IAM 权限,如《Amazon Redshift 集群管理指南》将基于身份的策略(IAM 策略)用于 Amazon Redshift 所述。此外,要使用 Amazon Redshift 无服务器,请将类似以下策略的策略附加到您的 IAM 角色或 IAM 用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift-serverless:*", "Resource": "*" } ] }

要开始使用,请打开 Amazon Web Services Management Console,选择 Amazon Redshift 控制台,然后选择Try Amazon Redshift Serverless(尝试 Amazon Redshift 无服务器)。

如果您拥有正确的 Amazon Identity and Access Management(IAM)权限,首次访问无服务器端点控制台时,您可以查看 Amazon Redshift 无服务器入门页。您的企业可能有资格获得用于无服务器端点的无服务器积分。有关更多信息,请参阅 Amazon Redshift 免费试用

此处可通过 Use default settings(使用默认设置)或 Customize settings(自定义设置)来创建无服务器端点和数据库。进行自定义时,您会看到适用于您环境的以下设置:

  • Database name(数据库名称)– 要在无服务器端点环境中创建的初始(默认)数据库名称。此数据库由您的账户拥有,并在当前 Amazon Web Services 区域 中创建。其名称为 dev,且您无法对其进行更改。

  • Admin user credentials(管理员用户凭证)– 初始数据库管理员的用户名和密码。此用户拥有数据库的所有权权限。有关更多信息,请参阅Amazon Redshift 无服务器中的 Identity and Access Management

  • Virtual Private Cloud (VPC) – 在其中创建数据库的 VPC 的名称。

  • VPC security groups(VPC 安全组)– 这些安全组定义了 VPC 中可以使用哪些子网和 IP 范围。

  • Subnet(子网)– VPC 中与指定数据库关联的子网。有关选择子网时的当前注意事项,请参阅 已知问题和限制

  • 默认情况下,使用 Amazon 拥有的 KMS 密钥来加密您的数据。如果不使用 Amazon 拥有的 KMS 密钥,您可使用 Customize encryption settings(自定义加密设置),以选择您管理的 KMS key(KMS 密钥)– Amazon KMS key 用于加密无服务器端点中的资源。有关创建 KMS 密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥

  • Audit logging(审计日志记录)– 想要导出的审计日志类型。有关更多信息,请参阅Amazon Redshift 无服务器的审计日志记录

  • Permissions(权限)– 您与无服务器端点关联的 IAM 角色必须包含与 redshift-serverless.amazonaws.comredshift.amazonaws.com 的信任关系。有关此 IAM 角色的更多信息,请参阅使用 Amazon Redshift 无服务器所需的权限

Amazon Redshift 无服务器为当前 Amazon Web Services 区域 中您的 Amazon Web Services 账户 初始化资源。初始化过程可能需要几分钟时间来设置环境。Amazon Redshift 查询编辑器 v2 在新选项卡中打开,以便您开始使用无服务器端点。

Amazon Redshift 无服务器控制台

Amazon Redshift 无服务器控制台导航菜单包含以下页面和链接:

  • Serverless dashboard(无服务器控制面板)用于查看您的资源和活动摘要。

  • Query editor(查询编辑器)链接用于打开 Amazon Redshift 查询编辑器 v2,以管理和查询无服务器端点中的数据。查询编辑器 v2 是一个 SQL 客户端,您可以在其中运行查询并创建和加载数据库。

  • Serverless configuration(无服务器配置)用于更新无服务器端点设置。

  • Query and database monitoring(查询和数据库监控)用于查看和分析查询活动。

  • Resource monitoring(资源监控)用于查看您的容量和计算使用情况。

  • Datashares(数据共享)用于管理账户级别的数据共享。您可在此页面管理无服务器端点可用的数据共享。有关更多信息,请参阅Amazon Redshift 无服务器中的数据共享

  • Provisioned clusters dashboard(预置集群控制面板)用于查看预置集群的摘要并打开 Amazon Redshift 控制台。

  • Documentation(文档)链接用于打开文档登录页面。

Serverless dashboard(无服务器控制面板)页面中,您可查看资源摘要和使用情况图表。

  • Resource summary(资源摘要)– 本部分显示无服务器端点中数据库和快照的数量。

  • Query summary(查询摘要)– 本部分显示过去一小时的查询活动。

  • RPU capacity used(已使用的 RPU 容量)– 本部分显示过去一小时内使用的容量。

  • Datashares(数据共享)– 本部分显示此账户或另一账户中可用或需要授权的数据共享数量。

Serverless configuration(无服务器配置)页面中,您可查看无服务器端点环境设置。此页面显示有关无服务器端点设置的信息,例如 General information(一般信息)、Data backup(数据备份)、Data access(数据访问)和 Limits(限制)。

General information(一般信息)部分显示以下内容:

  • Serverless namespace(无服务器命名空间)– 是无服务器端点的标识符。

  • Date created(创建日期)– 是创建无服务器端点的日期和时间。

  • Status(状态)– 您的无服务器端点必须是 Available,以查询或更改某些配置设置。

  • Change admin password(更改管理员密码)– 您可以更改 Admin user(管理员用户)的密码。

  • Database name(数据库名称)– 是使用无服务器端点创建的初始数据库的名称。连接到无服务器端点时,可以在连接字符串中使用此名称。

  • Serverless credit remaining(剩余无服务器积分)– 是账户的剩余积分数量。

  • Endpoint(端点)– 无服务器端点是否用于某些连接。

  • JDBC URL – 是用于从 JDBC 工具进行连接的连接字符串。

  • ODBC URL – 是用于从 ODBC 工具进行连接的连接字符串。

您可以在 Data backup(数据备份)选项卡上使用以下选项:

  • Snapshots(快照)– 您可以创建、删除和管理无服务器端点数据的快照。目前,快照的保留期为 indefinitely。您可以授权 Amazon Web Services 账户 从特定快照中还原无服务器。

  • Recovery points(恢复点)– 显示自动创建的恢复点,以便可以还原过去 24 小时内的意外写入或删除。如果想要将恢复点保留更长时间段,则可以从恢复点创建快照。目前,快照的保留期为 indefinitely

您可在 Data access(数据访问)选项卡上使用以下选项:

  • Network and security(网络和安全性)设置 – 您可以查看与 VPC 相关的值,Amazon KMS 加密值和审计日志记录值。只能更新审计日志记录值。

  • Amazon KMS key – Amazon KMS key 用于加密无服务器端点中的资源。

  • Permissions(权限)– 您可以管理 IAM 角色,Amazon Redshift 无服务器可担任此角色以代表您来使用资源。

  • Redshift-managed VPC endpoints(Redshift 托管 VPC 终端节点)– 您可从另一个 VPC 或子网访问无服务器端点。

您可以使用 Limits(限制)选项卡上的以下选项:

  • Base capacity in Redshift processing units (RPUs)(以 Redshift 处理单元 (RPU) 计算的基本容量)设置 – 您可以设置用于处理工作负载的基本容量。要改善查询性能,请增加 RPU 值。

  • Usage limits(使用限制)– 在启动操作之前的一段时间内,无服务器端点可使用的最大计算资源。您可限制无服务器端点用于运行工作负载的资源数量。使用情况以 Redshift 处理单元(RPU)秒为单位。RPU 秒是一秒内使用的 RPU 数量。您可以确定达到您设置的阈值时的操作,如下所示:

    • 发送提示。

    • 将条目记录到系统表中。

    • 禁用用户查询。

有关更多信息,请参阅使用基础和最大值参数自动扩缩容量

Datashares(数据共享)选项卡上,可以使用以下选项:

  • Datashares created in my namespace(在我的命名空间中创建的数据共享)设置 – 您可以创建数据共享并与其它命名空间和 Amazon Web Services 账户 共享。

  • Datashares from other namespaces and Amazon Web Services 账户(来自其它命名空间和 Amazon Web Services 账户 的数据共享)– 您可以从其它命名空间和 Amazon Web Services 账户 的数据共享中创建数据库。

Query and database monitoring(查询和数据库监控)页面上,您可以查看您的 Query history(查询历史记录)和 Database performance(数据库性能)图表。您可以根据多个维度筛选数据。

Query history(查询历史记录)选项卡上,您会看到以下图表 [您可以选择 Query list(查询列表)和 Resource metrics(资源指标)]:

  • Query runtime(查询运行时间)– 此图表显示哪些查询在同一时间范围内运行。在图表中选择栏以查看更多查询执行详细信息。

  • Queries and loads(查询和加载)– 本部分列出了按 Query ID(查询 ID)进行的查询和加载。

  • RPU capacity used(已使用的 RPU 容量)– 此图表显示了 Redshift 处理单元(RPU)的总容量。

  • Database connections(数据库连接数)– 此图表显示了活动的数据库连接数。

Database performance(数据库性能)选项卡上,您会看到以下图表:

  • Queries completed per second(每秒完成的查询数)– 此图表显示了每秒完成的平均查询数。

  • Query duration(查询持续时间)– 此图表显示了完成查询的平均时间量。

  • Database connections(数据库连接数)– 此图表显示了活动的数据库连接数。

  • Running queries(正在运行的查询数)– 此图表显示了在给定时间内正在运行的查询总数。

  • Queued queries(排队的查询)– 此图表显示了在给定时间排队的查询总数。

  • Query run time breakdown(查询运行时间细分)– 此图表显示了查询类型运行的查询所花费的总时间。

Resource monitoring(资源监控)页面上,您可以查看已消耗资源的图表。您可以根据几个方面来筛选数据。

  • RPU capacity used(已使用的 RPU 容量)– 此图表显示了 Redshift 处理单元(RPU)的总容量。

  • Compute usage(计算使用率)– 此图表显示了所选时间范围内按时间段划分的 Amazon Redshift 无服务器的累计使用情况。

Datashares(数据共享)页面上,您可以管理 In my account(在我的账户)和 From other accounts(从其它账户)的数据共享。有关数据共享的更多信息,请参阅Amazon Redshift 无服务器中的数据共享

使用 Amazon Redshift 无服务器所需的权限

当您使用 Amazon Redshift 无服务器时,您与无服务器端点关联的 IAM 角色需要与 redshift.amazonaws.comredshift-serverless.amazonaws.com 两者建立信任关系,以允许 Amazon Redshift 代表您承担权限。

以下示例显示了 JSON 格式的策略文档,该策略用于与 Amazon Redshift 无服务器设置信任关系。

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

有关信任实体更多信息,请参阅 IAM 用户指南中的创建向 Amazon 服务委派权限的角色

Amazon Redshift 无服务器功能的概览

无服务器端点也支持 Amazon Redshift 预置集群支持的大多数功能。以下列出了您可以通过无服务器端点使用的某些关键 Amazon Redshift 功能。

  • 快照 – 您可以将无服务器端点或预置集群的快照还原到无服务器端点。有关更多信息,请参阅使用快照和恢复点

  • 恢复点 – Amazon Redshift 无服务器每 30 分钟自动创建一个恢复点。这些恢复点将保留 24 个小时。在意外写入或删除之后,您可以使用它们还原无服务器端点。从恢复点还原时,无服务器端点的数据库中的所有数据都将恢复到较早的时间点。如果需要将恢复点保留较长时间,也可以从恢复点创建快照。有关更多信息,请参阅使用快照和恢复点

  • 基本 RPU 容量 – 您可以在 Redshift 处理单元(RPU)中设置基本容量。一个 RPU 提供 2 个 vCPU 和 16 GiB 内存。Amazon Redshift 使用此测量值来限制用于工作负载的资源(以此种方式限制成本)。您可以增加此值以提高查询性能。原定设置为 128 个 RRU。

  • 跨区域数据共享的使用限制 – 您可限制从生产者区域向使用者区域传输的数据量。数据传输成本因 Amazon Web Services 区域 而不同。

  • 用户定义的函数(UDF)– 您可以在无服务器端点上运行用户定义的函数(UDF)。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的创建用户定义的函数

  • 存储过程 – 您可在无服务器端点上运行存储过程。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的创建存储过程

  • 具体化视图 – 您可以在无服务器端点上创建具体化视图。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的创建具体化视图

  • 空间函数 – 您可在无服务器端点上运行空间函数。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的查询空间数据

  • 联合查询 – 您可以运行查询,以将数据与 Aurora 和 Amazon RDS 数据库与无服务器端点连接起来。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的通过联合查询来查询数据

  • 数据湖查询 – 您可以运行查询,以将数据与 Amazon S3 数据湖与无服务器端点连接起来。

  • HyperLogLog – 您可以在无服务器端点上运行 HyperLogLog 函数。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的使用 HyperlogLog 草图

  • 跨数据库查询数据 – 您可以在无服务器端点上跨数据库查询数据。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的跨数据库查询数据

  • 数据共享 – 您可以使用无服务器端点访问预置集群上的数据共享。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的跨集群共享数据

  • 半结构化数据查询 – 您可以通过无服务器端点上的 SUPER 数据类型来摄取和存储半结构化数据。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的摄取和查询半结构化数据

  • Amazon Redshift 机器学习 – 您可以将 Amazon Redshift 机器学习与无服务器端点结合使用。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的使用机器学习

  • SQL 命令和函数 – 除了一些例外情况(例如 REBOOT_CLUSTER),您可在无服务器端点上使用 Amazon Redshift SQL 命令和函数。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 SQL 参考

无服务器端点不支持 Amazon Redshift 预置集群支持的某些功能。下面列出了其中某些功能:

  • Amazon Redshift Spectrum

  • 参数组

  • 工作负载管理

  • 将 Amazon 合作伙伴集成

  • 维护时段和软件版本跟踪

已知问题和限制

以下问题为开放式问题:

  • 使用 Amazon Redshift 查询编辑器 v2 时,如果长时间处于不活跃状态之后,运行查询可能会显示转动的进度条,而不显示查询结果窗格。刷新 Web 浏览器可解决此问题。

  • 在查询编辑器 v2 中取消多个查询有时会导致进度条转动。刷新 Web 浏览器可解决此问题。

  • 只有具有以下 ID 的可用区中才支持无服务器端点:

    • use1-az2

    • use1-az4

    • use1-az6

    • use2-az1

    • use2-az2

    配置无服务器端点时,打开 Additional considerations(其它注意事项),并确保在 Subnet(子网)中提供的子网 ID 至少包含一个受支持的可用区 ID。要查看子网到可用区 ID 映射,请转到 VPC 控制台并选择 Subnets(子网),以通过可用区 ID 来查看子网 ID 列表。验证您的子网已映射到受支持的可用区 ID。要创建子网,请参阅《Amazon VPC 用户指南》中的在 VPC 中创建子网

  • 每个 Amazon Web Services 账户 端点只能有一个无服务器端点。

  • 不支持公有端点。

  • Amazon Redshift 无服务器没有维护时段。软件版本更新将自动应用。任何正在进行的连接都会在 Amazon Redshift 切换版本时断开。客户需要重新建立连接,Amazon Redshift 无服务器可立即工作。

使用 Amazon Redshift 查询编辑器 v2 和无服务器端点

您可以使用查询编辑器 v2 管理和查询数据库。查询编辑器 v2 是一款功能齐全的基于 Web 的 SQL 客户端工具,用于连接到您的 Amazon Redshift 数据。要设置为使用 Amazon Redshift 查询编辑器 v2(包括需要哪些权限),请参阅《Amazon Redshift 集群管理指南》配置您的 Amazon Web Services 账户

查找 Query data(查询数据)按钮,以使用查询编辑器 v2 查询无服务器端点中的数据。当您从 Amazon Redshift 无服务器控制台调用查询编辑器 v2 时,将打开一个新的浏览器选项卡,其中包含查询编辑器。查询编辑器 v2 将从客户端计算机连接到无服务器端点环境。您可将所有 Amazon Redshift SQL 功能与 Amazon Redshift 无服务器结合使用,包括半结构化数据支持、数据共享、机器学习函数、对 Amazon S3 数据湖的查询和联合查询。您可使用查询编辑器 v2 执行以下任务:

  • 在您的 Serverless(无服务器)和预置集群中查询数据。

  • 将示例数据加载到 sample_data_dev 数据库。

  • 创建数据库、架构、表和函数。

  • 保存并分享查询。

  • 保存图表。

有关查询编辑器 v2 的更多信息,请参阅《Amazon Redshift 集群管理指南》中的使用 Amazon Redshift 查询编辑器 v2 查询数据库

连接到无服务器端点

Amazon Redshift 无服务器为您的 Amazon Web Services 账户 提供了无服务器端点。如果您有多个团队或项目并且想单独管理成本,则可以单独使用 Amazon Web Services 账户。

无服务器端点连接到当前 Amazon Web Services 区域 中您的 Amazon Web Services 账户 中的无服务器环境。无服务器端点在 VPC 中运行,不可公开访问。

您可以使用以下语法连接到端点上的数据库(名为 dev)。

account-number.aws-region.redshift-serverless.amazonaws.com:port/dev

例如,以下连接字符串指定区域 us-east-1。

123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev

通过 Amazon Redshift 提供的 JDBC 驱动程序版本 2 驱动程序来使用首选 SQL 客户端,您可以使用以下方法之一连接到无服务器端点。

要使用 JDBC 驱动程序版本 2.x 连接 IAM,请使用以下语法。

jdbc:redshift:iam://redshift-serverless-default:aws-region/dev

例如,以下连接字符串指定区域 us-east-1。

jdbc:redshift:iam://redshift-serverless-workspace:us-east-1/dev

要使用 JDBC 驱动程序版本 2.0 或更高版本来连接数据库身份验证的用户名和密码,请使用以下语法。

jdbc:redshift://account-number.aws-region.redshift-serverless.amazonaws.com:5439/dev

例如,以下连接字符串在 us-east-2 区域中指定账户 ID 123456789012。

jdbc:redshift://123456789012.us-east-2.redshift-serverless.amazonaws.com:5439/dev

要使用 JDBC 驱动程序版本 2.1.0.3(可在预览期内应请求提供)连接 IAM,请使用以下语法。

jdbc:redshift:iam://account-number.aws-region.redshift-serverless.amazonaws.com:5439/dev

例如,以下连接字符串在 us-east-2 区域中指定账户 ID 123456789012。

jdbc:redshift:iam://123456789012.us-east-2.redshift-serverless.amazonaws.com:5439/dev

有关驱动程序的更多信息,请参阅《Amazon Redshift 集群管理指南》中的配置连接

Amazon Redshift 无服务器在以下 Amazon Web Services 区域 可用:

  • 美国东部(弗吉尼亚北部)区域 (us-east-1)

  • 美国东部(俄亥俄)区域 (us-east-2)

  • 美国西部(俄勒冈)区域 (us-west-2)

  • 欧洲(爱尔兰)区域(eu-west-2)

  • 欧洲(法兰克福)区域 (eu-central-1)

  • 亚太地区(东京)区域 (ap-northeast-1)

使用数据 API 连接到无服务器端点

您还可使用 Amazon Redshift Data API 连接到无服务器端点。停止您的 Amazon CLI 调用中的 cluster-identifier 参数,以将查询路由到无服务器端点。

以下示例运行 SQL 语句,以从无服务器端点检索数据。此示例使用临时凭证身份验证方法。

aws redshift-data execute-statement --sql "select 1;" --database dev
{ "CreatedAt": 1636062665.587, "Database": "dev", "Id": "ad30c9a1-be92-4534-9edf-7d9aea4ea6a3" }

以下示例介绍了提交到无服务器端点的 SQL 语句。

aws redshift-data describe-statement --id 1d222b16-6470-467f-a1f8-7f38103dab11
{ "CreatedAt": 1636064662.659, "Duration": 4358742, "HasResultSet": true, "Id": "1d222b16-6470-467f-a1f8-7f38103dab11", "QueryString": "select 1;", "RedshiftPid": 1073881246, "RedshiftQueryId": 0, "ResultRows": 1, "ResultSize": 11, "Status": "FINISHED", "UpdatedAt": 1636064663.324

以下示例检索了针对无服务器端点运行的 SQL 语句的结果。

aws redshift-data get-statement-result --id 1d222b16-6470-467f-a1f8-7f38103dab11
{ "Records": [ [ { "longValue": 1 } ] ], "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "?column?", "length": 0, "name": "?column?", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "", "tableName": "", "typeName": "int4" } ], "TotalNumRows": 1 }

以下示例运行 SQL 语句,以从无服务器端点检索数据。此示例使用 Amazon Secrets Manager 身份验证方法。

首先,在 Amazon Secrets Manager 中创建密钥。

aws secretsmanager create-secret --name serverless-test --secret-string '{ "password": "Testing12345", "engine": "redshift", "host": "123456789012.us-east-1.redshift-serverless-dev.amazonaws.com", "port": 5439, "username": "testUser" }'
{ "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG", "Name": "serverless-test", "VersionId": "961a01eb-a30f-4d56-ab05-3708fd60d728" }

然后,使用密钥运行 SQL 语句进行身份验证。

aws redshift-data execute-statement --sql "select * from sys_query_history;" --database dev --secret-arn arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG
{ "CreatedAt": 1635990593.75, "Database": "dev", "Id": "56662da2-5691-4a8d-b1c1-cb73f577f08d", "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG" }

您还可以运行 SQL 语句的描述,以查看关联密钥。

aws redshift-data describe-statement --id 56662da2-5691-4a8d-b1c1-cb73f577f08d
{ "CreatedAt": 1635990593.75, "Duration": 632754750, "HasResultSet": true, "Id": "56662da2-5691-4a8d-b1c1-cb73f577f08d", "QueryString": "select * from sys_query_history;", "RedshiftPid": 1073963329, "RedshiftQueryId": 100880, "ResultRows": 7, "ResultSize": 4170, "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG", "Status": "FINISHED", "UpdatedAt": 1635990595.083 }

有关数据 API 的更多信息,请参阅《Amazon Redshift 集群管理指南》中的使用 Amazon Redshift Data API

将 SSL 连接到无服务器端点

配置与 Amazon Redshift 无服务器的安全连接

Amazon Redshift 支持安全套接字层(SSL)连接,以加密查询和数据。要设置安全连接,您可以使用相同配置设置到预置 Redshift 集群的连接。按照 Configuring security options for connections(配置连接的安全选项)中的步骤进行操作,其中介绍了如何下载和安装可用的 SSL 证书捆绑包。该捆绑包适用于连接到无服务器 Redshift 实例和预置集群。

Amazon Redshift 无服务器中的数据共享

data sharing(数据共享)在无服务器端点中更新时,使用其共享最新和一致信息。

Amazon Redshift 无服务器中的数据共享

通过 data sharing(数据共享),您可以实时访问数据,以便您的用户可在无服务器端点中查看最新和一致的信息。

在 Amazon Redshift 无服务器中共享数据入门

您可在其中或跨 Amazon Web Services 账户 共享数据,以读取不同 Amazon Redshift 无服务器端点的目的。

您可以使用 SQL 界面或 Amazon Redshift 控制台开始使用数据共享。有关更多信息,请参阅使用 SQL 界面开始共享数据通过控制台开始使用数据共享,其位于《Amazon Redshift 数据库开发人员指南》的《Amazon Redshift 数据库开发人员指南》中。

在 Amazon Web Services 账户 中,您可为从预置集群到无服务器端点或从无服务器端点到预置集群的读取目的共享数据。有关使用 SQL 接口在 Amazon Web Services 账户 中共享数据的信息,请参阅 Amazon Redshift 数据库开发人员指南中的在 Amazon Web Services 账户 中共享数据

在各 Amazon Web Services 账户 中,您可为以下读取目的共享数据,从无服务器端点到另一个无服务器端点、从预置集群到无服务器端点,或从无服务器端点共享到预置集群。有关跨 Amazon Web Services 账户 数据共享的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的跨 Amazon Web Services 账户 共享数据

要在 Amazon Web Services 账户 中开始共享数据,请打开 Amazon Web Services Management Console,然后选择 Amazon Redshift 控制台。选择 Serverless configuration(无服务器配置),然后选择 Datashares(数据共享)。按照《Amazon Redshift 数据库开发人员指南》中的使用控制台开始数据共享中的步骤进行操作。

要开始跨 Amazon Web Services 账户 共享数据,请打开 Amazon Web Services Management Console,然后选择 Amazon Redshift 控制台。选择 Datashares(数据共享)。按照《Amazon Redshift 数据库开发人员指南》中的使用控制台开始数据共享中的步骤进行操作。

Amazon Redshift 无服务器中的数据共享注意事项

以下是使用 Amazon Redshift 无服务器中的数据共享时的注意事项:

  • 与预置集群共享数据时,Amazon Redshift 仅支持生产者和使用者集群的 ra3.16xlarge、ra3.4xlarge 和 ra3.xlplus 实例类型上的数据共享。

  • 默认情况下,无服务器端点会加密。

有关数据共享限制的列表,请参阅《Amazon Redshift 数据库开发人员指南》中的数据共享的限制

使用 Amazon Redshift 无服务器监控查询和工作负载

您可使用提供的系统视图监控无服务器端点查询和工作负载。

监控视图

Monitoring views(监控视图)是 Amazon Redshift 无服务器中用于监控查询和工作负载使用情况的系统视图。这些视图位于 pg_catalog 架构中。可用的系统视图旨在为您提供监控无服务器端点所需的信息,这比预置集群所需的信息简单。SYS 系统视图旨在与无服务器端点配合使用。要显示这些视图提供的信息,请运行 SQL SELECT 语句。

系统视图的定义是为了支持以下监控目标。

工作负载监控

您可以随时间推移监控查询活动,以便:

  • 了解工作负载模式,这样您就可以了解正常运行状况(基准)以及业务服务级别协议(SLA)中的内容。

  • 快速识别偏离正常运行的状况,这可能是个暂时性问题,或是需要采取进一步操作的问题。

数据传入和传出监控

进出无服务器端点的数据移动是一项关键函数。您可以使用 COPY 和 UNLOAD 来传入或传出数据,并且必须密切监控传输的字节/行数和文件的完成进度,以跟踪遵守业务 SLA 的情况。这通常是通过频繁运行系统表查询(即每分钟)来完成,以便跟踪进度,并在检测到重大偏差时发出调查/纠正操作的提示。

故障和问题诊断

某些情况下,必须对查询或运行时故障采取措施。开发人员依靠系统表自行诊断问题,并确定正确的纠正补救措施。

性能优化

您可能需要优化从一开始就不符合 SLA 要求的查询或随时间推移而降级的查询。要进行优化,您需要获得运行时详细信息,包括运行计划、统计数据、持续时间和资源消耗。您需要用于违规查询的基准数据,以确定偏差的原因并指导您如何改进。

用户对象事件监控

您需要监控用户对象上的操作和活动,例如刷新具体化视图、vacuum 和分析。这包括系统管理的事件,例如具体化视图的自动刷新。如果事件是用户启动的,您想监控事件结束时间,或者如果是系统启动的,则监控最后一次成功执行。

计费的使用情况跟踪

您可以随时间转移监控您的使用情况趋势,以便:

  • 告知预算计划和业务扩展估计值。

  • 确定潜在的成本节约机会,例如删除冷数据。

您无法使用 Amazon Redshift 无服务器查询 STL、STV、SVCS、SVL 以及某些 SVV 系统表和视图,但以下情况除外:

您可以查询以下 SYS 系统视图,以监控无服务器端点。

SYS_QUERY_HISTORY

使用 SYS_QUERY_HISTORY 查看用户查询的详细信息。每行代表一个用户查询,其中包含某些字段的累积统计数据。此视图包含许多类型的查询,例如数据定义语言(DDL)、数据操作语言(DML)、复制、卸载和 Amazon Redshift Spectrum。它包含正在运行和已完成的查询。

SYS_QUERY_HISTORY 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交查询的用户标识符。
query_id bigint 查询标识符。
transaction_id bigint 事务标识符。
session_id integer 运行查询进程的进程标识符。
database_name character(32) 在发起查询时用户连接到的数据库的名称。
start_time timestamp 查询开始的时间。
end_time timestamp 查询完成的时间。
elapsed_time bigint 在查询上花费的总时间(微秒)。
status character(64) 查询的状态。有效值:planning、queued、running、returning、failed、canceled、和 success。
result_cache_hit Boolean 指示查询是否命中结果缓存。
queue_time bigint 在服务类查询队列上花费的总时间(微秒)。
execution_time bigint 在服务类中运行的总时间(微秒)。
query_text character(4000) 查询字符串。此字符串可能会被截断。
query_label character(320) 查询的短名称。
query_type character(32) 查询类型,例如,SELECT、INSERT、UPDATE、UNLOAD COPY、COMMAND、DDL、UTILITY、CTAS 和 OTHER。
error_message character(512) 查询失败的原因。
returned_rows bigint 返回到客户端的行数。
returned_bytes bigint 返回到客户端的字节数。
redshift_version character(256) 查询运行时的 Amazon Redshift 版本。

SYS_QUERY_DETAIL

使用 SYS_QUERY_DETAILS 在步骤级别查看查询的详细信息。每一行代表特定 WLM 查询的一个步骤,其中包含详细信息。此视图包含许多类型的查询,例如 DDL、DML 和实用程序命令(例如:复制和卸载)。根据查询类型,某些列可能不相关。例如,external_scanned_bytes 与内部表无关。

注意

没有相应的重写查询的查询仅在 SYS_QUERY_HARISTISS 视图中具有条目,在 SYS_QUERY_DETAILS 视图没有条目。

SYS_QUERY_DETITIONS 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交查询的用户标识符。
query_id bigint 查询标识符。
child_query_sequence integer 重写的用户查询的顺序。从 0 开始,类似于 segment_id。
stream_id integer 查询执行流的流标识符。
segment_id integer 查询分段的分段标识符。
step_id integer 分段中的步骤标识符。
step_name character(136) 分段中的步骤名称。例如,scan、hash、agg 等。
table_id integer 永久性表扫描的表标识符。
table_name character(136) 正在操作的步骤的表名。
is_rrsscan 字符 指示步骤是否为扫描步骤的值。True(t)则表示使用了限制范围的扫描。
警报 character(1024) 提示事件的描述。
start_time time 查询步骤开始的时间。
end_time time 查询步骤完成的时间。
duration bigint 在步骤上花费的时间(微秒)。
input_bytes bigint 当前步骤的输入字节。
input_rows bigint 当前步骤的输入行。
output_bytes bigint 当前步骤的输出字节。
output_rows bigint 当前步骤的输出行。
blocks_read bigint 步骤读取的数据块数。
blocks_write bigint 步骤写入的数据块数。
local_read_block bigint 本地磁盘缓存中的读取 I/O 数。
remote_read_block bigint 从远程读取的数据块数。
CPU_time bigint 在 CPU 上花费的时间(单位为微秒)。
network_time bigint 在网络分配上花费的时间(单位为微秒)。
internal_lock_time bigint 在内部锁定上花费的时间(单位为微秒)。

SYS_EXTERNAL_QUERY_DETAIL

使用 SYS_EXTERNAL_QUERY_DETAILS 查看段级别查询的详细信息。每行代表来自特定 WLM 查询的段,其中包含 Amazon S3 中处理的行数、处理的字节数以及外部表的分区信息等详细信息。此视图除了具有与外部查询处理相关的更多详细信息之外,每一行还将在 SYS_QUERY_DETAILS 视图中有一个相应条目。

SYS_EXTERNAL_QUERY_DETAILY 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交查询的用户标识符。
query_id bigint 外部查询的查询标识符。
child_query_sequence integer 重写的用户查询的顺序。从 0 开始,类似于 segment_id。
transaction_id bigint 事务标识符。
segment_id integer 查询分段的分段标识符。
source_type character(32) 查询的数据源类型,可能是针对 Redshift Spectrum 的 S3、针对联合查询的 PG
start_time time 查询开始的时间。
end_time time 查询完成的时间。
duration bigint 在查询上花费的时间(微秒)。
total_partitions integer Amazon S3 查询所需的分区数。
qualified_partitions integer Amazon S3 查询扫描的分区数。
scanned_file integer 扫描的 Amazon S3 文件数。
returned_rows bigint Amazon S3 查询的扫描行数,或联合查询返回的行数。
returned_bytes bigint Amazon S3 查询的扫描字节数或联合查询返回的字节数。
file_format character(16) Amazon S3 文件的文件格式。
file_location character(256) 外部表的 Amazon S3 位置。
external_query_text character(4000) 联合查询的段级查询文本。

SYS_LOAD_HISTORY

使用 SYS_LOAD_HISTORY 查看 COPY 命令的详细信息。每行代表一个 COPY 命令,其中包含某些字段的累积统计数据。它包含正在运行和已完成的 COPY 命令。

SYS_LOAD_HORITY 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交副本用户的标识符。
query_id bigint 副本的查询标识符。
status character(64) 副本的状态。有效值为 runningcompletedaborted
session_id integer 运行副本的进程的进程标识符。
transaction_id bigint 事务标识符。
database_name character(64) 在发起操作时用户连接到其中的数据库的名称。
table_name character(128) 复制到其中的表名称。
start_time timestamp 复制开始的时间。
end_time timestamp 复制完成的时间。
duration bigint 在 COPY 命令中花费的时间(微秒)。
data_source character(256) 要复制的文件输入的 Amazon S3 位置。
Loaded_rows bigint 复制到表的行数。
Loaded_bytes bigint 复制到表的字节数。
source_file_count integer 源文件中的文件数目。
source_file_bytes bigint 源文件中的字节数。
error_count integer 错误计数。

SYS_LOAD_ERROR_DETAIL

使用 SYS_LOAD_ERROR_DETAIL 查看 COPY 命令错误的详细信息。每行代表一个 COPY 命令。它包含正在运行和已完成的 COPY 命令。

SYS_LOAD_ERROR_DETAIL 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交副本用户的标识符。
database_name character(64) 发起复制时用户连接到其中的数据库的名称。
transaction_id bigint 事务标识符。
session_id integer 运行副本的进程的进程标识符。
query_id bigint 副本的查询标识符。
table_id integer 表标识符。
start_time timestamp 复制开始的时间(UTC)。
file_name character(256) 要加载的输入文件的完整路径。
line_number bigint 加载文件中出现错误的行号。加载 JSON 文件时,包含错误的 JSON 对象的最后一行的行号。
column_name character(127) 存在错误的字段。
column_type character(10) 存在错误的字段的数据类型。
column_length character(10) 列长度(如果适用)。当数据类型具有限制长度时填充此字段。例如,对于数据类型为“character(3)”的列,此列将包含值“3”。
position integer 字段中错误的位置。
raw_line character(1024) 包含错误的原始加载数据。加载数据中的多字节字符替换为句点。
raw_field_value character(1024) 导致解析错误的字段 column-name 的预解析值。
error_code integer 错误代码。
error_message character(100) 错误的说明。

SYS_UNLOAD_HISTORY

使用 SYS_UNLOAD_HISTORY 查看 UNLOAD 命令的详细信息。每行代表一个 UNLOAD 命令,其中包含某些字段的累积统计数据。它包含正在运行和已完成的 UNLOAD 命令。

SYS_UNLOAD_HORITY 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
user_id integer 提交卸载的用户标识符。
query_id bigint UNLOAD 命令的查询标识符。
session_id integer 运行卸载的进程的进程标识符。
status character(64) UNLOAD 命令的状态。有效值为 runningcompleted
transaction_id bigint 事务标识符。
database_name character(64) 在发起操作时用户连接到其中的数据库的名称。
start_time timestamp 卸载开始的时间。
end_time timestamp 卸载完成的时间。
duration bigint 在 UNLOAD 命令中花费的时间(微秒)。
file_format varchar 输出文件的文件格式。
compression_type varchar 压缩的类型。
unload_location character(256) 已卸载文件的 Amazon S3 位置。
unloadd_rows bigint 行数。
unloaded_files_count integer 输出文件的文件计数。
unloaded_files_size integer 输出文件的文件大小。
error_message character(128) UNLOAD 命令的错误消息。

SYS_SERVERLESS_USAGE

使用 SYS_SERVERLESS_USAGE 查看资源的无服务器端点使用情况的详细信息。

此视图包含无服务器使用情况摘要,包括用于处理查询的计算容量数量以及以 30 分钟粒度使用的 Amazon Redshift 托管式存储量。无服务器端点计算容量以 Redshift 处理单元(RPU)为单位,并按每秒计量以 RPU 秒为单位运行的工作负载。RPU 用于处理对数据仓库中加载数据的查询、从 Amazon S3 数据湖查询或使用联合查询从操作数据库访问。

SYS_SERVERLESS_USAGE 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其具有访问权限的元数据。

表列
列名称 数据类型 描述
start_time timestamp 时间间隔开始的时间。
end_time timestamp 时间间隔完成的时间。
compute_capacity integer 在此时间间隔内分配的计算单位(Redshift 处理单元或 RPU)的平均数。

compute_capacity 值可动态更改。例如,假设在 30 分钟时间间隔内,无服务器端点在前 15 分钟内分配了 20 个 RPU,然后在接下来的 15 分钟内扩展到使用 40 个 RPU。在这种情况下,平均 compute_capacity 为 30 个 RPU。

compute_seconds integer 在此时间间隔内消耗的累计计算单位(RPU)秒数。

在此时间间隔内可能会有空闲时间。例如,假设 compute_capacity 为 10 个 RPU,但查询在 30 分钟的时间间隔内仅运行 60 秒。则以下内容是准确的。

compute_seconds (rpu_seconds) = 10 * 60
data_storage integer 在此时间间隔内使用的平均数据存储空间。

随着数据库加载或删除数据,使用的数据存储可能会动态更改。例如,假设在 30 分钟时间间隔内,无服务器端点在前 15 分钟内存储了 10 TB 的数据,在接下来的 15 分钟内加载 10 TB 的数据。在这种情况下,used_data_storage 是 15TB。

Amazon Redshift 无服务器中的安全性和连接

访问 Amazon Redshift 时需要可供 Amazon 用来验证您的请求的凭证。

Amazon Redshift 无服务器中的 Identity and Access Management

访问 Amazon Redshift 时需要可供 Amazon 用来验证您的请求的凭证。这些凭证必须有权限访问 Amazon 资源,如无服务器端点。

以下部分提供详细信息来说明如何使用 Amazon Identity and Access Management(IAM)和 Amazon Redshift 控制谁能访问您的资源,从而对这些资源进行保护:有关更多信息,请参阅Amazon Redshift 中的 Identity and Access Management

向 Amazon Redshift 无服务器授予权限

要访问其它 Amazon 服务,Amazon Redshift 无服务器需要权限。

授权 Amazon Redshift 无服务器为您访问其它 Amazon 服务

某些 Amazon Redshift 功能要求 Amazon Redshift 代表您访问其他 Amazon 服务。为了让您的 Amazon Redshift 无服务器端点为您执行操作,请向端点提供安全凭证。提供安全凭证的首选方法是指定一个 Amazon Identity and Access Management (IAM) 角色。您还可通过 Amazon Redshift 控制台创建 IAM 角色,并将其设置为默认角色。有关更多信息,请参阅创建一个 IAM 角色作为 Amazon Redshift 的默认角色

要访问其它 Amazon 服务,请创建具有适当权限的 IAM 角色。您还需要将角色与您的无服务器端点关联。此外,您可在运行 Amazon Redshift 命令时指定角色的 Amazon Resource Name(ARN),或者指定 default 关键字。

https://console.aws.amazon.com/iam/ 中更改 IAM 角色的信任关系时,请确保使用 redshift.amazonaws.com 作为服务名称。有关如何管理 IAM 角色以代表您访问其它 Amazon 服务的信息,请参阅授权 Amazon Redshift 代表您访问其他 Amazon 服务

创建一个 IAM 角色作为 Amazon Redshift 的默认角色

当您通过 Amazon Redshift 控制台创建 IAM 角色时,Amazon Redshift 以编程方式在您的 Amazon Web Services 账户 中创建角色。Amazon Redshift 还会自动为其附加现有 Amazon 托管式策略。这种方法表示您可以停留在 Amazon Redshift 控制台中,无需切换到 IAM 控制台进行角色创建。

您通过控制台为集群创建的 IAM 角色具有自动附加的 AmazonRedshiftAllCommandsFullAccess 托管式策略。此 IAM 角色允许 Amazon Redshift 为 Amazon IAM 账户中的资源复制、卸载、查询和分析数据。相关命令包括 UNLOAD、CREATE EXTERNAL FUNCTION、CREATE EXTERNAL TABLE、CREATE EXTERNAL SCHEMA、CREATE MODEL 和 CREATE LIBRARY。有关如何创建 IAM 角色作为 Amazon Redshift 的默认角色的更多信息,请参阅创建一个 IAM 角色作为 Amazon Redshift 的默认角色。

要开始创建 IAM 角色作为 Amazon Redshift 的默认角色,请打开 Amazon Web Services Management Console,选择 Amazon Redshift 控制台,然后选择 Try Amazon Redshift Serverless(尝试 Amazon Redshift 无服务器)。在 Amazon Redshift 无服务器控制台上,选择 Customize settings(自定义设置)。在 Permissions(权限)下,按照 使用控制台管理 IAM 角色关联 中的步骤进行操作。

当您已经拥有无服务器端点并希望为端点配置 IAM 角色时,请打开 Amazon Web Services Management Console。选择 Amazon Redshift 控制台,然后选择 Go to serverless(转到无服务器)。在 Amazon Redshift 无服务器控制台上,选择 Serverless configuration(无服务器配置),然后选择 Data access(数据访问)。在 Permissions(权限)下,按照 使用控制台管理 IAM 角色关联 中的步骤进行操作。

Amazon Redshift 的 IAM 凭证入门

当您首次登录到 Amazon Redshift 控制台,并首次尝试 Amazon Redshift 无服务器时,您可以 IAM 用户或 IAM 角色身份登录。开始创建无服务器端点后,Amazon Redshift 会记录您在登录时使用的 IAM 用户名或角色名称。您可以使用相同的 IAM 凭证登录到 Amazon Redshift 控制台和 Amazon Redshift 无服务器控制台。

在创建无服务器端点时,您可以在无服务器端点中创建数据库。使用查询编辑器 v2 通过临时凭证选项连接到数据库。

要添加持续用于数据库的新管理员用户名和密码,请选择 Customize admin user credentials(定制管理员用户凭证),然后输入新的管理员用户名和管理员用户密码。

要开始使用 Amazon Redshift 无服务器,并首次在无服务器端点控制台中创建无服务器端点,请使用 IAM 用户或 IAM 角色。确保此用户或角色具有管理员权限 arn:aws:iam::aws:policy/AdministratorAccess,或者具有附加到您使用的 IAM 策略的完整 Amazon Redshift 权限 arn:aws:iam::aws:policy/AmazonRedshiftFullAccess

以下场景概述了当您开始使用 Amazon Redshift 无服务器控制台时,Amazon Redshift 无服务器如何使用 IAM 凭证:

  • 如果选择 Use default settings(使用默认设置)– Amazon Redshift 无服务器会将您当前的 IAM 身份转换为数据库超级用户。您可以将相同的 IAM 身份与 Amazon Redshift 无服务器控制台一起使用,以在无服务器端点中的数据库中执行超级用户操作。

  • 如果选择 Customize settings(自定义设置)而不指定 Amazon Redshift 无服务器的 Admin user name(管理员用户名)和密码,则您当前的 IAM 凭证用作默认管理员用户凭证。这基本上与 Use default settings(使用默认设置)一样。

  • 如果选择 Customize settings(自定义设置),然后指定 Amazon Redshift 无服务器的 Admin user name(管理员用户名)和密码 – Amazon Redshift 无服务器会将您当前的 IAM 身份转换为数据库超级用户。Amazon Redshift 无服务器还会以超级用户身份创建另一个长期登录用户名和密码对。您可使用当前的 IAM 身份或创建的用户名和密码对以超级用户身份登录到数据库。

Amazon Redshift 无服务器的审计日志记录

导出日志

您可以配置 Amazon Redshift 无服务器,以将连接、用户和用户活动日志数据导出到 Amazon CloudWatch Logs 中的日志组。利用 Amazon CloudWatch Logs 可以对日志数据进行实时分析,并使用 CloudWatch 创建告警和查看指标。您可使用 CloudWatch Logs 在持久性存储中存储日志记录。

默认情况下,Redshift 会生成连接和用户日志数据。必须明确启用用户活动日志数据的生成,例如显示由单个用户运行的查询的数据。为此,应设置配置设置以生成用户活动数据。

aws redshift-serverless set-configuration --config-parameters parameterKey=enable_user_activity_logging,parameterValue=true

要将生成的日志数据导出到 Amazon CloudWatch Logs,必须在控制台的无服务器端点配置设置中选择要导出的相应日志。

在 CloudWatch 中监控日志事件

在选择要导出的 Redshift 日志后,您可以在 Amazon CloudWatch Logs 中监控事件。将使用以下前缀为 Amazon Redshift 无服务器自动创建新的日志组,其中 log_type 表示日志类型。

/aws/redshift/serverless/<log_type>

例如,如果您选择导出连接日志,则日志数据将存储在以下日志组中。

/aws/redshift/serverless/connectionlog

使用无服务器日志流将日志事件导出到日志组。该行为取决于以下哪些条件为真:

  • 存在包含指定名称的日志组。Redshift 使用现有日志组导出无服务器端点的日志数据。您可以使用自动化配置,例如由 Amazon CloudFormation 提供的配置,创建具有预定义日志保留期、指标筛选条件和客户访问的日志组。

  • 具有指定名称的日志组不存在。当在实例的日志中检测到匹配的日志条目时,Amazon Redshift 无服务器会自动在 Amazon CloudWatch Logs 中创建一个新的日志组。日志组使用 Never Expire(永不过期)的默认日志保留期。要更改日志保留期,请使用 Amazon CloudWatch Logs 控制台、Amazon CLI 或 Amazon CloudWatch Logs API。有关在 CloudWatch Logs 中更改日志留存期的更多信息,请参阅使用日志组和日志流中的更改日志数据留存

要在无服务器端点的日志事件中搜索信息,请使用 Amazon CloudWatch Logs 控制台、Amazon CLI 或 Amazon CloudWatch Logs API。有关搜索和筛选日志数据的更多信息,请参阅搜索和筛选日志数据

从其它 VPC 终端节点连接到 Amazon Redshift 无服务器

您可以从其它 VPC 终端节点(包括本地和公有 VPC 终端节点)连接到 Amazon Redshift 无服务器。

使用 Network Load Balancer 从公有子网连接到 Amazon Redshift 无服务器端点

要启用对 Amazon Redshift 无服务器端点的公有访问,请在 VPC 中配置 Network Load Balancer,以监听新目标组,该目标组配置为将流量路由到账户中的 Amazon Redshift 无服务器托管式 VPC 终端节点。有关网络负载均衡器的更多信息,请参阅 Amazon PrivateLink 指南Network Load Balancer 用户指南

  1. 获取所有可用区中的 VPC 终端节点 ID 和 SubnetId。

  2. 获取 privateIpAddress、subnetIds 和 vpcId。

  3. 使用 Amazon CloudFormation 安装 redshift-nlb.yml 模板以创建 Network Load Balancer 和侦听器目标组。请务必提供 privateIpAddress 和 SubnetID 以创建堆栈。

  4. 在 Amazon CloudFormation 输出选项卡中,请选择 CFN 选项卡以获取 Network Load Balancer DNS 名称。

从公有子网连接到 Amazon Redshift

您可使用 Network Load Balancer DNS 从公有子网连接到 Amazon Redshift。

在 PSQL 中,您可使用与以下内容类似的语法。

psql "host=redshift-serverless-dns-name.region.amazonaws.com dbname=dev port=5439 user=admin"

要使用首选查询编辑器和 JDBC 驱动程序版本 2,请确保已启用 SSL 并禁用服务器证书验证。您可使用类似于以下内容的语法。

jdbc:redshift://dns-name.region.amazonaws.com:5439/dev?useSSL=true&verifyServerCertificate=false

使用快照和恢复点

您可创建和删除包含无服务器端点中所有数据库的手动快照。您可使用无服务器端点或预置集群中的快照还原无服务器端点。您可管理访问来自同一个或另一个 Amazon Web Services 账户 的哪些快照可以使用。还原操作以快照中包含的所有数据库替换无服务器端点。此外,您可在过去 24 小时内以每 30 分钟的时间间隔将数据仓库还原到特定恢复点。

还原无服务器端点后,还原的第一阶段可在几分钟内完成,然后您的数据即可用于查询。还原的第二阶段是优化您的数据库。在此阶段,您可能会注意到性能略有下降。第二阶段可持续几个小时到几天,某些情况下可持续几周。时间长度取决于数据大小,但性能会逐步提高。此阶段结束时,您的无服务器端点已完全优化。

Snapshots

您可还原在 Amazon Redshift 无服务器控制台上创建的快照,以替换无服务器端点中的数据。当快照恢复到无服务器端点时,将使用无服务器端点的 KMS 密钥来加密数据。

管理对快照的访问

  1. 从 Amazon Redshift 无服务器控制台开始,导航到 Serverless configuration(无服务器配置)页,然后再选择 Data backup(数据备份)选项卡。

  2. 选择 Action(操作)、Manage access(管理访问)

  3. 输入 Amazon Web Services 账户 ID 以授权其使用快照。

从无服务器账户还原快照

  1. 从 Amazon Redshift 无服务器控制台开始,导航到 Serverless configuration(无服务器配置)页,然后再选择 Data backup(数据备份)选项卡。

  2. 选择要使用的快照。

  3. 选择 Action(操作)、Restore from snapshot(从快照还原)。

将快照从您的预置集群还原到无服务器端点

  1. 在 Amazon Redshift 预置的集群控制台上开始,导航到 Clusters(集群)、Snapshots(快照)页面。

  2. 选择要使用的快照。

  3. 选择 Restore from snapshot(从快照还原)、Restore to serverless endpoint(还原到无服务器端点)。

  4. 确认想要从快照还原。此操作将以来自预置集群的数据替换无服务器端点中的所有数据库。

有关预置集群快照的更多信息,请参阅《Amazon Redshift 集群管理指南》中的 Amazon Redshift 快照

恢复点

每 30 分钟为无服务器端点创建一次恢复点,并保存 24 小时。

在 Amazon Redshift 无服务器控制台上的 Severless configuration(无服务器配置)、Backup data(备份数据)选项卡中,您可以管理恢复点。您还可以进行以下操作:

  • 将无服务器端点还原到恢复点。

  • 将恢复点转换为快照。

使用基础和最大值参数自动扩缩容量

Amazon Redshift 无服务器以 Redshift 处理单元(RPU)为单位测量数据仓库计算容量。按秒支付以 RPU 小时为单位运行的工作负载。对于存储,您可以按每月 GB 量的费率为存储在 Amazon Redshift 托管式存储中的数据付费。

Amazon Redshift 无服务器中的资源调配和扩展

或者,您可以使用 Base(基础)和 Max(最大值)设置来控制性能和成本。

基础

表示 Amazon Redshift 无服务器用于处理查询的基本数据仓库容量。基础容量以 Redshift 处理单元(RPU)为单位指定。设置更高的基础计算容量可以提高查询性能,尤其是对于处理大量数据的数据处理和 ETL 作业。基础默认为 AUTO,使无服务器端点能够自动分配和调整适当的基础数据仓库容量。您可以通过无服务器端点管理控制台或调用 Amazon Redshift API,将基础从 32 个 RPU 调整为 512 个 RPU,单位为 8(32、40、48... 512)。

最大值

指定使用限制。设置更高的最大计算容量可以提高系统的总体吞吐量,从而使高并发工作负载受益,同时保持高性能。

对于存储在 Amazon Redshift 托管式存储中的数据和用于用户快照的存储,您需要按照与 Amazon Redshift 预置集群类似的固定 GB 月费率支付费用。借助 Amazon Redshift Server 无服务器,您可以 30 分钟的粒度将数据仓库还原到过去 24 小时内的特定点,无需额外费用。数据传输成本和机器学习成本适用与预置集群相同的费率。

Amazon Redshift 无服务器的计费

计费的工作原理

Amazon Redshift 无服务器会根据您的计算资源运行查询所花费的时间进行计费。无服务器端点的计算能力以 Redshift 处理单元或 RPU 为单位。RPU 是指资源基准单位,以虚拟 CPU 和内存为单位。具有更多资源的无服务器端点具有更多的 RPU 数量。计费按每秒 RPU 的费率累积。

不是为计算容量计费,而是为处理查询花费的时间计费。这表示您不需要为空闲容量付费。存储空间按每月 GB 的费率单独收费。

为了控制成本,您可在无服务器端点上设置最高费用率。这是一个处理容量限制,它提供了成本上限。您可以随时对其进行调整,不会中断查询处理。

Amazon Redshift 无服务器计费与预置集群有何不同之处

使用预置的 Redshift 集群时,将根据集群中的节点数和节点类型向您计费。您无法使用 Amazon Redshift 无服务器管理集群大小或节点类型。无服务器端点将调整为自动加载。当端点处于非活动状态时,您也无需暂停端点。Amazon Redshift 无服务器会自动处理空闲时间。

其它计费详细信息

  • 计费包括针对繁重工作负载期间的并发扩缩容量。并发扩缩包括在计费费用中。

  • 对于管理和监控的系统查询不收取费用。此外,自动优化(如自动排序和 vacuum)不收取费用。

  • 对于 Redshift Spectrum 查询,您的计费与本地数据查询的费率相同。

  • 联合查询按特定时间间隔内使用的 RPU 收费,与无服务器端点上的查询相同。

  • 存储按每 GB 的给定费率单独计费。

  • 最短计费时间间隔为 1 秒。例如,如果您运行查询耗时 100 毫秒,则需要支付 1 秒钟的费用。

  • 未更改快照计费。它按每月 GB 的费率收费。

  • 如果您运行了查询并在查询结束之前将其取消,则会对查询时间进行计费。