src/config/landing-zone-settings.ts contains the core deployment boundary for your landing zone. These values are read by every stack and StackSet to wire names, targets, and regions correctly.
After changing this file, re-run pnpm exec projen to regenerate the npm scripts and GitHub Actions workflow with the updated values.
Options
| Option | Type | Required | Description |
|---|---|---|---|
organizationName | string | Yes | Short organization slug used for resource names and tags. Use lowercase and dashes. |
mailDomain | string | Yes | Email domain used to generate root email addresses for new AWS accounts (e.g. aws+log@your-org.com). |
managementAccountId | string | Yes | 12-digit AWS Organizations management account ID. |
primaryRegion | string | Yes | Primary AWS Region where the CDK app and management resources deploy. |
secondaryRegions | string[] | Yes | Additional active Regions that receive multi-region StackSet deployments. Pass [] if you only use one region. |
externalAdmins | LandingZoneExternalAdmin[] | No | Enables an ExternalAccessStackSet that grants one or more third-party accounts admin access across organization accounts. Each entry takes accountId (string, required), managedPolicyName (string, optional, default ReadOnlyAccess), and roleName (string, optional, default ExternalLandingZoneAdmin-<accountId>). |
organizationAccountLimit | number | No | Desired AWS Organizations account limit. Submits a Service Quotas request from us-east-1 (the required region for Organizations quota requests). Approval is asynchronous. |
Example
export const landingZoneSettings: LandingZoneSettings = {
organizationName: 'acme',
mailDomain: 'acme.com',
managementAccountId: '123456789012',
primaryRegion: 'eu-west-1',
secondaryRegions: ['us-east-1'],
externalAdmins: [
{
accountId: '111122223333',
managedPolicyName: 'ReadOnlyAccess',
},
],
organizationAccountLimit: 120,
};
How it's used
These settings flow into every part of the landing zone:
organizationNameandmailDomainprefix the generated OU and account names defined in organization-structure.tsmanagementAccountIdandprimaryRegionare embedded in the generatedmanagement:*npm scripts and the GitHub Actions deployment workflow bypnpm exec projenprimaryRegionandsecondaryRegionsdetermine which regions the region-guardrail SCP allows (see Service Control Policies) and which regions multi-region StackSets such as Secure Defaults and Central Alerts targetexternalAdminsdeploys anExternalAccessStackSetacross the organization when setorganizationAccountLimitdeploys anOrganizationAccountQuotaStackSetinus-east-1when set
Things to know
- Re-run
pnpm exec projenafter every change to this file, as the generated workflow and npm scripts embedmanagementAccountIdandprimaryRegiondirectly organizationNameshould be stable: changing it renames all OU and account resources, which CloudFormation handles as a delete-and-recreate- Email addresses for accounts must be globally unique across all of AWS; the
mailDomainapproach usingaws+<alias>@your-domain.comkeeps them namespaced under your domain