# Deploy the Solution

To help streamline the setup of Sandbox Studio, we’ve provided an installation script that checks your environment for the necessary prerequisites and guides you through deploying the solution step by step. This is our recommended installation method, as it simplifies the process and reduces the chance of configuration issues. However, if you prefer to install the solution manually, please refer to the manual installation documentation or contact our support team for assistance.

# Running the Installation Wizard

# Running the Installation Wizard

#### Introduction

This wizard has been created to facilitate the installation and deployment of the Sandbox Studio solution in your environment. It automates as many steps as possible and checks for prerequisites before the installation.

<p class="callout info">Prefer an unattended, scripted installation? You can skip the interactive prompts and provide all settings up front using a configuration file. See <a href="https://docs.sandboxstudiosoftware.com/books/installation-guide/page/non-interactive-installation-configuration-file">Non-interactive installation (Configuration file)</a>.</p>

#### Running the wizard

1. Login to your AWS **Organisation Management account**.
2. Open a new [CloudShell](https://aws.amazon.com/cloudshell/) console (a link to open CloudShell can be found in the bottom left corner of the AWS console).
3. Ensure you are in the region where you want to install Sandbox Studio.
4. Run the following command:

```bash
bash <(curl -s https://dist.sandboxstudiosoftware.com/install.sh)
```

The following should display:

[![image.png](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-08/scaled-1680-/P7gimage.png)](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-08/P7gimage.png)

The wizard will guide you through the installation process.

<p class="callout warning">Do not use your root account to run this script as it will fail and does not follow AWS best practices!</p>

#### Prerequisites

The wizard will automatically check for [prerequisites](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/installation-prerequisites "Installation Prerequisites"). If any of the prerequisites are not met, the wizard will display the URL to the right documentation to help you configure your environment. See [Installation Prerequisites](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/installation-prerequisites "Installation Prerequisites") page for more details.

#### Inputs

The installation wizard will ask you to set/confirm a set of input parameters during the installation process:

<table id="bkmrk-input-variable-descr" style="width: 108.095%;"><thead><tr><th class="align-left" style="width: 16.8057%;">**Input Variable**</th><th class="align-left" style="width: 26.5793%;">**Description**</th><th class="align-left" style="width: 10.0119%;">**Input or Confirm**</th><th class="align-left" style="width: 46.7223%;">**Comments**</th></tr></thead><tbody><tr><td style="width: 16.8057%;">Management Account ID</td><td style="width: 26.5793%;">The AWS account ID of the management account (auto-detected by the script).</td><td style="width: 10.0119%;">Confirm</td><td style="width: 46.7223%;">During setup, you will be asked to confirm that you are indeed using the correct **organisation management account**. This ensures Sandbox Studio can set up organisation units and Service Control Policies.</td></tr><tr><td style="width: 16.8057%;">Region</td><td style="width: 26.5793%;">AWS region where Sandbox Studio will be deployed.</td><td style="width: 10.0119%;">Confirm / Input</td><td style="width: 46.7223%;">The script attempts to detect the region from AWS CLI config. If not found, you will be prompted to input one (default `us-east-1`).</td></tr><tr><td style="width: 16.8057%;">Hub Account ID</td><td style="width: 26.5793%;">The account ID that will host Sandbox Studio infrastructure (may be same as management account).</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Must be a 12-digit AWS account ID. If left empty, the management account ID will be used. See [Choosing the hub account](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/choosing-the-hub-account "Choosing the hub account").</td></tr><tr><td style="width: 16.8057%;">Parent OU ID</td><td style="width: 26.5793%;">AWS Organisation Unit ID where Sandbox Studio OUs will be created.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Defaults to the **Root OU ID**, but can be set to any valid parent OU so that Sandbox Studio's OU are created under that OU and inherit existing SCP's if required.</td></tr><tr><td style="width: 16.8057%;">Namespace</td><td style="width: 26.5793%;">Short prefix (3–8 alphanumeric characters) used to name Sandbox Studio resources.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Example: `MySs`. Used as a unique identifier in stack names and IAM groups.</td></tr><tr><td style="width: 16.8057%;">Managed Regions</td><td style="width: 26.5793%;">List of AWS regions where Sandbox Studio should manage accounts/resources.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Comma-separated values (e.g., `us-east-1,eu-west-1`). Defaults to the chosen region. See [Choosing your region(s)](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/choosing-your-regions "Choosing your region(s)").</td></tr><tr><td style="width: 16.8057%;">Admin Group Name</td><td style="width: 26.5793%;">IAM Identity Center group name for Sandbox Studio administrators.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Defaults to `<Namespace>_SsAdminsGroup`. This is the **"Administrators"** group for users who will configure and maintain the Sandbox Studio application.

If you are integrating with an external identity provider such as Microsoft Entra, see [External identity provider setup (Optional)](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/external-identity-provider-setup-optional "External identity provider setup (Optional)").

</td></tr><tr><td style="width: 16.8057%;">Manager Group Name</td><td style="width: 26.5793%;">IAM Identity Center group name for Sandbox Studio managers.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Defaults to `<Namespace>_SsManagersGroup`. This is the **"Managers"** group for users who oversee day-to-day sandbox usage within a department or team.

If you are integrating with an external identity provider such as Microsoft Entra, see [External identity provider setup (Optional)](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/external-identity-provider-setup-optional "External identity provider setup (Optional)").

</td></tr><tr><td style="width: 16.8057%;">User Group Name</td><td style="width: 26.5793%;">IAM Identity Center group name for Sandbox Studio end users.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Defaults to `<Namespace>_SsUsersGroup`. This is the **"Users"** group for users who login to sandbox accounts and use them for development, testing, training, or experimentation. If you are integrating with an external identity provider such as Microsoft Entra, see [External identity provider setup (Optional)](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/external-identity-provider-setup-optional "External identity provider setup (Optional)").

</td></tr><tr><td style="width: 16.8057%;">Identity Center Instance</td><td style="width: 26.5793%;">The IAM Identity Center instance ARN and Identity Store ID used for Sandbox Studio integration.</td><td style="width: 10.0119%;">Confirm</td><td style="width: 46.7223%;">The wizard will list the detected Identity Center instance and ask you to confirm it is the correct one.</td></tr><tr><td style="width: 16.8057%;">Custom Application in Identity Center</td><td style="width: 26.5793%;">The SAML 2.0 application used by Sandbox Studio for authentication.</td><td style="width: 10.0119%;">Confirm / Input</td><td style="width: 46.7223%;">You can either select an existing Identity Center application or the wizard will help you create a new one.</td></tr><tr><td style="width: 16.8057%;">Allowed IP Ranges</td><td style="width: 26.5793%;">CIDR ranges of IP addresses allowed to access the Sandbox Studio API.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Defaults to all IPs (`0.0.0.0/1,128.0.0.0/1`). Restrict to corporate ranges if needed.</td></tr><tr><td style="width: 16.8057%;">Custom Domain</td><td style="width: 26.5793%;">(Optional) A DNS domain for Sandbox Studio instead of the CloudFront URL.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">If used, must configure CloudFront and ACM with this domain, and update Identity Center ACS URL accordingly.</td></tr><tr><td style="width: 16.8057%;">Email From Address</td><td style="width: 26.5793%;">Email address Sandbox Studio will use to send system notifications.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">Must be a verified identity in SES. Example: `sandboxstudio@example.com`.</td></tr><tr><td style="width: 16.8057%;">Admin Users</td><td style="width: 26.5793%;">Initial set of users (by username) to be added to the Admin group in Identity Center.</td><td style="width: 10.0119%;">Input</td><td style="width: 46.7223%;">You will be prompted to enter usernames to grant them full Sandbox Studio admin rights.</td></tr></tbody></table>

#### Deployment time

The deployment of the Sandbox Studio solution with the script should take around 1 hour.

<p class="callout info">Make sure your session timeout is at least 2 hours for during the installation of Sandbox Studio.</p>

# Update Sandbox Studio

# Update Sandbox Studio

##### Updating Made Simple

Updating Sandbox Studio is easier than ever. The update process uses the same [installation script ](https://docs.sandboxstudiosoftware.com/link/89#bkmrk-page-title)you used for the initial setup, making it straightforward and familiar.

##### How It Works

When you run the installation script on a environment with an existing Sandbox Studio installation, the script automatically:

1. **Detects** the previous installation
2. **Gathers** all required configuration information from your current setup
3. **Presents** a summary of what will be updated
4. **Asks for confirmation** before proceeding

<p class="callout info">You can also update non-interactively by supplying a configuration file with the <code>--config-file</code> flag. When an existing installation is detected in this mode, all stacks are upgraded automatically without prompts. See <a href="https://docs.sandboxstudiosoftware.com/books/installation-guide/page/non-interactive-installation-configuration-file">Non-interactive installation (Configuration file)</a>.</p>

#####   


##### Running the wizard

1. Login to your AWS **Organisation Management account**.
2. Open a new [CloudShell](https://aws.amazon.com/cloudshell/) console (a link to open CloudShell can be found in the bottom left corner of the AWS console).
3. Ensure you are in the region where you want to install Sandbox Studio.
4. Run the following command:

```bash
bash <(curl -s https://dist.sandboxstudiosoftware.com/install.sh)
```

1. The following should display:

[![image.png](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/scaled-1680-/3CHimage.png)](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/3CHimage.png)

##### Confirm existing values

The script will display your current installation details and the updates available. Review this information carefully to ensure everything is correct.

[![image.png](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/scaled-1680-/57Oimage.png)](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/57Oimage.png)

##### Select Stacks to Update

You'll be presented with a stack-by-stack selection interface. For each stack, you can choose whether to update it or skip it.

<p class="callout info">**Best Practice:** It is highly recommended to update all stacks to ensure compatibility and access to the latest features and security patches.</p>

[![image.png](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/scaled-1680-/h3timage.png)](https://docs.sandboxstudiosoftware.com/uploads/images/gallery/2025-10/h3timage.png)

#####  

<p class="callout warning">Note: During update process, the script does not modify your existing configuration (AppConfig), your Identity Center applications, or anything else than the CloudFormation stacks for Sandbox Studio. You can force a reinstall of the solution by adding the flag **--reinstall true** to the installation script</p>

#####  

##### Support

If you encounter any issues during the update process, please contact your Sandbox Studio support team at <support@sandboxstudiosoftware.com> or go to [https://support.sandboxstudiosoftware.com](https://support.sandboxstudiosoftware.com)

# Non-interactive installation (Configuration file)

#### Introduction

Sandbox Studio can be installed in two ways:

- **Interactive mode**: you run the installation script and answer each prompt as the wizard guides you through the setup. This is described in [Running the Installation Wizard](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/running-the-installation-wizard "Running the Installation Wizard").
- **Non-interactive mode**: you provide all of the required settings up front in a JSON **configuration file** and pass it to the script with the `--config-file` flag. The installer reads every value from the file and runs the entire deployment without asking any questions.

Non-interactive mode is useful when you want repeatable, scripted, or unattended installations (for example in CI/CD pipelines, or when deploying the same configuration across multiple environments).

<p class="callout info">The configuration file drives exactly the same deployment as the interactive wizard. Every value you would normally be asked for in the wizard has a matching field in the configuration file.</p>

#### Installing with the script and a configuration file

You can run the installer from any terminal, including AWS CloudShell, your local machine, or a build agent, as long as it meets the requirements below.

**Before you begin, make sure your terminal is:**

- Authenticated to your AWS **Organisation Management account** (for example via `aws configure`, environment variables, an SSO profile, or an assumed role).

<p class="callout warning">Do not use your root account.</p>

- Targeting the AWS region where you want to install Sandbox Studio (for example by setting `AWS_REGION` / `AWS_DEFAULT_REGION` or your CLI profile's default region).

You can confirm which account and region your terminal is using with:

```bash
aws sts get-caller-identity
aws configure get region
```

**Then run the installation:**

1. Create your configuration file somewhere on the machine running the installer. For example, create a file called `sbs-config.json` in your home directory:

```bash
nano ~/sbs-config.json
```

Paste your configuration (see the [example configuration files](#bkmrk-example-configuration) below), then save and exit. You can use any text editor; `nano` is just an example.

2. Run the installation script and point it at your configuration file:

```bash
bash <(curl -s https://dist.sandboxstudiosoftware.com/install.sh) --config-file ~/sbs-config.json
```

The installer will load every value from the file and deploy the solution without prompting. Because no questions are asked, make sure your file is complete and correct before you run the command.

#### Using a configuration file to update Sandbox Studio

The same command is used to update an existing installation. When the script runs with a configuration file and detects an existing Sandbox Studio installation, it automatically upgrades all deployed stacks, with no confirmation prompts. Point the `--config-file` flag at your file exactly as you would for a first-time install:

```bash
bash <(curl -s https://dist.sandboxstudiosoftware.com/install.sh) --config-file ~/sbs-config.json
```

For more details on the update behaviour, see [Update Sandbox Studio](https://docs.sandboxstudiosoftware.com/books/installation-guide/page/update-sandbox-studio "Update Sandbox Studio").

#### The configuration file

The configuration file is a single JSON object. The sections below describe every field, whether it is required, its default value, and what it does.

##### Required fields

These fields must always be present in the configuration file.

<table id="bkmrk-field-type-descripti" style="width: 100%;"><thead><tr><th style="width: 22.2884%;">Field</th><th style="width: 9.5363%;">Type</th><th style="width: 68.1753%;">Description</th></tr></thead><tbody><tr><td style="width: 22.2884%;"><code>namespace</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">Unique namespace for this Sandbox Studio instance. Must be 3 to 8 alphanumeric characters (pattern <code>^[0-9a-zA-Z]{3,8}$</code>). Used as a prefix to name Sandbox Studio resources. Example: <code>Sandbox</code>.</td></tr><tr><td style="width: 22.2884%;"><code>hub_account_id</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">AWS account ID of the hub account where the data, compute, and API stacks are deployed. Must be a 12-digit account ID (pattern <code>^[0-9]{12}$</code>).</td></tr><tr><td style="width: 22.2884%;"><code>parent_ou_id</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">ID of the parent Organisational Unit where the Sandbox OUs will be created. Example: <code>ou-xxxx-xxxxxxxx</code> or a root ID such as <code>r-xxxx</code>.</td></tr><tr><td style="width: 22.2884%;"><code>managed_regions</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">Comma-separated list of AWS regions to manage. <code>us-east-1</code> is always included automatically. Example: <code>us-east-1,eu-west-1,ap-southeast-2</code>.</td></tr><tr><td style="width: 22.2884%;"><code>admin_group_name</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">IAM Identity Center group name for administrators. Example: <code>Sandbox_AdminsGroup</code>.</td></tr><tr><td style="width: 22.2884%;"><code>manager_group_name</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">IAM Identity Center group name for managers. Example: <code>Sandbox_ManagersGroup</code>.</td></tr><tr><td style="width: 22.2884%;"><code>user_group_name</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">IAM Identity Center group name for regular users. Example: <code>Sandbox_UsersGroup</code>.</td></tr><tr><td style="width: 22.2884%;"><code>allowed_ip_ranges</code></td><td style="width: 9.5363%;">string</td><td style="width: 68.1753%;">Comma-separated CIDR ranges allowed to access the API. Default: <code>0.0.0.0/1,128.0.0.0/1</code> (all IPs). Restrict to your corporate ranges if required.</td></tr><tr><td style="width: 22.2884%;"><code>use_existing_vpc</code></td><td style="width: 9.5363%;">boolean</td><td style="width: 68.1753%;">Whether to use an existing VPC (<code>true</code>) or create a new one (<code>false</code>).</td></tr><tr><td style="width: 22.2884%;"><code>notifications_enabled</code></td><td style="width: 9.5363%;">boolean</td><td style="width: 68.1753%;">Whether to enable email notifications.</td></tr></tbody></table>

##### Database options

<table id="bkmrk-field-type-required-" style="width: 100%;"><thead><tr><th style="width: 18.7128%;">Field</th><th style="width: 7.38705%;">Type</th><th style="width: 9.77624%;">Required</th><th style="width: 64.124%;">Description</th></tr></thead><tbody><tr><td style="width: 18.7128%;"><code>db_instance_type</code></td><td style="width: 7.38705%;">string</td><td style="width: 9.77624%;">Optional</td><td style="width: 64.124%;">RDS instance type for the PostgreSQL database, without the <code>db.</code> prefix. Default: <code>t4g.small</code>. Examples: <code>t4g.small</code>, <code>t4g.medium</code>, <code>r6g.large</code>.</td></tr><tr><td style="width: 18.7128%;"><code>db_engine_version</code></td><td style="width: 7.38705%;">string</td><td style="width: 9.77624%;">Optional</td><td style="width: 64.124%;">PostgreSQL engine version (format <code>X.Y</code>, major version 17 or higher). Leave empty (<code>""</code>) to use the latest default. Example: <code>17.4</code>.</td></tr><tr><td style="width: 18.7128%;"><code>db_encryption</code></td><td style="width: 7.38705%;">string</td><td style="width: 9.77624%;">Optional</td><td style="width: 64.124%;">Enable storage encryption for the RDS database. One of <code>Yes</code> or <code>No</code>. Default: <code>Yes</code> for new installations.</td></tr></tbody></table>

##### Identity Center application

You must provide **either** an existing application ARN (<code>idc_app_arn</code>) **or** a name for a new application (<code>idc_app_name</code>). If <code>idc_app_arn</code> is not supplied, a new SAML application is created using <code>idc_app_name</code> and <code>idc_app_description</code>.

<table id="bkmrk-field-type-required--1" style="width: 100%;"><thead><tr><th style="width: 19.3087%;">Field</th><th style="width: 7.38975%;">Type</th><th style="width: 12.7504%;">Required</th><th style="width: 60.5511%;">Description</th></tr></thead><tbody><tr><td style="width: 19.3087%;"><code>idc_app_arn</code></td><td style="width: 7.38975%;">string</td><td style="width: 12.7504%;">Conditional</td><td style="width: 60.5511%;">ARN of an existing IAM Identity Center application to use. If provided, an existing application is reused instead of creating a new one. Example: <code>arn:aws:sso::123456789012:application/ssoins-xxxxxxxxxxxxxxxx/apl-xxxxxxxxxxxxxxxx</code>.</td></tr><tr><td style="width: 19.3087%;"><code>idc_app_name</code></td><td style="width: 7.38975%;">string</td><td style="width: 12.7504%;">Conditional</td><td style="width: 60.5511%;">Display name for a new IAM Identity Center SAML application (used when creating a new application). Default: <code>Sandbox Studio</code>.</td></tr><tr><td style="width: 19.3087%;"><code>idc_app_description</code></td><td style="width: 7.38975%;">string</td><td style="width: 12.7504%;">Optional</td><td style="width: 60.5511%;">Description for a new IAM Identity Center SAML application. Default: <code>Sandbox Studio allows users to access temporary AWS accounts</code>.</td></tr></tbody></table>

##### Networking (VPC)

When <code>use_existing_vpc</code> is <code>true</code>, the following three fields become **required**. When <code>use_existing_vpc</code> is <code>false</code>, a new VPC is created and these fields are ignored.

<table id="bkmrk-field-type-required--2" style="width: 100%;"><thead><tr><th style="width: 16.4482%;">Field</th><th style="width: 11.6806%;">Type</th><th style="width: 22.5163%;">Required</th><th style="width: 49.355%;">Description</th></tr></thead><tbody><tr><td style="width: 16.4482%;"><code>vpc_id</code></td><td style="width: 11.6806%;">string</td><td style="width: 22.5163%;">Required if <code>use_existing_vpc</code> is <code>true</code></td><td style="width: 49.355%;">VPC ID to use. Example: <code>vpc-0123456789abcdef0</code>.</td></tr><tr><td style="width: 16.4482%;"><code>database_subnets</code></td><td style="width: 11.6806%;">string</td><td style="width: 22.5163%;">Required if <code>use_existing_vpc</code> is <code>true</code></td><td style="width: 49.355%;">Comma-separated subnet IDs for the database. Minimum 2 subnets in different Availability Zones. Example: <code>subnet-aaa,subnet-bbb</code>.</td></tr><tr><td style="width: 16.4482%;"><code>compute_subnets</code></td><td style="width: 11.6806%;">string</td><td style="width: 22.5163%;">Required if <code>use_existing_vpc</code> is <code>true</code></td><td style="width: 49.355%;">Comma-separated subnet IDs for compute resources. Minimum 1 subnet. Example: <code>subnet-ccc,subnet-ddd</code>.</td></tr></tbody></table>

##### Custom domain

<table id="bkmrk-field-type-required--3" style="width: 100%;"><thead><tr><th style="width: 16.5673%;">Field</th><th style="width: 11.323%;">Type</th><th style="width: 14.4131%;">Required</th><th style="width: 57.6965%;">Description</th></tr></thead><tbody><tr><td style="width: 16.5673%;"><code>custom_domain</code></td><td style="width: 11.323%;">string or null</td><td style="width: 14.4131%;">Optional</td><td style="width: 57.6965%;">Custom domain name for the application. Set to <code>null</code> to use the default CloudFront URL. Example: <code>sandbox.example.com</code>.</td></tr><tr><td style="width: 16.5673%;"><code>certificate_arn</code></td><td style="width: 11.323%;">string</td><td style="width: 14.4131%;">Required if <code>custom_domain</code> is set</td><td style="width: 57.6965%;">ARN of the ACM certificate in <code>us-east-1</code>. Example: <code>arn:aws:acm:us-east-1:123456789012:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</code>.</td></tr></tbody></table>

##### Administrators

<table id="bkmrk-field-type-required--4" style="width: 100%;"><thead><tr><th style="width: 17.399%;">Field</th><th style="width: 10.8489%;">Type</th><th style="width: 9.89273%;">Required</th><th style="width: 61.8594%;">Description</th></tr></thead><tbody><tr><td style="width: 17.399%;"><code>add_admin_users</code></td><td style="width: 10.8489%;">boolean</td><td style="width: 9.89273%;">Optional</td><td style="width: 61.8594%;">Whether to add IAM Identity Center users as Sandbox Studio administrators during installation. Default: <code>false</code>.</td></tr><tr><td style="width: 17.399%;"><code>admin_users</code></td><td style="width: 10.8489%;">array of strings</td><td style="width: 9.89273%;">Optional</td><td style="width: 61.8594%;">List of IAM Identity Center usernames to add as Sandbox Studio administrators. Used when <code>add_admin_users</code> is <code>true</code>. Example: <code>["admin@example.com", "john.doe"]</code>.</td></tr></tbody></table>

##### Email notifications

When <code>notifications_enabled</code> is <code>true</code>, <code>email_service</code> and <code>email_from</code> are **required**. If <code>email_service</code> is set to <code>SMTP</code>, the SMTP fields below also become required.

<table id="bkmrk-field-type-required--5" style="width: 100%;"><thead><tr><th style="width: 14.7795%;">Field</th><th style="width: 11.7998%;">Type</th><th style="width: 26.2095%;">Required</th><th style="width: 47.2112%;">Description</th></tr></thead><tbody><tr><td style="width: 14.7795%;"><code>email_service</code></td><td style="width: 11.7998%;">string</td><td style="width: 26.2095%;">Required if <code>notifications_enabled</code> is <code>true</code></td><td style="width: 47.2112%;">Email service to use for notifications. One of <code>SES</code> or <code>SMTP</code>. Default: <code>SES</code>.</td></tr><tr><td style="width: 14.7795%;"><code>email_from</code></td><td style="width: 11.7998%;">string (email)</td><td style="width: 26.2095%;">Required if <code>notifications_enabled</code> is <code>true</code></td><td style="width: 47.2112%;">Sender email address for notifications. For SES, this must be a verified identity. Example: <code>sandboxstudio@example.com</code>.</td></tr><tr><td style="width: 14.7795%;"><code>smtp_server</code></td><td style="width: 11.7998%;">string</td><td style="width: 26.2095%;">Required if <code>email_service</code> is <code>SMTP</code></td><td style="width: 47.2112%;">SMTP server hostname. Example: <code>smtp.example.com</code>.</td></tr><tr><td style="width: 14.7795%;"><code>smtp_username</code></td><td style="width: 11.7998%;">string</td><td style="width: 26.2095%;">Required if <code>email_service</code> is <code>SMTP</code></td><td style="width: 47.2112%;">SMTP username.</td></tr><tr><td style="width: 14.7795%;"><code>smtp_password</code></td><td style="width: 11.7998%;">string</td><td style="width: 26.2095%;">Required if <code>email_service</code> is <code>SMTP</code></td><td style="width: 47.2112%;">SMTP password.</td></tr><tr><td style="width: 14.7795%;"><code>smtp_port</code></td><td style="width: 11.7998%;">string or integer</td><td style="width: 26.2095%;">Required if <code>email_service</code> is <code>SMTP</code></td><td style="width: 47.2112%;">SMTP port number. Default: <code>587</code>.</td></tr><tr><td style="width: 14.7795%;"><code>smtp_use_tls</code></td><td style="width: 11.7998%;">boolean</td><td style="width: 26.2095%;">Required if <code>email_service</code> is <code>SMTP</code></td><td style="width: 47.2112%;">Whether to use TLS for SMTP connections. Default: <code>true</code>.</td></tr></tbody></table>

<p class="callout warning"><strong>Security:</strong> When you use the <code>SMTP</code> email service, the configuration file contains your <code>smtp_password</code> in plain text. Do not commit this file to source control and do not share it. Delete it once the installation is complete, and store any long-lived copy securely.</p>

#### Example configuration files

The examples below use placeholder account IDs, VPC IDs, and subnet IDs. Replace them with your own values.

##### Example 1: New VPC with SES notifications

```json
{
  "namespace": "Sandbox",
  "hub_account_id": "123456789012",
  "parent_ou_id": "ou-xxxx-xxxxxxxx",
  "managed_regions": "us-east-1,eu-west-1",
  "db_instance_type": "t4g.small",
  "db_engine_version": "",
  "idc_app_name": "Sandbox Studio",
  "idc_app_description": "Sandbox Studio allows users to access temporary AWS accounts",
  "admin_group_name": "Sandbox_AdminsGroup",
  "manager_group_name": "Sandbox_ManagersGroup",
  "user_group_name": "Sandbox_UsersGroup",
  "allowed_ip_ranges": "0.0.0.0/1,128.0.0.0/1",
  "use_existing_vpc": false,
  "custom_domain": null,
  "notifications_enabled": true,
  "add_admin_users": true,
  "admin_users": ["admin@example.com"],
  "email_service": "SES",
  "email_from": "sandboxstudio@example.com"
}
```

##### Example 2: Existing VPC, no notifications

```json
{
  "namespace": "SBS",
  "hub_account_id": "123456789012",
  "parent_ou_id": "ou-xxxx-xxxxxxxx",
  "managed_regions": "us-east-1,ap-southeast-1",
  "db_instance_type": "t4g.small",
  "db_engine_version": "",
  "idc_app_name": "Sandbox Studio",
  "idc_app_description": "Sandbox Studio allows users to access temporary AWS accounts",
  "admin_group_name": "Sandbox_Admins",
  "manager_group_name": "Sandbox_Managers",
  "user_group_name": "Sandbox_Users",
  "allowed_ip_ranges": "0.0.0.0/1,128.0.0.0/1",
  "use_existing_vpc": true,
  "vpc_id": "vpc-0123456789abcdef0",
  "database_subnets": "subnet-0aaaa1111bbbb2222,subnet-0cccc3333dddd4444",
  "compute_subnets": "subnet-0eeee5555ffff6666,subnet-07777gggg8888hhhh",
  "custom_domain": null,
  "notifications_enabled": false,
  "add_admin_users": true,
  "admin_users": ["admin-trial", "andy"]
}
```

##### Example 3: Email notifications with SES

This example enables email notifications using Amazon SES. The <code>email_from</code> address must be a verified identity in SES.

```json
{
  "namespace": "Sandbox",
  "hub_account_id": "123456789012",
  "parent_ou_id": "ou-xxxx-xxxxxxxx",
  "managed_regions": "us-east-1,eu-west-1",
  "db_instance_type": "t4g.small",
  "db_engine_version": "",
  "idc_app_name": "Sandbox Studio",
  "idc_app_description": "Sandbox Studio allows users to access temporary AWS accounts",
  "admin_group_name": "Sandbox_AdminsGroup",
  "manager_group_name": "Sandbox_ManagersGroup",
  "user_group_name": "Sandbox_UsersGroup",
  "allowed_ip_ranges": "0.0.0.0/1,128.0.0.0/1",
  "use_existing_vpc": false,
  "custom_domain": null,
  "notifications_enabled": true,
  "email_service": "SES",
  "email_from": "sandboxstudio@example.com"
}
```

##### Example 4: Email notifications with SMTP

This example enables email notifications using an SMTP server. When <code>email_service</code> is set to <code>SMTP</code>, all of the <code>smtp_*</code> fields are required.

```json
{
  "namespace": "Sandbox",
  "hub_account_id": "123456789012",
  "parent_ou_id": "ou-xxxx-xxxxxxxx",
  "managed_regions": "us-east-1,eu-west-1",
  "db_instance_type": "t4g.small",
  "db_engine_version": "",
  "idc_app_name": "Sandbox Studio",
  "idc_app_description": "Sandbox Studio allows users to access temporary AWS accounts",
  "admin_group_name": "Sandbox_AdminsGroup",
  "manager_group_name": "Sandbox_ManagersGroup",
  "user_group_name": "Sandbox_UsersGroup",
  "allowed_ip_ranges": "0.0.0.0/1,128.0.0.0/1",
  "use_existing_vpc": false,
  "custom_domain": null,
  "notifications_enabled": true,
  "email_service": "SMTP",
  "email_from": "sandboxstudio@example.com",
  "smtp_server": "smtp.example.com",
  "smtp_username": "smtp-user",
  "smtp_password": "your-smtp-password",
  "smtp_port": "587",
  "smtp_use_tls": true
}
```

##### Example 5: Custom domain with an ACM certificate

This example serves Sandbox Studio from a custom domain instead of the default CloudFront URL. When <code>custom_domain</code> is set, <code>certificate_arn</code> is required and the certificate must exist in <code>us-east-1</code>.

```json
{
  "namespace": "Sandbox",
  "hub_account_id": "123456789012",
  "parent_ou_id": "ou-xxxx-xxxxxxxx",
  "managed_regions": "us-east-1,eu-west-1",
  "db_instance_type": "t4g.small",
  "db_engine_version": "",
  "idc_app_name": "Sandbox Studio",
  "idc_app_description": "Sandbox Studio allows users to access temporary AWS accounts",
  "admin_group_name": "Sandbox_AdminsGroup",
  "manager_group_name": "Sandbox_ManagersGroup",
  "user_group_name": "Sandbox_UsersGroup",
  "allowed_ip_ranges": "0.0.0.0/1,128.0.0.0/1",
  "use_existing_vpc": false,
  "custom_domain": "sandbox.example.com",
  "certificate_arn": "arn:aws:acm:us-east-1:123456789012:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "notifications_enabled": false
}
```

#### Support

If you encounter any issues, please contact your Sandbox Studio support team at <support@sandboxstudiosoftware.com> or go to [https://support.sandboxstudiosoftware.com](https://support.sandboxstudiosoftware.com).