# DefaultStackSynthesizer

Uses conventionally named roles and asset storage locations.

This synthesizer:

- Supports cross-account deployments (the CLI can have credentials to one
  account, and you can still deploy to another account by assuming roles with
  well-known names in the other account).
- Supports the **CDK Pipelines** library.

Requires the environment to have been bootstrapped with Bootstrap Stack V2
(also known as "modern bootstrap stack"). The synthesizer adds a version
check to the template, to make sure the bootstrap stack is recent enough
to support all features expected by this synthesizer.

Extends: StackSynthesizer › DefaultStackSynthesizer
Implements: IBoundStackSynthesizer, IReusableStackSynthesizer, IStackSynthesizer
Superclass of: BootstraplessSynthesizer

- Source: [`core/lib/stack-synthesizers/default-synthesizer.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/core/lib/stack-synthesizers/default-synthesizer.ts#L287)
- Type last changed: v2.253.0 · 6 May 2026

## Example

```ts
class MyStack extends Stack {
  constructor(scope: Construct, id: string, props: StackProps) {
    super(scope, id, {
      ...props,
      synthesizer: new DefaultStackSynthesizer({
        deployRoleExternalId: '',
        deployRoleAdditionalOptions: {
          // https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters
        },
        fileAssetPublishingExternalId: '',
        fileAssetPublishingRoleAdditionalOptions: {
          // https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters
        },
        imageAssetPublishingExternalId: '',
        imageAssetPublishingRoleAdditionalOptions: {
          // https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters
        },
        lookupRoleExternalId: '',
        lookupRoleAdditionalOptions: {
          // https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters
        },
      })
    });
  }
}
```

## Initializer

```ts
new DefaultStackSynthesizer(props?: DefaultStackSynthesizerProps)
```

## Properties

- `bootstrapQualifier`: string — The qualifier used to bootstrap this stack.

- `cloudFormationExecutionRole`: string — The role that is passed to CloudFormation to execute the change set.

- `cloudFormationExecutionRoleArn`: string — Returns the ARN of the CFN execution Role.

- `DEFAULT_BOOTSTRAP_STACK_VERSION_SSM_PARAMETER`: string (static) — Default bootstrap stack version SSM parameter.

- `DEFAULT_CLOUDFORMATION_ROLE_ARN`: string (static) — Default CloudFormation role ARN.

- `DEFAULT_DEPLOY_ROLE_ARN`: string (static) — Default deploy role ARN.

- `DEFAULT_DOCKER_ASSET_PREFIX`: string (static) — Default Docker asset prefix.

- `DEFAULT_FILE_ASSET_KEY_ARN_EXPORT_NAME`: string (static) — Name of the CloudFormation Export with the asset key name.

- `DEFAULT_FILE_ASSET_PREFIX`: string (static) — Default file asset prefix.

- `DEFAULT_FILE_ASSET_PUBLISHING_ROLE_ARN`: string (static) — Default asset publishing role ARN for file (S3) assets.

- `DEFAULT_FILE_ASSETS_BUCKET_NAME`: string (static) — Default file assets bucket name.

- `DEFAULT_IMAGE_ASSET_PUBLISHING_ROLE_ARN`: string (static) — Default asset publishing role ARN for image (ECR) assets.

- `DEFAULT_IMAGE_ASSETS_REPOSITORY_NAME`: string (static) — Default image assets repository name.

- `DEFAULT_LOOKUP_ROLE_ARN`: string (static) — Default lookup role ARN for missing values.

- `DEFAULT_QUALIFIER`: string (static) — Default ARN qualifier.

- `deployRoleArn`: string — Returns the ARN of the deploy Role.

- `lookupRole`: string — The role used to lookup for this stack.

## Methods

- `addDockerImageAsset(asset: DockerImageAssetSource): DockerImageAssetLocation` — Register a Docker Image Asset.

  Returns the parameters that can be used to refer to the asset inside the template.

  The synthesizer must rely on some out-of-band mechanism to make sure the given files
  are actually placed in the returned location before the deployment happens. This can
  be by writing the instructions to the asset manifest (for use by the `cdk-assets` tool),
  by relying on the CLI to upload files (legacy behavior), or some other operator controlled
  mechanism.

- `addFileAsset(asset: FileAssetSource): FileAssetLocation` — Register a File Asset.

  Returns the parameters that can be used to refer to the asset inside the template.

  The synthesizer must rely on some out-of-band mechanism to make sure the given files
  are actually placed in the returned location before the deployment happens. This can
  be by writing the instructions to the asset manifest (for use by the `cdk-assets` tool),
  by relying on the CLI to upload files (legacy behavior), or some other operator controlled
  mechanism.

- `bind(stack: Stack): void` — Bind to the stack this environment is going to be used on.

  Must be called before any of the other methods are called.

- `reusableBind(stack: Stack): IBoundStackSynthesizer` — Produce a bound Stack Synthesizer for the given stack.

  This method may be called more than once on the same object.

- `synthesize(session: ISynthesisSession): void` — Synthesize the associated stack to the session.
