

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 预留节点
<a name="purchase-reserved-node-instance"></a>

在 AWS 中，您使用 Amazon Redshift 产生的费用取决于计算节点。每个计算节点均按每小时费率计费。每小时费率因诸多因素而言，如区域、节点类型以及相应节点使用的是按需节点定价还是预留节点定价。

*按需节点定价*费用最高，但在 Amazon Redshift 中灵活性最高。使用按需费率，您只需为正在运行的集群中的计算节点付费。如果您关闭或删除某个集群，则无需再为该集群中的计算节点付费。您只需为所使用的计算节点付费，无需支付任何其他费用。您为每个计算节点支付的每小时费率因区域和节点类型等因素而异。

*预留节点定价*比按需定价的费用低一些，因为计算节点以打折后的每小时费率计费。不过，要享受此类打折费率，您必须购买预留节点产品。购买产品即进行预留。这种预留为您针对预留持续时间预留的每个节点设置一个打折费率。产品的打折费率因区域、节点类型、持续时间以及付款选项等因素而异。

您可以通过调用 `PurchaseReservedNodeOffering` API 操作或在 Amazon Redshift 控制台上选择 **Purchase reserved nodes (购买预留节点)**，将节点指定为预留节点。购买预留节点时，您必须为适用的预留节点类型指定 AWS 区域、节点类型、期限、节点数量和产品类型。预留节点只能用于指定的 AWS 区域。

