A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Amazon Redshift is a fast, scalable data warehouse for analytics workloads.
const devCluster = new aws.redshift.Cluster("dev-warehouse", {
nodeType: "dc2.large",
clusterType: "single-node",
databaseName: "analytics",
masterUsername: "admin",
masterPassword: adminPassword,
});const prodCluster = new aws.redshift.Cluster("prod-warehouse", {
nodeType: "ra3.4xlarge",
clusterType: "multi-node",
numberOfNodes: 3,
databaseName: "analytics",
masterUsername: "admin",
masterPassword: adminPassword,
encrypted: true,
publiclyAccessible: false,
});const cluster = new aws.redshift.Cluster("warehouse", {
nodeType: "dc2.large",
clusterType: "single-node",
databaseName: "analytics",
masterUsername: "admin",
masterPassword: adminPassword,
snapshotIdentifier: "my-snapshot",
automatedSnapshotRetentionPeriod: 7,
});Create Redshift data warehouse clusters.
class Cluster extends pulumi.CustomResource {
constructor(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions);
readonly arn: pulumi.Output<string>;
readonly endpoint: pulumi.Output<string>;
}
interface ClusterArgs {
clusterIdentifier?: pulumi.Input<string>;
nodeType: pulumi.Input<string>;
clusterType?: pulumi.Input<"single-node" | "multi-node">;
numberOfNodes?: pulumi.Input<number>;
databaseName?: pulumi.Input<string>;
masterUsername: pulumi.Input<string>;
masterPassword: pulumi.Input<string>;
encrypted?: pulumi.Input<boolean>;
publiclyAccessible?: pulumi.Input<boolean>;
}Example: Secure multi-node cluster in VPC
import * as aws from "@pulumi/aws";
const subnetGroup = new aws.redshift.SubnetGroup("redshift-subnet", {
subnetIds: [privateSubnet1.id, privateSubnet2.id],
tags: { Name: "redshift-subnet-group" },
});
const cluster = new aws.redshift.Cluster("analytics-warehouse", {
clusterIdentifier: "analytics-cluster",
nodeType: "ra3.xlplus",
clusterType: "multi-node",
numberOfNodes: 2,
databaseName: "analytics",
masterUsername: "admin",
masterPassword: adminPassword,
clusterSubnetGroupName: subnetGroup.name,
vpcSecurityGroupIds: [redshiftSecurityGroup.id],
encrypted: true,
publiclyAccessible: false,
enhancedVpcRouting: true,
automatedSnapshotRetentionPeriod: 30,
tags: { Environment: "production" },
});
export const clusterEndpoint = cluster.endpoint;
export const clusterArn = cluster.arn;Example: Serverless Redshift
const namespace = new aws.redshiftserverless.Namespace("analytics-ns", {
namespaceName: "analytics",
dbName: "analytics",
adminUsername: "admin",
adminUserPassword: adminPassword,
});
const workgroup = new aws.redshiftserverless.Workgroup("analytics-wg", {
workgroupName: "analytics",
namespaceName: namespace.namespaceName,
baseCapacity: 32,
subnetIds: [privateSubnet1.id, privateSubnet2.id],
securityGroupIds: [redshiftSecurityGroup.id],
publiclyAccessible: false,
});
export const workgroupEndpoint = workgroup.endpoint;For complete Redshift API with 24 resources, see All Services.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws