Constructs

Reusable constructs provided by the starter kit and how to use them.


BaseConstruct

Source: src/constructs/base-construct.ts

Purpose: Base class that exposes environment context and safe naming helpers for branch‑based and environment deployments.

Properties

  • branch?: string — cleaned branch name from GIT_BRANCH_REF (undefined for main/develop/tags)
  • environment: string — environment name from ENVIRONMENT (defaults to dev)
  • account: string — AWS account of the current stack
  • region: string — AWS region of the current stack

Methods

  • unique(name: string): string — Generates a unique, environment/branch‑suffixed resource name (max 64 chars), via createEnvResourceName.

Usage

import { BaseConstruct } from '../constructs';
 
class MyFeatureConstruct extends BaseConstruct {
  constructor(scope: Construct, id: string) {
    super(scope, id);
    // Use environment/account/region or branch for logic or naming
    const bucketName = this.unique(`data-${this.account}`);
    // ...create resources
  }
}

NetworkConstruct

Source: src/constructs/network-construct.ts

Purpose: Creates an opinionated VPC with public/private/isolated subnets, S3 and DynamoDB gateway endpoints, VPC Flow Logs to an encrypted S3 bucket with safe naming.

Behavior

  • VPC CIDR varies by environment: dev -> 172.16.0.0/16, test -> 172.17.0.0/16, otherwise 172.18.0.0/16.
  • NAT gateways: production = 3, others = 1.
  • Flow logs: Stored in S3, bucket is encrypted, public access blocked, and named via this.unique('vpc-flow-logs-<account>').
  • Subnets: three groups (public, private with egress, isolated) across 3 AZs, /20 each.

Exports

  • vpc: ec2.Vpc — The created VPC instance.

Usage

import { NetworkConstruct } from '../constructs';
 
// inside a Stack
const network = new NetworkConstruct(this, 'Network');
// network.vpc is available for connecting other resources