@aws-cdk/aws-redshift-alpha

中文文档
2.275.0-alpha.0发布于 2026/10/27Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 9.5万

用于 AWS 的 CDK 构建库: redtition

中文使用文档
文档目录23 节
  1. 启动红移集群数据库
  2. 数据库审计日志
  3. S3 日志
  4. 云表日志
  5. 可用区迁移
  6. 连接中
  7. 数据库资源
  8. 创建用户
  9. 创建表格
  10. 授予特权
  11. 证书的轮换
  12. 添加参数
  13. 重新启动参数更新
  14. 资源行动
  15. 弹性 IP
  16. 弹性IP vs. 集群节点公共IP
  17. 集群创建后附加弹性 IP
  18. 增强VPC 运行
  19. 默认 IAM 角色
  20. IAM的作用
  21. 多阿兹
  22. 调整大小
  23. 维护轨道名称

亚马逊红移构造库


cdk-constructs: Experimental

本单元中更高层次的构件的API是实验性的并正在积极开发中. 在今后任何版本中,它们都须作非背向相容的修改或去除。 这些是 不适用 语义版本 模型和断开的更改 在发行笔记中宣布. 这意味着虽然你可能使用它们,但可能需要更新 当更新到此软件包的更新版本时,您的源代码.


启动红移集群数据库

建立Redshift集群,定义 Cluster将在VPC中推出. 您可以指定一个 VPC, 否则将会创建 。 节点总是由私人子网启动,并默认加密.

import * as ec2 from 'aws-cdk-lib/aws-ec2';

const vpc = new ec2.Vpc(this, 'Vpc');
const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc
});

默认情况下,主密码将生成并存储在 AWS 保密管理器中. 您可以通过设置指定不包含在生成的密码中的字符 excludeCharacters 属性.

import * as ec2 from 'aws-cdk-lib/aws-ec2';

const vpc = new ec2.Vpc(this, 'Vpc');
const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
    excludeCharacters: '"@/\\\ \'`',
  },
  vpc
});

名为默认的数据库 default_db 将在组中创建。 要更改数据库的名称,请设置 defaultDatabaseName 属性.

默认情况下,集群将无法公开访问. 视使用情况而定,您可使用 publiclyAccessible 属性.

默认情况下,节点类型是 RA3_LARGE。您可以通过设置 nodeType 属性.

import * as ec2 from 'aws-cdk-lib/aws-ec2';

declare const vpc: ec2.IVpc;

const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  nodeType: NodeType.RA3_XLPLUS,
});

数据库审计日志

Amazon Redshift 在您的数据库中记录连接和用户活动的信息 。 这些日志帮助您监控数据库的安全和故障排除目的,这一过程被称为数据库审核.

要捕捉用户活动日志,您还必须启用 enable_user_activity_logging 数据库参数 :

cluster.addToParameterGroup('enable_user_activity_logging', 'true');

对现有集群的参数变化只有在重启后才会生效。 见 重新启动参数更新 如何将它自动化 rebootForParameterChanges。 。 。 .

S3 日志

将审计日志发送给 S3 桶, 使用 ClusterLogging.s3()数字 :

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as s3 from 'aws-cdk-lib/aws-s3';
import { ClusterLogging } from '@aws-cdk/aws-redshift-alpha';

declare const vpc: ec2.IVpc;
declare const bucket: s3.IBucket;

const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  logging: ClusterLogging.s3({
    bucket,
    keyPrefix: 'redshift-logs/',
  }),
});

桶必须满足下列要求,否则Redshift不交付木料(文档:

  • 它必须使用亚马逊S3管理的密钥(SSE-S3)进行加密. SSE-KMS不支持.
  • 它必须位于同一个区域与集群.
  • S3 对象锁定必须关闭 .

云表日志

发送审计日志到 Cloud Watch, 使用 ClusterLogging.cloudWatch()如果 logExports 中,所有日志类型都导出.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { ClusterLogging, LogExport } from '@aws-cdk/aws-redshift-alpha';

declare const vpc: ec2.IVpc;

const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  logging: ClusterLogging.cloudWatch({
    logExports: [LogExport.CONNECTION_LOG, LogExport.USER_LOG],
  }),
});

可用区迁移

通过使用 amazon Redship的搬迁,您允许 Amazon Redshift 将一个集群移动到另一个可用区(AZ),而不会丢失数据或更改您的应用程序. 这一特点既适用于新的集群,也适用于现有的集群.

要启用此特性,请设置 availabilityZoneRelocation 属性改为 true。 。 。 .

import * as ec2 from 'aws-cdk-lib/aws-ec2';

declare const vpc: ec2.IVpc;

const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  nodeType: NodeType.RA3_XLPLUS,
  availabilityZoneRelocation: true,
});

说明编号: availabilityZoneRelocation 属性仅适用于 RA3 节点类型.

连接中

要控制谁可以访问集群,请使用 .connections 属性。 红移集群有 默认端口,所以不需要指定端口 :

cluster.connections.allowDefaultPortFromAnyIpv4('Open to the world');

访问您数据库集群的终点将作为 .clusterEndpoint 属性 :

cluster.clusterEndpoint.socketAddress;   // "HOSTNAME:PORT"

数据库资源

此模块允许创建用户等非 CloudFormation 数据库资源 还有桌子 这样您就可以管理身份、权限和状态资源 从您的 CDK 应用程序中跳出.

因为CloudFormation没有这些资源,所以这个库的杠杆作用 自定义 资源 管理他们。 除了提供Redshift服务所需的IAM许可外 调用,自定义资源处理器的执行角色需要数据库证书 在集群内创建资源.

这些数据库证书可通过下列方式明确提供: adminUser 属性 用于构建各种数据库资源。 或者,全权证书可以是: 自动从 Redshift 集群的默认管理员中拉出 证书。 但是,只有在证书的密码允许的情况下,才能使用这个选项 由 CDK 应用程序生成( 即没有设定值 vas) 页:1 masterPassword 属性 联 合 国 Cluster.masterUser) (中文(简体) ).

创建用户

在 Redshift 集群数据库中通过即时编辑创建用户 User 构造。 这个 将生成用户名和密码,将证书保存在 AWS 保密管理器 Secret, (中文(简体) ), 并查询 Redshift 集群,以创建新的数据库用户 证书.

new User(this, 'User', {
  cluster: cluster,
  databaseName: 'databaseName',
});

默认情况下, 用户证书会用您的 AWS 账户默认密钥加密 管理器加密密钥 。 您可以指定用于此目的的加密密钥 提供 encryptionKey 属性.

import * as kms from 'aws-cdk-lib/aws-kms';

const encryptionKey = new kms.Key(this, 'Key');
new User(this, 'User', {
  encryptionKey: encryptionKey,
  cluster: cluster,
  databaseName: 'databaseName',
});

默认情况下,用户名会自动从用户构造ID及其路径生成 在构造树上。 您可以通过提供该定义的值来指定特定的用户名 username 属性。 用户名必须是有效的标识符;参见: 名称和编号 标识符 输入 亚马逊 红移数据库开发者指南。 。 。 .

new User(this, 'User', {
  username: 'myuser',
  cluster: cluster,
  databaseName: 'databaseName',
});

用户密码由 AWS 保密管理器使用默认配置生成 发现于 secretsmanager.SecretStringGenerator, (中文(简体) ), 密码长度除外 30 并排除一些不符合 SQL 字符 。 这个 密码的纯文本永远不会出现在 CDK 应用程序中; 相反, a 云格式动态 参考文献 用于任何需要密码值的地方.

您可以通过设置指定不包含在生成的密码中的字符 excludeCharacters 属性.

new User(this, 'User', {
  cluster: cluster,
  databaseName: 'databaseName',
  excludeCharacters: '"@/\\\ \'`',
});

创建表格

在 Redshift 集群数据库中创建一个表格 Table 构造。 这将向 Redshift 集群查询以创建新的数据库表格 与提供计划.

new Table(this, 'Table', {
  tableColumns: [{ name: 'col1', dataType: 'varchar(4)' }, { name: 'col2', dataType: 'float' }],
  cluster: cluster,
  databaseName: 'databaseName',
});

大于v2.114.1的表格可以更改其表格名称,因为版本为QQ v2.114.1,这是不可能的. 因此,已禁用 QQ v2.114.1 的表格名称更改 .

new Table(this, 'Table', {
  tableName: 'oldTableName' // This value can be change for versions greater than v2.114.1
  tableColumns: [{ name: 'col1', dataType: 'varchar(4)' }, { name: 'col2', dataType: 'float' }],
  cluster: cluster,
  databaseName: 'databaseName',
});

表格可以配置为 distStyle 属性和一个 distKey 列 :