本主题讨论了有哪些预留节点产品，以及如何购买此类产品才能减少运行 Amazon Redshift 集群的费用。本主题粗略介绍了按需费率和打折费率，以便您可以了解一些定价概念以及定价如何影响计费。有关具体费率的更多信息，请转到 [Amazon Redshift 定价](https://aws.amazon.com/redshift/pricing/)。

## 预留节点产品
<a name="reserverd-node-offering-concept"></a>

如果您打算让 Amazon Redshift 集群持续运行很长一段时间，则不妨考虑购买预留节点产品。与按需定价相比，购买这些产品可以节省大量费用，但您必须预留计算节点并承诺在一年或三年的期限里为所使用的节点支付相应费用。

预留节点是一个计费概念，完全用于确定您为节点付费所使用的费率。实际上，预留节点并不会为您创建任何节点。无论如何使用，您都需要为预留节点付费，也就是说，您必须为预留持续时间预留的每个节点付费，无论正在运行的集群中是否有任何节点可以使用打折费率。

在项目评估阶段或运行概念验证时，您可以通过按需定价灵活地按需付费，仅为使用的服务付费，并随时关闭或删除集群以停止付费。满足了生产环境的需求并进入实施阶段后，不妨考虑购买一个或多个产品来预留计算节点。

一个产品适用于一个或多个计算节点。当您购买产品时，需指定要预留的计算节点的数量。您可以选择为多个计算节点购买一个产品，也可以选择购买多个产品并在每个产品中指定一定数量的计算节点。

例如，您可以采用以下有效方法为三个计算节点购买产品：
+ 购买一个产品并指定三个计算节点。
+ 购买两个产品，为第一个产品指定一个计算节点，为第二个产品指定两个计算节点。
+ 购买三个产品并为这三个产品各指定一个计算节点。

## 比较不同预留节点产品的定价
<a name="comparing-reserved-node-pricing"></a>

Amazon Redshift 提供多种产品付款选项。您选择的付款选项会影响您针对相应预留付费的付款计划和打折费率。您为预留预先支付的费用越多，总体节省的费用就越多。

针对产品付费可使用下列付款选项。这些产品以与按需费率相比，节省的费用从低到高列出。

**注意**  
无论您是否使用预留节点，都需要为指定预留持续时间里的每个小时支付相应的每小时费率。付款选项仅确定付款频率以及应用的折扣。有关更多信息，请参阅 [预留节点产品](#reserverd-node-offering-concept)。


| 付款选项 | 付款计划 | 相对节省的费用 | Duration | 预付费用 | 定期支付的月度费用 | 
| --- | --- | --- | --- | --- | --- | 
| 无费用预付 | 在预留持续时间里按月分期付款。不预付任何费用。 | 与按需费率相比，节省 20%。 | 一年期或三年期 | 无 | 是 | 
| 预付部分费用 | 预付部分费用，然后在预留持续时间里按月分期付款。 | 根据持续时间，节省 41% 到 73%。 | 一年期或三年期 | 支持 | 是 | 
| 预付全部费用 | 针对预留预付全费。无月度费用。 | 根据持续时间，节省 42% 到 76%。 | 一年期或三年期 | 是 | 无 | 

具体选项和持续时间视可用情况而定。

**注意**  
如果您之前购买的是 Amazon Redshift 的**高利用率**产品，则可比较的产品是**预付部分费用**产品。

## 预留节点的工作方式
<a name="how-reserved-nodes-work"></a>

使用预留节点产品，您需要根据上一部分所述的付款方式付费。无论您已有正在运行的集群，还是在进行预留后启动集群，都需要按这种方式付费。

当您购买产品时，您的预留将处于 **payment-pending** 状态，直到预留得到处理。如果预留未得到处理，则该状态将显示为 **payment-failed**，直到您再次尝试进行此流程。预留成功得到处理后，该状态将变为 **active**。在该状态变为 **active** 之前，您的预留适用的打折费率将不会应用于您的账单。预留持续时间过后，该状态将变为 **retired**，但您可以继续出于历史目的访问预留的相关信息。当预留处于 **retired** 状态时，您的集群将继续运行，但您可能要以按需费率付费，除非您进行另一次预留，针对节点应用打折定价。

预留节点专用于您在其中购买产品的区域。如果您使用 Amazon Redshift 控制台来购买产品，请选择您要在其中购买产品的 AWS 区域，然后完成预留流程。如果您以编程方式购买产品，则区域由您连接到的 Amazon Redshift 端点确定。有关 Amazon Redshift 区域的更多信息，请转到《Amazon Web Services 一般参考》**中的[区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region)。

为确保相应的打折费率在您启动集群时应用于所有节点，请确保区域、节点类型以及您选择的节点数量与一个或多个有效预留匹配。否则，对于与有效预留不匹配的节点，将以按需费率对您进行收费。

在正在运行的集群中，如果您超出预留的节点数量，则您将以按需费率为超出预留数量的节点付费。这种费用意味着，您可能以不同的费率为同一个集群中的节点付费，具体取决于您预留的节点数量。您可以再购买一个产品来涵盖超出预留数量的这部分节点，然后在预留状态变为 **active** 之后，相应的打折费率将在剩余持续时间里应用于这部分节点。

如果您调整集群的大小以采用其他节点类型，并且您没有预留此类型的节点，则您将以按需费率付费。如果您希望大小经过调整后的集群享受到打折费率，则可以采用新的节点类型再购买一个产品。不过，您还将继续为原始预留付费，直到其持续时间过去。如果您需要在期限到期前更改预留，请使用 [AWS 控制台](https://console.aws.amazon.com/support/home)创建支持案例。

**注意**  
控制台显示已使用和未使用的预留节点的数量。但是，控制台仅将当前用户账户使用的节点数量显示为已使用。如果同一付款人账户下的另一个用户账户使用节点，则控制台会将这些节点显示为未使用。  
**示例**  
付款人账户预留 20 个节点
当前用户账户使用六个节点
同一付款人账户下的另一个用户账户也使用六个节点
在此示例中，控制台仅显示六个已使用的节点和十四个未使用的节点。

## 预留节点和整合账单
<a name="reserved-nodes-consolidated-billing"></a>

当购买账户属于在一个整合账单付款人账户之下开具账单的一套账户的一部分时，预留节点的定价优惠可以共享。将所有子账户的小时使用量每月聚合到付款人账户。这通常对具有不同职能团队或团体的公司很有用；然后，将应用正常的预留节点逻辑来计算账单。有关更多信息，请参阅 AWS Billing 用户指南中的[整合账单](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/consolidated-billing.html)。

## 预留节点示例
<a name="reserved-node-examples"></a>

本部分中的情景演示了节点如何根据按需费率和打折费率（后者的预留详细信息如下所示）产生费用：
+ 区域：美国西部（俄勒冈）
+ 节点类型：ra3.xlplus
+ 付款选项：No Upfront
+ 持续时间：一年
+ 预留节点的数量：16

### 示例 1
<a name="reserved-node-example-1"></a>

您在美国西部（俄勒冈州）区域有一个集群，其中有 20 个节点。

在此情景中，其中 16 个节点享受预留打折费率，但集群中的另外 4 个节点以按需费率计费。

### 示例 2
<a name="reserved-node-example-2"></a>

您在美国西部（俄勒冈州）区域有一个集群，其中有 12 个节点。

在此情景中，集群中的全部 12 个节点都享受预留打折费率。不过，您还需要为预留中的剩余预留节点付费，即使您当前并没有正在运行的集群可供这些预留节点应用于其中。

### 示例 3
<a name="reserved-node-example-3"></a>

您在美国西部（俄勒冈州）区域有一个集群，其中有 12 个节点。您采用此配置运行该集群几个月时间，然后您需要向其中添加节点。您调整了集群的大小，选择相同的节点类型并指定共计 16 个节点。

在此情景中，您将以打折费率为这 16 个节点付费。在整年的持续时间里您的费用保持不变，因为集群中的节点数量与您预留的节点数量相同。

### 示例 4
<a name="reserved-node-example-4"></a>

您在美国西部（俄勒冈州）区域有一个集群，其中有 16 个节点。您采用此配置运行该集群几个月时间，然后您需要添加节点。您调整了集群的大小，选择相同的节点类型并指定共计 20 个节点。

在此情景中，您将以打折费率为调整大小之前的所有节点付费。调整大小之后，您将在一年中剩下的时间以打折费率为 16 个节点付费，并以按需费率为添加到集群中的另外 4 个节点付费。

### 示例 5
<a name="reserved-node-example-5"></a>

您在美国西部（俄勒冈州）区域有两个集群。一个集群中有 6 个节点，另一个集群中有 10 个节点。

在此情景中，您将以打折费率为所有节点付费，因为两个集群中的节点总数与您预留的节点数量相同。

### 示例 6
<a name="reserved-node-example-6"></a>

您在美国西部（俄勒冈州）区域有两个集群。一个集群中有 4 个节点，另一个集群中有 6 个节点。

在此情景中，您将以打折费率为正在运行的集群中的 10 个节点付费；此外，您还需以打折费率为预留的额外 6 个节点，即使您当前并没有任何正在运行的集群可供这些预留节点应用于其中。

# 购买预留节点
<a name="purchase-reserved-node-offering-console"></a>

可以使用 AWS 管理控制台或 AWS CLI 购买预留节点产品，并查看当前和过去的预留。

------
#### [ AWS 管理控制台 ]

**要购买预留节点**

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 在导航菜单上，选择 **Clusters（集群）**，然后选择 **Reserved nodes（预留节点）**以显示预留节点列表。

1. 选择 **Purchase reserved nodes**（购买预留节点）显示页面，以选择要购买的节点的属性。

1. 输入节点的属性，然后选择 **Purchase reserved nodes**（购买预留节点）。

在您购买产品之后，**Reserved Node** 列表将显示您的预留和每个预留的详细信息，例如节点类型、节点数量和预留的状态。有关预留的更多信息，如需了解更多信息，请参阅[预留节点的工作方式](purchase-reserved-node-instance.md#how-reserved-nodes-work)。

要升级预留节点，请使用 AWS CLI。

您无法将所有节点类型都转换为预留节点，也有可能现有预留节点无法续订。这可能是因为该节点类型已停用。联系客户支持部门，以续订已停用的节点类型。

------
#### [ AWS CLI ]<a name="upgrade-reserved-nodes-cli"></a>

**要利用 AWS CLI 升级预留节点预留**

1. 获取 ReservedNodeOfferingID 的列表以找到可满足您对支付类型、期限和费用的要求的产品。以下示例说明了该步骤。

   ```
   aws redshift get-reserved-node-exchange-offerings --reserved-node-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
   {
       "ReservedNodeOfferings": [
           {
               "Duration": 31536000,
               "ReservedNodeOfferingId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
               "UsagePrice": 0.0,
               "NodeType": "dc2.large",
               "RecurringCharges": [
                   {
                       "RecurringChargeFrequency": "Hourly",
                       "RecurringChargeAmount": 0.2
                   }
               ],
               "CurrencyCode": "USD",
               "OfferingType": "No Upfront",
               "ReservedNodeOfferingType": "Regular",
               "FixedPrice": 0.0
           }
       ]
   }
   ```

1. 调用 `accept-reserved-node-exchange` 并为要与在上一步中获取的 ReservedNodeOfferingID 一起交换的 DC1 预留节点提供 ID。

   以下示例说明了该步骤。

   ```
   aws redshift accept-reserved-node-exchange --reserved-node-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --target-reserved-node-offering-id yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyy
   {
       "ExchangedReservedNode": {
           "UsagePrice": 0.0,
           "OfferingType": "No Upfront",
           "State": "exchanging",
           "FixedPrice": 0.0,
           "CurrencyCode": "USD",
           "ReservedNodeId": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
           "NodeType": "dc2.large",
           "NodeCount": 1,
           "RecurringCharges": [
               {
                   "RecurringChargeFrequency": "Hourly",
                   "RecurringChargeAmount": 0.2
               }
           ],
           "ReservedNodeOfferingType": "Regular",
           "StartTime": "2018-06-27T18:02:58Z",
           "ReservedNodeOfferingId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyyy",
           "Duration": 31536000
       }
   }
   ```

您可以通过调用 [describe-reserved-nodes](https://docs.aws.amazon.com/cli/latest/reference/redshift/describe-reserved-nodes.html) 并检查 `Node type` 的值来确认该交换是否完成。

------