diff --git a/README.md b/README.md index 8ed6fe9..23c769c 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ type ProjectArgs = { | EcsServiceOptions )[]; enableSSMConnect?: pulumi.Input; + numberOfAvailabilityZones?: number; }; ``` @@ -101,6 +102,7 @@ type ProjectArgs = { | :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------: | | services \* | Service list. | | enableSSMConnect | Setup ec2 instance and SSM in order to connect to the database in the private subnet. Please refer to the [SSM Connect](#ssm-connect) section for more info. | +| numberOfAvailabilityZones | Default is 2 which is recommended. If building a dev server, we can reduce to 1 availability zone to reduce hosting cost. | ```ts type DatabaseServiceOptions = { diff --git a/src/components/project.ts b/src/components/project.ts index 2f6e440..58cec43 100644 --- a/src/components/project.ts +++ b/src/components/project.ts @@ -116,6 +116,7 @@ export type ProjectArgs = { | EcsServiceOptions )[]; enableSSMConnect?: pulumi.Input; + numberOfAvailabilityZones?: number; }; export class MissingEcsCluster extends Error { @@ -141,7 +142,7 @@ export class Project extends pulumi.ComponentResource { super('studion:Project', name, {}, opts); this.name = name; - this.vpc = this.createVpc(); + this.vpc = this.createVpc(args.numberOfAvailabilityZones); this.createServices(args.services); if (args.enableSSMConnect) { @@ -155,11 +156,13 @@ export class Project extends pulumi.ComponentResource { this.registerOutputs(); } - private createVpc() { + private createVpc( + numberOfAvailabilityZones: ProjectArgs['numberOfAvailabilityZones'] = 2, + ) { const vpc = new awsx.ec2.Vpc( `${this.name}-vpc`, { - numberOfAvailabilityZones: 2, + numberOfAvailabilityZones, enableDnsHostnames: true, enableDnsSupport: true, subnetSpecs: [