new Table(this, 'Table', {
  tableColumns: [
    { name: 'col1', dataType: 'varchar(4)', distKey: true },
    { name: 'col2', dataType: 'float' },
  ],
  cluster: cluster,
  databaseName: 'databaseName',
  distStyle: TableDistStyle.KEY,
});

表格也可以配置为排序Style属性并排序Key列 :

new Table(this, 'Table', {
  tableColumns: [
    { name: 'col1', dataType: 'varchar(4)', sortKey: true },
    { name: 'col2', dataType: 'float', sortKey: true },
  ],
  cluster: cluster,
  databaseName: 'databaseName',
  sortStyle: TableSortStyle.COMPOUND,
});

表格及其相应的列可以配置以包含注释 :

new Table(this, 'Table', {
  tableColumns: [
    { name: 'col1', dataType: 'varchar(4)', comment: 'This is a column comment' },
    { name: 'col2', dataType: 'float', comment: 'This is a another column comment' }
  ],
  cluster: cluster,
  databaseName: 'databaseName',
  tableComment: 'This is a table comment',
});

表格列可以配置以使用特定的压缩编码 :

import { ColumnEncoding } from '@aws-cdk/aws-redshift-alpha';

new Table(this, 'Table', {
  tableColumns: [
    { name: 'col1', dataType: 'varchar(4)', encoding: ColumnEncoding.TEXT32K },
    { name: 'col2', dataType: 'float', encoding: ColumnEncoding.DELTA32K },
  ],
  cluster: cluster,
  databaseName: 'databaseName',
});

表格列还可包含 id 属性,它可以使表格列重新命名.

页:1 用来使用 id 属性,您还必须启用 @aws-cdk/aws-redshift:columnId 特性旗.

new Table(this, 'Table', {
  tableColumns: [
    { id: 'col1', name: 'col1', dataType: 'varchar(4)' },
    { id: 'col2', name: 'col2', dataType: 'float' }
  ],
  cluster: cluster,
  databaseName: 'databaseName',
});

查询执行期限默认为一分. 您可以通过设置 timeout 属性.

有效超时值为1秒至15分.

import { Duration } from 'aws-cdk-lib';

new Table(this, 'Table', {
  tableColumns: [
    { id: 'col1', name: 'col1', dataType: 'varchar(4)' },
    { id: 'col2', name: 'col2', dataType: 'float' }
  ],
  cluster: cluster,
  databaseName: 'databaseName',
  timeout: Duration.minutes(15),
});

授予特权

您可以通过使用 : Table.grant() 方法.

const user = new User(this, 'User', {
  cluster: cluster,
  databaseName: 'databaseName',
});
const table = new Table(this, 'Table', {
  tableColumns: [{ name: 'col1', dataType: 'varchar(4)' }, { name: 'col2', dataType: 'float' }],
  cluster: cluster,
  databaseName: 'databaseName',
});

table.grant(user, TableAction.DROP, TableAction.SELECT);

在通过 CDK 管理权限时要小心, 作为试图管理用户的 多个 CDK 应用程序中同一表格中的权限可能导致意外 压倒这些权限。 考虑以下两个 CDK 应用程序,它们都提到 改为同一用户和表格。 在应用程序1中,创建了资源,用户是 给定 INSERT 表格中的权限 :

const databaseName = 'databaseName';
const username = 'myuser'
const tableName = 'mytable'

const user = new User(this, 'User', {
  username: username,
  cluster: cluster,
  databaseName: databaseName,
});
const table = new Table(this, 'Table', {
  tableColumns: [{ name: 'col1', dataType: 'varchar(4)' }, { name: 'col2', dataType: 'float' }],
  cluster: cluster,
  databaseName: databaseName,
});
table.grant(user, TableAction.INSERT);

在应用程序2中,资源被导入并给出用户 INSERT 权限在 该表:

const databaseName = 'databaseName';
const username = 'myuser'
const tableName = 'mytable'

const user = User.fromUserAttributes(this, 'User', {
  username: username,
  password: SecretValue.unsafePlainText('NOT_FOR_PRODUCTION'),
  cluster: cluster,
  databaseName: databaseName,
});
const table = Table.fromTableAttributes(this, 'Table', {
  tableName: tableName,
  tableColumns: [{ name: 'col1', dataType: 'varchar(4)' }, { name: 'col2', dataType: 'float' }],
  cluster: cluster,
  databaseName: 'databaseName',
});
table.grant(user, TableAction.INSERT);

