使用预置集群的 Amazon Redshift 管理界面 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用预置集群的 Amazon Redshift 管理界面

注意

本主题重点介绍预置集群的 Amazon Redshift 管理界面。Amazon Redshift Serverless 和 Amazon Redshift 数据 API 也有类似的管理界面。

Amazon Redshift 支持多种可用于创建、管理和删除 Amazon Redshift 集群的管理界面,其中包括 Amazon 开发工具包、 Amazon Command Line Interface (Amazon CLI) 和 Amazon Redshift 管理 API。

The Amazon Redshift API – 您可以通过提交请求来调用此 Amazon Redshift 管理 API。请求是 HTTP 或 HTTPS 请求,需要使用 HTTP 动词 GETPOST 以及一个名为 Action 的参数。调用 Amazon Redshift API 是访问 Amazon Redshift 服务的最直接方式。但是,此调用需要您的应用程序处理低级别的详细信息,例如进行错误处理以及生成哈希值以签署请求。

Amazon 开发工具包 – 您可以使用 Amazon 开发工具包执行与 Amazon Redshift 集群相关的操作。一些开发工具包库包含底层 Amazon Redshift API。他们将 API 功能集成到特定编程语言并处理许多低级别详细信息,如计算签名、处理请求重试和进行错误处理。调用开发工具包库中的包装函数可极大地简化编写用于管理 Amazon Redshift 集群的应用程序的流程。

  • Amazon Redshift 受适用于 Java、.NET、PHP、Python、Ruby 和 Node.js 的 Amazon 开发工具包的支持。Amazon Redshift 的包装函数记录在每个开发工具包的参考手册中。有关 Amazon 开发工具包及其文档链接的列表,请参阅适用于 Amazon Web Services 的工具

  • 本指南提供通过 Java 开发工具包使用 Amazon Redshift 的示例。有关更多通用 Amazon SDK 代码示例,请参阅使用 Amazon SDK 的 Amazon Redshift 代码示例

Amazon CLI – CLI 提供一组可用于从 Windows、Mac 和 Linux 计算机管理 Amazon 服务的命令行工具。Amazon CLI 包括基于 Amazon Redshift 查询 API 操作的命令。

对 HTTP 请求进行签名

Amazon Redshift 要求您发送到管理 API 的每个请求都必须使用签名进行身份验证。本主题介绍如何为请求签名。

如果您使用的是 Amazon 开发工具包 (SDK) 之一或 Amazon Command Line Interface,将自动为请求签名,因此您可以跳过本节。有关如何使用 Amazon 开发工具包的更多信息,请参阅使用预置集群的 Amazon Redshift 管理界面。有关使用 Amazon Redshift 命令行界面的更多信息,请转到 Amazon Redshift 命令行参考

要为请求签名,可以使用加密哈希函数计算数字签名。加密哈希一种是根据输入内容返回唯一哈希值的函数。对哈希函数的输入内容包括您的请求文本和您从临时凭证获得的秘密访问密钥。哈希函数返回哈希值,您将该值包含在请求中,作为签名。该签名是您的请求的 Authorization 标头的一部分。

注意

如果用户需要在 Amazon Web Services Management Console 之外与 Amazon 交互,则需要编程式访问权限。Amazon API 和 Amazon Command Line Interface 需要访问密钥。可能的话,创建临时凭证,该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

要向用户授予编程式访问权限,请选择以下选项之一。

哪个用户需要编程式访问权限? 目的 方式
IAM 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求(直接或使用 Amazon SDK)。 按照《IAM 用户指南》将临时凭证用于 Amazon 资源中的说明进行操作。
IAM

(不推荐使用)

使用长期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求(直接或使用 Amazon SDK)。
按照《IAM 用户指南》管理 IAM 用户的访问密钥中的说明进行操作。

Amazon Redshift 收到您的请求后,它将使用您在为请求签名时使用的相同哈希函数和输入来重新计算签名。如果得出的签名与请求中的签名相匹配,Amazon Redshift 会处理请求;否则请求将被拒绝。

Amazon Redshift 支持使用 Amazon 签名版本 4 进行身份验证。计算签名的流程包含三个任务。这些任务在下文的示例中有所说明。

  • 任务 1:创建规范请求

    将您的 HTTP 请求重新排列为规范格式。必须使用规范格式,因为 Amazon Redshift 会使用同一规范格式计算要与您发送的签名进行比较的签名。

  • 任务 2:创建要签名的字符串

    创建一个字符串,将该字符串用作您的加密哈希函数输入值中的一项。该字符串称为待签字符串,是哈希算法名称、请求日期、凭证范围字符串以及来自上一任务的规范化请求的结合。凭证范围字符串本身是日期、区域和服务信息的结合。

  • 任务 3:计算签名

    使用加密哈希函数为您的请求计算签名,该函数接受两种输入字符串:待签名字符串和派生密钥。派生密钥的计算方法是,以您的秘密访问密钥开头,并使用凭证范围字符串来创建一系列基于哈希的消息身份验证代码 (HMAC-SHA256)。

示例签名计算

以下示例将为您详细介绍为 CreateCluster 请求创建签名的过程。您可以使用该示例作为参考,检查您自己的签名计算方法。其他参考计算包含在《IAM 用户指南》的“请求签名示例”部分中。

您可以使用 GET 或 POST 请求将请求发送到 Amazon Redshift。这两者之间的区别是对于 GET 请求,您的参数作为查询字符串参数发送。对于 POST 请求,参数包含在请求正文中。以下示例显示的是 POST 请求。

示例假定以下各项:

  • 请求的时间戳为 Fri, 07 Dec 2012 00:00:00 GMT

  • 终端节点为美国东部(弗吉尼亚北部)地区 (us-east-1)。

一般的请求语法为:

https://redshift.us-east-1.amazonaws.com/ ?Action=CreateCluster &ClusterIdentifier=examplecluster &MasterUsername=masteruser &MasterUserPassword=12345678Aa &NumberOfNode=2 &NodeType=ds2.xlarge &Version=2012-12-01 &x-amz-algorithm=AWS4-HMAC-SHA256 &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request &x-amz-date=20121207T000000Z &x-amz-signedheaders=content-type;host;x-amz-date

任务 1:创建规范请求计算的规范请求格式为:

POST / content-type:application/x-www-form-urlencoded; charset=utf-8 host:redshift.us-east-1.amazonaws.com x-amz-date:20121207T000000Z content-type;host;x-amz-date 55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d

规范请求的最后一行是请求正文的哈希值。因为没有针对此 API 的查询参数,所以规范请求的第三行是空的。

任务 2:创建待签字符串的待签字符串为:

AWS4-HMAC-SHA256 20121207T000000Z 20121207/us-east-1/redshift/aws4_request 06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714

待签字符串的第一行是算法,第二行是时间戳,第三行是凭证范围,最后一行是来自任务 1:创建规范请求的规范请求的哈希。要在凭证范围中使用的服务名称为 redshift

对于任务 3:计算签名,派生密钥可以表示为:

derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")

派生密钥是通过系列哈希函数计算的。从上面公式中最里面的 HMAC 语句开始,将短语 AWS4 与您的秘密访问密钥连接,并使用它作为键来对数据“us-east-1”进行哈希计算。该哈希计算的结果将成为下一个哈希函数的键。

计算派生密钥后,在接受两个输入字符串、待签字符串和派生密钥的哈希函数中使用它。例如,如果您使用秘密访问密钥 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY 和前文提到的代签字符串,那么计算出的签名如下所示:

9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

最终步骤是构造 Authorization 标头。对于示例访问密钥 AKIAIOSFODNN7EXAMPLE,标头(为了便于阅读,添加了换行符)为:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

设置 Amazon Redshift CLI

本部分介绍如何设置和运行用于管理 Amazon Redshift 的 Amazon CLI 命令行工具。Amazon Redshift 命令行工具在 Amazon Command Line Interface (Amazon CLI) 上运行,而后者使用 Python (https://www.python.org/)。Amazon CLI 可在支持 Python 的所有操作系统上运行。

安装说明

要开始使用 Amazon Redshift 命令行工具,首先要设置 Amazon CLI,然后添加用于定义 Amazon Redshift CLI 选项的配置文件。

如果您已为其他 Amazon CLI 服务安装并配置 Amazon,则可跳过该程序。

安装 Amazon Command Line Interface
  1. 请转到安装或更新到最新版本的 Amazon CLI,然后按照说明安装 Amazon CLI。

    要进行 CLI 访问,您需要访问密钥 ID 和秘密访问密钥。如果可能,请使用临时凭证代替长期访问密钥。临时凭证包括访问密钥 ID、秘密访问密钥,以及一个指示凭证何时到期的安全令牌。有关更多信息,请参阅《IAM 用户指南》中的将临时凭证用于 Amazon 资源

  2. 创建包含访问密钥、默认区域和命令输出格式等配置信息的文件。然后,设置 AWS_CONFIG_FILE 环境变量以引用该文件。有关详细说明,请转到 Amazon Command Line Interface 用户指南中的配置 Amazon 命令行界面

  3. 运行一个测试命令以确认 Amazon CLI 界面可正常工作。例如,以下命令应该显示有关 Amazon CLI 的帮助信息:

    aws help

    以下命令应该显示有关 Amazon Redshift 的帮助信息:

    aws redshift help

有关 Amazon Redshift CLI 命令的参考资料,请转至 Amazon CLI 参考中的 Amazon Redshift