A tutorial on managing PagerDuty resources (teams, schedules, escalation policies, services) using Pulumi's TypeScript SDK, with the goal of keeping incident response configuration in the same codebase as the infrastructure it protects. The post walks through creating a full on-call setup for a platform team, wiring a CloudWatch alarm on an SQS dead-letter queue to PagerDuty via SNS — with the integration key flowing as a dependency rather than a manual copy-paste step. It also covers the newer Schedulev2 resource, multi-cloud equivalents for GCP and Azure, a reusable OnCallService component, and importing existing PagerDuty resources with pulumi import.
Table of contents
What you are buildingPrerequisitesThe provider and the tokenTeams, users, and membershipsA schedule people can live withThe escalation policyThe serviceThe payoff: the alarm and the pager in one programAzure and Google Cloud, same trickBreaking a Fargate payment service on purposeGrowing without the drift: a reusable componentImporting what you already clicked togetherConclusion258 Impressions