66 / 75 · 08 Infrastructure as Code Testing · Ephemeral Environments← prev⊞ allnext →☰ Read as one page
12.4Pulumi Stacks for Ephemeral Environments
Pulumi stacks are the equivalent of Terraform workspaces but with programmatic control:
// index.ts -- Pulumi stack per PR
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const stack = pulumi.getStack(); // e.g., "pr-142"
const isEphemeral = stack.startsWith("pr-");
const db = new aws.rds.Instance("main", {
instanceClass: isEphemeral ? "db.t4g.micro" : "db.r6g.xlarge",
allocatedStorage: isEphemeral ? 20 : 500,
skipFinalSnapshot: isEphemeral, // No snapshot needed for PR envs
identifier: `myapp-${stack}-db`,
engine: "postgres",
engineVersion: "16",
});
const service = new aws.ecs.Service("app", {
desiredCount: isEphemeral ? 1 : 3,
// ... other configuration
});
export const dbEndpoint = db.endpoint;
export const previewUrl = isEphemeral
? pulumi.interpolate`https://${stack}.preview.example.com`
: undefined;