亚马逊红移构造库
本单元中更高层次的构件的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: 在当前版本之前使用集群版本.