From 9d2268be74b163c115b23f7819e643d764995060 Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Thu, 30 Nov 2023 17:41:04 +0100 Subject: [PATCH 1/2] fix(core): wrong quota for nested stacks --- packages/aws-cdk-lib/core/lib/stack.ts | 2 +- packages/aws-cdk-lib/core/test/stack.test.ts | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/aws-cdk-lib/core/lib/stack.ts b/packages/aws-cdk-lib/core/lib/stack.ts index bea3f6814f452..77b0193c03e3b 100644 --- a/packages/aws-cdk-lib/core/lib/stack.ts +++ b/packages/aws-cdk-lib/core/lib/stack.ts @@ -36,7 +36,7 @@ const TEMPLATE_BODY_MAXIMUM_SIZE = 1_000_000; const VALID_STACK_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-]*$/; -const MAX_RESOURCES = 500; +const MAX_RESOURCES = 2500; const STRING_LIST_REFERENCE_DELIMITER = '||'; export interface StackProps { diff --git a/packages/aws-cdk-lib/core/test/stack.test.ts b/packages/aws-cdk-lib/core/test/stack.test.ts index 98954be70ee58..44ac1464574f6 100644 --- a/packages/aws-cdk-lib/core/test/stack.test.ts +++ b/packages/aws-cdk-lib/core/test/stack.test.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import { testDeprecated } from '@aws-cdk/cdk-build-tools'; import { Construct, Node } from 'constructs'; import { toCloudFormation } from './util'; +import { Annotations } from '../../assertions'; import * as cxapi from '../../cx-api'; import { Fact, RegionInfo } from '../../region-info'; import { @@ -71,13 +72,28 @@ describe('stack', () => { const stack = new Stack(app, 'MyStack'); // WHEN - for (let index = 0; index < 1000; index++) { + for (let index = 0; index < 3000; index++) { new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); } expect(() => { app.synth(); - }).toThrow('Number of resources in stack \'MyStack\': 1000 is greater than allowed maximum of 500'); + }).toThrow('Number of resources in stack \'MyStack\': 3000 is greater than allowed maximum of 2500'); + }); + + test('when stackResourceLimit is default, should show message when approaching limit', () => { + // GIVEN + const app = new App({}); + + const stack = new Stack(app, 'MyStack'); + + // WHEN + const numberOfResources = 2300; + for (let index = 0; index < numberOfResources; index++) { + new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); + } + + Annotations.fromStack(stack).hasInfo('/MyStack', `Number of resources: ${numberOfResources} is approaching allowed maximum of 2500`); }); test('when stackResourceLimit is defined, should give the proper error', () => { From b431586a458f0e9b371a1dfa8f979cb505ce6edd Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Sat, 2 Dec 2023 17:28:38 +0100 Subject: [PATCH 2/2] do not apply max resource quota on nested stacks --- .../Parent.assets.json | 32 + .../Parent.template.json | 65 + .../ParentChild8B49BB45.nested.template.json | 4087 +++++++++++++++++ .../integ.nested-stack.js.snapshot/cdk.out | 1 + .../integ.nested-stack.js.snapshot/integ.json | 12 + ...efaultTestDeployAssert8CBD0FA9.assets.json | 19 + ...aultTestDeployAssert8CBD0FA9.template.json | 36 + .../manifest.json | 131 + .../integ.nested-stack.js.snapshot/tree.json | 202 + .../test/core/test/integ.nested-stack.ts | 27 + packages/aws-cdk-lib/core/lib/stack.ts | 4 +- packages/aws-cdk-lib/core/test/stack.test.ts | 27 +- 12 files changed, 4637 insertions(+), 6 deletions(-) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/ParentChild8B49BB45.nested.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integ.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/tree.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.ts diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.assets.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.assets.json new file mode 100644 index 0000000000000..21ada0264251f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.assets.json @@ -0,0 +1,32 @@ +{ + "version": "34.0.0", + "files": { + "fe8d8d7d10d4ad0d5734436181209189bb800af46250e0526155103e3f6c1c57": { + "source": { + "path": "ParentChild8B49BB45.nested.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "fe8d8d7d10d4ad0d5734436181209189bb800af46250e0526155103e3f6c1c57.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "329f1a90e8d664de3946134d52c7bb7dc7ad43dd59de875e3cc67562c1cc2dc6": { + "source": { + "path": "Parent.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "329f1a90e8d664de3946134d52c7bb7dc7ad43dd59de875e3cc67562c1cc2dc6.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.template.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.template.json new file mode 100644 index 0000000000000..7b554b7cdeb9c --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/Parent.template.json @@ -0,0 +1,65 @@ +{ + "Resources": { + "ChildNestedStackChildNestedStackResourceC40294CA": { + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/fe8d8d7d10d4ad0d5734436181209189bb800af46250e0526155103e3f6c1c57.json" + ] + ] + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/ParentChild8B49BB45.nested.template.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/ParentChild8B49BB45.nested.template.json new file mode 100644 index 0000000000000..a8014d86156ab --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/ParentChild8B49BB45.nested.template.json @@ -0,0 +1,4087 @@ +{ + "Resources": { + "WaitConditionHandle": { + "Type": "AWS::CloudFormation::WaitConditionHandle" + }, + "ExampleResource0": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource1": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource2": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource3": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource4": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource5": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource6": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource7": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource8": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource9": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource10": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource11": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource12": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource13": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource14": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource15": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource16": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource17": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource18": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource19": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource20": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource21": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource22": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource23": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource24": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource25": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource26": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource27": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource28": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource29": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource30": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource31": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource32": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource33": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource34": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource35": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource36": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource37": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource38": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource39": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource40": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource41": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource42": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource43": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource44": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource45": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource46": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource47": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource48": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource49": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource50": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource51": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource52": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource53": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource54": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource55": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource56": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource57": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource58": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource59": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource60": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource61": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource62": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource63": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource64": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource65": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource66": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource67": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource68": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource69": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource70": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource71": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource72": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource73": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource74": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource75": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource76": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource77": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource78": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource79": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource80": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource81": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource82": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource83": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource84": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource85": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource86": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource87": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource88": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource89": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource90": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource91": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource92": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource93": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource94": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource95": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource96": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource97": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource98": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource99": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource100": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource101": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource102": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource103": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource104": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource105": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource106": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource107": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource108": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource109": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource110": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource111": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource112": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource113": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource114": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource115": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource116": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource117": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource118": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource119": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource120": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource121": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource122": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource123": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource124": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource125": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource126": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource127": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource128": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource129": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource130": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource131": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource132": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource133": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource134": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource135": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource136": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource137": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource138": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource139": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource140": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource141": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource142": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource143": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource144": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource145": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource146": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource147": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource148": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource149": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource150": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource151": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource152": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource153": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource154": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource155": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource156": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource157": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource158": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource159": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource160": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource161": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource162": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource163": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource164": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource165": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource166": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource167": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource168": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource169": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource170": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource171": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource172": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource173": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource174": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource175": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource176": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource177": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource178": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource179": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource180": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource181": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource182": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource183": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource184": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource185": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource186": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource187": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource188": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource189": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource190": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource191": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource192": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource193": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource194": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource195": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource196": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource197": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource198": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource199": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource200": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource201": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource202": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource203": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource204": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource205": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource206": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource207": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource208": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource209": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource210": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource211": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource212": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource213": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource214": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource215": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource216": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource217": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource218": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource219": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource220": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource221": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource222": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource223": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource224": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource225": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource226": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource227": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource228": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource229": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource230": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource231": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource232": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource233": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource234": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource235": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource236": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource237": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource238": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource239": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource240": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource241": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource242": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource243": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource244": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource245": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource246": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource247": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource248": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource249": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource250": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource251": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource252": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource253": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource254": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource255": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource256": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource257": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource258": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource259": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource260": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource261": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource262": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource263": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource264": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource265": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource266": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource267": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource268": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource269": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource270": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource271": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource272": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource273": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource274": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource275": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource276": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource277": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource278": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource279": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource280": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource281": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource282": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource283": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource284": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource285": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource286": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource287": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource288": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource289": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource290": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource291": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource292": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource293": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource294": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource295": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource296": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource297": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource298": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource299": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource300": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource301": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource302": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource303": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource304": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource305": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource306": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource307": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource308": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource309": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource310": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource311": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource312": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource313": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource314": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource315": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource316": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource317": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource318": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource319": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource320": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource321": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource322": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource323": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource324": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource325": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource326": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource327": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource328": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource329": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource330": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource331": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource332": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource333": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource334": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource335": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource336": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource337": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource338": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource339": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource340": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource341": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource342": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource343": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource344": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource345": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource346": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource347": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource348": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource349": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource350": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource351": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource352": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource353": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource354": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource355": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource356": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource357": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource358": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource359": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource360": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource361": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource362": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource363": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource364": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource365": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource366": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource367": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource368": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource369": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource370": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource371": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource372": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource373": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource374": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource375": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource376": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource377": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource378": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource379": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource380": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource381": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource382": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource383": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource384": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource385": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource386": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource387": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource388": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource389": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource390": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource391": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource392": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource393": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource394": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource395": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource396": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource397": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource398": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource399": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource400": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource401": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource402": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource403": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource404": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource405": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource406": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource407": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource408": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource409": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource410": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource411": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource412": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource413": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource414": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource415": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource416": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource417": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource418": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource419": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource420": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource421": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource422": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource423": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource424": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource425": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource426": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource427": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource428": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource429": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource430": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource431": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource432": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource433": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource434": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource435": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource436": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource437": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource438": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource439": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource440": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource441": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource442": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource443": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource444": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource445": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource446": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource447": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource448": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource449": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource450": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource451": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource452": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource453": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource454": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource455": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource456": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource457": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource458": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource459": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource460": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource461": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource462": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource463": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource464": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource465": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource466": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource467": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource468": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource469": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource470": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource471": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource472": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource473": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource474": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource475": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource476": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource477": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource478": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource479": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource480": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource481": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource482": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource483": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource484": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource485": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource486": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource487": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource488": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource489": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource490": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource491": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource492": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource493": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource494": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource495": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource496": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource497": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource498": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource499": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource500": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource501": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource502": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource503": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource504": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource505": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource506": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource507": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource508": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + }, + "ExampleResource509": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { "Ref": "WaitConditionHandle" }, + "Timeout": "1" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/cdk.out new file mode 100644 index 0000000000000..2313ab5436501 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"34.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integ.json new file mode 100644 index 0000000000000..78a4af20537ba --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "34.0.0", + "testCases": { + "integ-nested-stack/DefaultTest": { + "stacks": [ + "Parent" + ], + "assertionStack": "integ-nested-stack/DefaultTest/DeployAssert", + "assertionStackName": "integnestedstackDefaultTestDeployAssert8CBD0FA9" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.assets.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.assets.json new file mode 100644 index 0000000000000..9cbd412784708 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.assets.json @@ -0,0 +1,19 @@ +{ + "version": "34.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/manifest.json new file mode 100644 index 0000000000000..5750662e014e8 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/manifest.json @@ -0,0 +1,131 @@ +{ + "version": "34.0.0", + "artifacts": { + "Parent.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "Parent.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "Parent": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "Parent.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/329f1a90e8d664de3946134d52c7bb7dc7ad43dd59de875e3cc67562c1cc2dc6.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "Parent.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "Parent.assets" + ], + "metadata": { + "/Parent/Child/WaitConditionHandle": [ + { + "type": "aws:cdk:logicalId", + "data": "WaitConditionHandle" + } + ], + "/Parent/Child/ExampleResource-0": [ + { + "type": "aws:cdk:logicalId", + "data": "ExampleResource0" + } + ], + "/Parent/Child/ExampleResource-1": [ + { + "type": "aws:cdk:logicalId", + "data": "ExampleResource1" + } + ], + "/Parent/Child.NestedStack/Child.NestedStackResource": [ + { + "type": "aws:cdk:logicalId", + "data": "ChildNestedStackChildNestedStackResourceC40294CA" + } + ], + "/Parent/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/Parent/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "Parent" + }, + "integnestedstackDefaultTestDeployAssert8CBD0FA9.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "integnestedstackDefaultTestDeployAssert8CBD0FA9.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "integnestedstackDefaultTestDeployAssert8CBD0FA9": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "integnestedstackDefaultTestDeployAssert8CBD0FA9.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "integnestedstackDefaultTestDeployAssert8CBD0FA9.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "integnestedstackDefaultTestDeployAssert8CBD0FA9.assets" + ], + "metadata": { + "/integ-nested-stack/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/integ-nested-stack/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "integ-nested-stack/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/tree.json new file mode 100644 index 0000000000000..cc22918bbcf52 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.js.snapshot/tree.json @@ -0,0 +1,202 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Parent": { + "id": "Parent", + "path": "Parent", + "children": { + "Child": { + "id": "Child", + "path": "Parent/Child", + "children": { + "WaitConditionHandle": { + "id": "WaitConditionHandle", + "path": "Parent/Child/WaitConditionHandle", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitConditionHandle", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CfnWaitConditionHandle", + "version": "0.0.0" + } + }, + "ExampleResource-0": { + "id": "ExampleResource-0", + "path": "Parent/Child/ExampleResource-0", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitCondition", + "aws:cdk:cloudformation:props": { + "count": 0, + "handle": { + "Ref": "WaitConditionHandle" + }, + "timeout": "1" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CfnWaitCondition", + "version": "0.0.0" + } + }, + "ExampleResource-1": { + "id": "ExampleResource-1", + "path": "Parent/Child/ExampleResource-1", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitCondition", + "aws:cdk:cloudformation:props": { + "count": 0, + "handle": { + "Ref": "WaitConditionHandle" + }, + "timeout": "1" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CfnWaitCondition", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.NestedStack", + "version": "0.0.0" + } + }, + "Child.NestedStack": { + "id": "Child.NestedStack", + "path": "Parent/Child.NestedStack", + "children": { + "Child.NestedStackResource": { + "id": "Child.NestedStackResource", + "path": "Parent/Child.NestedStack/Child.NestedStackResource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::Stack", + "aws:cdk:cloudformation:props": { + "templateUrl": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/fe8d8d7d10d4ad0d5734436181209189bb800af46250e0526155103e3f6c1c57.json" + ] + ] + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CfnStack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.3.0" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "Parent/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "Parent/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "integ-nested-stack": { + "id": "integ-nested-stack", + "path": "integ-nested-stack", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "integ-nested-stack/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "integ-nested-stack/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.3.0" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "integ-nested-stack/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "integ-nested-stack/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "integ-nested-stack/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.3.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.ts b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.ts new file mode 100644 index 0000000000000..dbabf3c95587f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/core/test/integ.nested-stack.ts @@ -0,0 +1,27 @@ +import * as cdk from 'aws-cdk-lib'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; + +/** + * Verifies that MAX_RESOURCE_LIMIT is not enforced on nested stacks. + * + * See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html + */ + +const app = new cdk.App(); + +const parent = new cdk.Stack(app, 'Parent'); +const child = new cdk.NestedStack(parent, 'Child'); + +const waitConditionHandle = new cdk.CfnWaitConditionHandle(child, 'WaitConditionHandle'); + +for (let i = 0; i < 510; i++) { + new cdk.CfnWaitCondition(child, `ExampleResource-${i}`, { + count: 0, + handle: waitConditionHandle.ref, + timeout: '1', + }); +} + +new IntegTest(app, 'integ-nested-stack', { + testCases: [parent], +}); \ No newline at end of file diff --git a/packages/aws-cdk-lib/core/lib/stack.ts b/packages/aws-cdk-lib/core/lib/stack.ts index 77b0193c03e3b..0818a06d9386a 100644 --- a/packages/aws-cdk-lib/core/lib/stack.ts +++ b/packages/aws-cdk-lib/core/lib/stack.ts @@ -36,7 +36,7 @@ const TEMPLATE_BODY_MAXIMUM_SIZE = 1_000_000; const VALID_STACK_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-]*$/; -const MAX_RESOURCES = 2500; +const MAX_RESOURCES = 500; const STRING_LIST_REFERENCE_DELIMITER = '||'; export interface StackProps { @@ -1075,7 +1075,7 @@ export class Stack extends Construct implements ITaggable { // write the CloudFormation template as a JSON file const outPath = path.join(builder.outdir, this.templateFile); - if (this.maxResources > 0) { + if (this.maxResources > 0 && !this.nested) { const resources = template.Resources || {}; const numberOfResources = Object.keys(resources).length; diff --git a/packages/aws-cdk-lib/core/test/stack.test.ts b/packages/aws-cdk-lib/core/test/stack.test.ts index 44ac1464574f6..6011b7dd5e19c 100644 --- a/packages/aws-cdk-lib/core/test/stack.test.ts +++ b/packages/aws-cdk-lib/core/test/stack.test.ts @@ -72,13 +72,14 @@ describe('stack', () => { const stack = new Stack(app, 'MyStack'); // WHEN - for (let index = 0; index < 3000; index++) { + for (let index = 0; index < 1000; index++) { new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); } + // THEN expect(() => { app.synth(); - }).toThrow('Number of resources in stack \'MyStack\': 3000 is greater than allowed maximum of 2500'); + }).toThrow('Number of resources in stack \'MyStack\': 1000 is greater than allowed maximum of 500'); }); test('when stackResourceLimit is default, should show message when approaching limit', () => { @@ -88,12 +89,13 @@ describe('stack', () => { const stack = new Stack(app, 'MyStack'); // WHEN - const numberOfResources = 2300; + const numberOfResources = 400; for (let index = 0; index < numberOfResources; index++) { new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); } - Annotations.fromStack(stack).hasInfo('/MyStack', `Number of resources: ${numberOfResources} is approaching allowed maximum of 2500`); + // THEN + Annotations.fromStack(stack).hasInfo('/MyStack', `Number of resources: ${numberOfResources} is approaching allowed maximum of 500`); }); test('when stackResourceLimit is defined, should give the proper error', () => { @@ -136,6 +138,23 @@ describe('stack', () => { }).not.toThrow(); }); + test('stackResourceLimit is not enforced on nested stacks', () => { + // GIVEN + const app = new App({}); + const parent = new Stack(app, 'Parent'); + const child = new NestedStack(parent, 'Child'); + + // WHEN + for (let index = 0; index < 1000; index++) { + new CfnResource(child, `MyResource-${index}`, { type: 'MyResourceType' }); + } + + // THEN + expect(() => { + app.synth(); + }).not.toThrow(); + }); + test('stack.templateOptions can be used to set template-level options', () => { const stack = new Stack();