# StackSynthesizer

Base class for implementing an IStackSynthesizer.

This class needs to exist to provide public surface area for external
implementations of stack synthesizers. The protected methods give
access to functions that are otherwise

Extends: StackSynthesizer
Implements: IStackSynthesizer
Superclass of: AppStagingSynthesizer, BootstraplessSynthesizer, CliCredentialsStackSynthesizer, DefaultStackSynthesizer, LegacyStackSynthesizer, NestedStackSynthesizer

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

## Initializer

```ts
new StackSynthesizer()
```

## Properties

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

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

- `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.

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