两个应用程序都试图通过下列方式给予用户桌面上的适当特权: 提交资料 GRANT USER SQL 查询到 Redshift 集群 。 注意,其中后者 由于用户已获得特权,两通电话将毫无效果.

现在,如果应用 1 要删除呼叫 grant页:1 REVOKE USER SQL 查询是 提交到 Redshift 集群。 一般来说,第1号申请并不知道 申请2也批准了这一许可,因此不能决定不签发该许可 撤销。 这导致申请2仍然包含以下内容的不良状态: 呼叫 grant 但用户没有指定的权限.

请注意,如果在同一权限范围内给予重复的特权,则不发生这种情况 应用程序,因为在提交任何 SQL 查询之前,此类权限将被删除.

证书的轮换

当主密码生成并存储在 AWS 秘密管理器中时,可以自动旋转:

cluster.addRotationSingleUser(); // Will rotate automatically after 30 days

还有多种用户轮换计划:


const user = new User(this, 'User', {
  cluster: cluster,
  databaseName: 'databaseName',
});
cluster.addRotationMultiUser('MultiUserRotation', {
  secret: user.secret,
});

添加参数

您可以在参数组中添加参数ClusterParameterGroup.addParameter()。 。 。 .

import { ClusterParameterGroup } from '@aws-cdk/aws-redshift-alpha';

const params = new ClusterParameterGroup(this, 'Params', {
  description: 'desc',
  parameters: {
    require_ssl: 'true',
  },
});

params.addParameter('enable_user_activity_logging', 'true');

此外,还可以在集群的相关参数组中添加一个参数: Cluster.addToParameterGroup()。如果集群没有相关的参数组,则创建一个新的参数组.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as cdk from 'aws-cdk-lib';
declare const vpc: ec2.Vpc;

const cluster = new Cluster(this, 'Cluster', {
  masterUser: {
    masterUsername: 'admin',
    masterPassword: cdk.SecretValue.unsafePlainText('tooshort'),
  },
  vpc,
});

cluster.addToParameterGroup('enable_user_activity_logging', 'true');

重新启动参数更新

在大多数情况下,现有的集群 必须手动重新启动 以应用参数更改。 您可以通过设置集群的 rebootForParameterChanges 属性改为 true ,或者通过使用 Cluster.enableRebootForParameterChanges()。 。 。 .

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as cdk from 'aws-cdk-lib';
declare const vpc: ec2.Vpc;

const cluster = new Cluster(this, 'Cluster', {
  masterUser: {
    masterUsername: 'admin',
    masterPassword: cdk.SecretValue.unsafePlainText('tooshort'),
  },
  vpc,
});

cluster.addToParameterGroup('enable_user_activity_logging', 'true');
cluster.enableRebootForParameterChanges()

资源行动

您可以通过指定 resourceAction 财产, 包括 减少和恢复专题组,以及启动 多AZ集群的故障。 。 。 .

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { ResourceAction } from '@aws-cdk/aws-redshift-alpha';

declare const vpc: ec2.IVpc;

// Pause the cluster
new Cluster(this, 'PausedCluster', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  resourceAction: ResourceAction.PAUSE,
});

// Resume the cluster
new Cluster(this, 'ResumedCluster', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  resourceAction: ResourceAction.RESUME,
});

// Failover the cluster
new Cluster(this, 'FailOverCluster', {
  masterUser: {
    masterUsername: 'admin',
  },
  // VPC must have 3 AZs for the cluster which executes failover action
  vpc,
  // Must be a multi-AZ cluster to failover
  multiAz: true,
  resourceAction: ResourceAction.FAILOVER_PRIMARY_COMPUTE,
});

弹性 IP

如果您配置您的集群以公开访问, 您可以选择一个 弹性 IP 地址 用于外部 IP 地址。 一个弹性IP地址是一个与你的AWS账户相联的静态IP地址. 您可以使用弹性IP地址从 VPC 外部连接到您的集群. 一个弹性的IP地址赋予了您在不影响客户端用来连接到您的集群的IP地址的情况下改变您基础配置的能力. 这种办法对失败后恢复等情况可能有所帮助.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as cdk from 'aws-cdk-lib';
declare const vpc: ec2.Vpc;

new Cluster(this, 'Redshift', {
    masterUser: {
      masterUsername: 'admin',
      masterPassword: cdk.SecretValue.unsafePlainText('tooshort'),
    },
    vpc,
    publiclyAccessible: true,
    elasticIp: '10.123.123.255', // A elastic ip you own
})

