Since CloudFormation has a limit of 500 resources, we are splitting our stack with the serverless-plugin-split-stacks plugin. Recently, we have run out of the resources this way as well. The documentation specifies that
Once set, the
nestedStackCountconfiguration should never be changed because the only reliable method of changing it later on is to recreate the deployment from scratch.
My configuration is the following currently:
splitStacks:
nestedStackCount: 20
perFunction: false
perType: false
perGroupFunction: true
What's a safe way to change my configuration and increase the nestedStackCount without breaking anything? My current deployment has the following steps:
- npm install -g serverless
- sls prune -n 10
- sls deploy
The error I'm receiving is the following:
$ sls deploy
Running "serverless" from node_modules
Compiling with Typescript...
Using local tsconfig.json - tsconfig.json
Typescript compiled.
[serverless-plugin-split-stacks]: Summary: 248 resources migrated into 20 nested stacks
[serverless-plugin-split-stacks]: ├─ (root): 515
[serverless-plugin-split-stacks]: │ ├─ Outputs: 3
[serverless-plugin-split-stacks]: │ └─ Parameters: 0 (References: 1323)
[serverless-plugin-split-stacks]: ├─ 10NestedStack: 18
[serverless-plugin-split-stacks]: │ ├─ Outputs: 5
[serverless-plugin-split-stacks]: │ └─ Parameters: 9 (References: 5)
[serverless-plugin-split-stacks]: ├─ 11NestedStack: 26
[serverless-plugin-split-stacks]: │ ├─ Outputs: 3
[serverless-plugin-split-stacks]: │ └─ Parameters: 9 (References: 22)
[serverless-plugin-split-stacks]: ├─ 12NestedStack: 15
[serverless-plugin-split-stacks]: │ ├─ Outputs: 5
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 5)
[serverless-plugin-split-stacks]: ├─ 13NestedStack: 9
[serverless-plugin-split-stacks]: │ ├─ Outputs: 3
[serverless-plugin-split-stacks]: │ └─ Parameters: 8 (References: 3)
[serverless-plugin-split-stacks]: ├─ 14NestedStack: 6
[serverless-plugin-split-stacks]: │ ├─ Outputs: 2
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 2)
[serverless-plugin-split-stacks]: ├─ 15NestedStack: 10
[serverless-plugin-split-stacks]: │ ├─ Outputs: 2
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 5)
[serverless-plugin-split-stacks]: ├─ 16NestedStack: 6
[serverless-plugin-split-stacks]: │ ├─ Outputs: 2
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 2)
[serverless-plugin-split-stacks]: ├─ 17NestedStack: 9
[serverless-plugin-split-stacks]: │ ├─ Outputs: 3
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 3)
[serverless-plugin-split-stacks]: ├─ 18NestedStack: 18
[serverless-plugin-split-stacks]: │ ├─ Outputs: 6
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 6)
[serverless-plugin-split-stacks]: ├─ 19NestedStack: 3
[serverless-plugin-split-stacks]: │ ├─ Outputs: 1
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 1)
[serverless-plugin-split-stacks]: ├─ 1NestedStack: 18
[serverless-plugin-split-stacks]: │ ├─ Outputs: 6
[serverless-plugin-split-stacks]: │ └─ Parameters: 8 (References: 6)
[serverless-plugin-split-stacks]: ├─ 20NestedStack: 12
[serverless-plugin-split-stacks]: │ ├─ Outputs: 3
[serverless-plugin-split-stacks]: │ └─ Parameters: 9 (References: 4)
[serverless-plugin-split-stacks]: ├─ 2NestedStack: 8
[serverless-plugin-split-stacks]: │ ├─ Outputs: 2
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 2)
[serverless-plugin-split-stacks]: ├─ 3NestedStack: 14
[serverless-plugin-split-stacks]: │ ├─ Outputs: 2
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 11)
[serverless-plugin-split-stacks]: ├─ 4NestedStack: 4
[serverless-plugin-split-stacks]: │ ├─ Outputs: 0
[serverless-plugin-split-stacks]: │ └─ Parameters: 6 (References: 3)
[serverless-plugin-split-stacks]: ├─ 5NestedStack: 21
[serverless-plugin-split-stacks]: │ ├─ Outputs: 7
[serverless-plugin-split-stacks]: │ └─ Parameters: 7 (References: 7)
[serverless-plugin-split-stacks]: ├─ 6NestedStack: 18
[serverless-plugin-split-stacks]: │ ├─ Outputs: 6
[serverless-plugin-split-stacks]: │ └─ Parameters: 8 (References: 6)
[serverless-plugin-split-stacks]: ├─ 7NestedStack: 15
[serverless-plugin-split-stacks]: │ ├─ Outputs: 4
[serverless-plugin-split-stacks]: │ └─ Parameters: 9 (References: 5)
[serverless-plugin-split-stacks]: ├─ 8NestedStack: 15
[serverless-plugin-split-stacks]: │ ├─ Outputs: 5
[serverless-plugin-split-stacks]: │ └─ Parameters: 8 (References: 5)
[serverless-plugin-split-stacks]: └─ 9NestedStack: 3
[serverless-plugin-split-stacks]: ├─ Outputs: 0
[serverless-plugin-split-stacks]: └─ Parameters: 7 (References: 1)
× Stack failed to deploy (134s)
Environment: linux, node 18.17.1, framework 3.26.0 (local) 3.36.0v (global), plugin 6.2.2, SDK 4.3.2
Credentials: Local, environment variables
Docs: docs.serverless.com
Support: forum.serverless.com
Bugs: github.com/serverless/serverless/issues
Error:
The CloudFormation template is invalid: Template format error: Number of resources, 515, is greater than maximum allowed, 500
Would this break the deployment if I increased the nestedStackCount? What's the best way to do that without braking anything?
Thanks in advance!