如果集群在一个 VPC 中,而您想要使用集群内部的私有IP地址与之连接,那么启用非常重要 DNS 分辨率 财务报告和审定财务报表 DNS 主机名 在 VPC 配置中。 如果不设定这些参数,VPC内部的连接会连接到弹性IP地址而不是私人IP地址.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'VPC', {
  enableDnsSupport: true,
  enableDnsHostnames: true,
});

注意,如果已经存在一个公共无障碍集群, VPC 配置将更改为使用 DNS 主机名 财务报告和审定财务报表 DNS 分辨率,连接仍然使用弹性IP地址,直到集群被调整大小.

弹性IP vs. 集群节点公共IP

弹性IP地址是一个外部IP地址,用于访问一个VPC以外的集群. 它与集群节点公用IP地址和通过: clusterEndpoint 属性。 公有和私有的集群节点IP地址无论该集群是否向公众开放都会出现. 它们仅在某些情况下用于配置远程主机的入侵规则. 这些情况发生在您使用安全外壳( SSH) 连接从 Amazon EC2 实例或其他远程主机装入数据时 .

集群创建后附加弹性 IP

在某些情况下,您可能想要将集群与弹性IP地址联系起来,或者改变与集群相关的弹性IP地址. 要在集群创建后附加弹性IP地址,首先更新集群使其不公开取用,再使其既公开取用,又在同一操作中添加弹性IP地址.

增强VPC 运行

当您使用 Amazon Redtition 增强 VPC 路由时, Amazon Redtition 强制您通过基于 Amazon VPC 服务的虚拟私有云( VPC) 在您的集群和您的数据存储器之间实现所有 COPY 和 UNLOAD 通信 。 通过使用增强的VPC路由,可以使用标准的VPC功能,如"亚马逊VPC用户指南"所描述的VPC安全组,网络访问控制列表(ACLs),VPC端点,VPC端点政策,互联网网关,和域名系统(DNS)服务器等. 您使用这些功能来严格管理您的 Amazon Redshift 集群和其他资源之间的数据流动 。 当您通过 VPC 使用增强的 VPC 路由进行线路交通时,您也可以使用 VPC 流量日志来监控 COPY 和 UNLOAD 流量.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as cdk from 'aws-cdk-lib';
declare const vpc: ec2.Vpc;

new Cluster(this, 'Redshift', {
    masterUser: {
      masterUsername: 'admin',
      masterPassword: cdk.SecretValue.unsafePlainText('tooshort'),
    },
    vpc,
    enhancedVpcRouting: true,
})

如果不启用增强的VPC路由,亚马逊Redshift路由通过互联网的交通,包括AWS网络内的其他服务的交通.

默认 IAM 角色

一些Amazon Redship功能要求Amazon Redship代表您访问其他AWS服务. 亚马逊红移集群代表您行事, 您为您的集群提供安全证书 。 提供安全证书的首选方法是具体规定AWS身份和访问管理(IAM)的作用.

当创建一个IAM角色并将其设定为使用控制台的集群默认时,不需要提供IAM角色的亚马逊资源名(ARN)来进行认证和授权.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
declare const vpc: ec2.Vpc;

const defaultRole = new iam.Role(this, 'DefaultRole', {
  assumedBy: new iam.ServicePrincipal('redshift.amazonaws.com'),
},
);

new Cluster(this, 'Redshift', {
    masterUser: {
      masterUsername: 'admin',
    },
    vpc,
    roles: [defaultRole],
    defaultRole: defaultRole,
});

默认角色也可以使用 addDefaultIamRole 方法.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
declare const vpc: ec2.Vpc;

const defaultRole = new iam.Role(this, 'DefaultRole', {
  assumedBy: new iam.ServicePrincipal('redshift.amazonaws.com'),
},
);

const redshiftCluster = new Cluster(this, 'Redshift', {
    masterUser: {
      masterUsername: 'admin',
    },
    vpc,
    roles: [defaultRole],
});

redshiftCluster.addDefaultIamRole(defaultRole);

IAM的作用

将IAM角色附加到"再转会"集群上,允许"再转会"服务代表您执行行动.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
declare const vpc: ec2.Vpc

const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.ServicePrincipal('redshift.amazonaws.com'),
});
const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  roles: [role],
});

机构间监测会议的其他作用可附加于一个集群,使用 addIamRole 方法.

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
declare const vpc: ec2.Vpc

const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.ServicePrincipal('redshift.amazonaws.com'),
});
const cluster = new Cluster(this, 'Redshift', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
});
cluster.addIamRole(role);

多阿兹

亚马逊红移支持 多个可用区(多AZ)部署 用于提供RA3集群. 通过使用多 AZ 部署, 当一个可用区发生出乎意料的事件时, 您的 Amazon RedShift 数据仓库可以在失败的情况下继续运行 .

要创建多AZ集群,请设定 multiAz 属性改为 true 当创建集群时.

declare const vpc: ec2.IVpc;

new redshift.Cluster(stack, 'Cluster', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc, // 3 AZs are required for Multi-AZ
  nodeType: redshift.NodeType.RA3_XLPLUS, // must be RA3 node type
  clusterType: redshift.ClusterType.MULTI_NODE, // must be MULTI_NODE
  numberOfNodes: 2, // must be 2 or more
  multiAz: true,
});

调整大小

由于您的数据存储需要改变, 有可能调整您的 Redshift 集群大小 。 如果集群是通过CDK部署的, 必须通过 CCDK 调整其大小,使更改在 AWS Cloud Formation 模板中注册. 调整业务有两种类型:

  • 弹性调整大小 - 节点和节点类型的数量可以更改,但不能同时更改. 弹性调整是默认行为, 因为它是一个快速的操作 通常在几分钟内完成。 弹性调整大小只支持以下类型的集群:

    • dc1. 宽度(如果组群在VPC中)
    • dc1.8x 宽度( 如果您的集群属于 VPC )
    • dc2. 宽度
    • dc2.8x 宽度
    • ds2.x 大号
    • ds 2.8x 宽度
    • r3. 宽度
    • ra3.xlplus 键
    • 宽度为3.4
    • ra3.16x 宽度
  • 经典的调整大小 - 节点的数目,节点类型,或两者均可以更改. 这次行动需要更长的时间才能完成, 但当调整的操作不符合弹性调整的标准时,则有用. 如果你喜欢经典的再大小, 您可以设置 classicResizing 旗下创建集群时.

还有一些其他的制约因素需要意识到,例如弹性再调整大小不支持单节点集群,而且有 限制可添加到集群的节点数量。 见 AWS 红移文档 财务报告和审定财务报表 AWS API 文档 更多细节.

维护轨道名称

当Amazon Redshift发布新的集群版本时,您的集群会在其维护窗口中被更新. 您可以控制您的集群是否被更新到最近批准的发布或之前的发布. 见 AWS 红移文档 更多细节.

要控制维护窗口中应用哪个集群版本,请设置 maintenanceTrackName 属性.

new redshift.Cluster(stack, 'Cluster', {
  masterUser: {
    masterUsername: 'admin',
  },
  vpc,
  maintenanceTrackName: redshift.MaintenanceTrackName.CURRENT,
});

您可以指定以下之一 MaintenanceTrackName 值 :

  • CURRENT: 使用最新核准的分组版本.
  • TRAILING: 在当前版本之前使用集群版本.

版本与发布记录

@aws-cdk/aws-redshift-alpha 共发布 380 个版本,首次发布于 2021/10/14;过去 12 个月发布了 64 个版本。

版本发布日期距今
2.275.0-alpha.0latest2026/10/2712 天前
2.274.0-alpha.02026/10/2018 天前
2.273.0-alpha.02026/10/0929 天前
2.272.0-alpha.02026/09/301 个月前
2.271.0-alpha.02026/09/261 个月前
2.270.0-alpha.02026/09/181 个月前

关于 @aws-cdk/aws-redshift-alpha 的常见问题

@aws-cdk/aws-redshift-alpha 是什么?

用于 AWS 的 CDK 构建库: redtition

如何安装 @aws-cdk/aws-redshift-alpha?

在项目目录运行 npm install @aws-cdk/aws-redshift-alpha,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.5.0)、aws-cdk-lib(^2.275.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-redshift-alpha 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-redshift-alpha 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-redshift-alpha 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-redshift-alpha 可以商用吗?

@aws-cdk/aws-redshift-alpha 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-redshift-alpha 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-redshift-alpha 在 2026/10/08 – 2026/11/06 这 30 天内被下载 94,959 次,日均约 3,165 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-redshift-alpha 还在维护吗?

最新版本 2.275.0-alpha.0 发布于 2026/10/27(12 天前);至今共发布 380 个版本,其中过去 12 个月发布了 64 个;首次发布于 2021/10/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。