Deploy error reporting is not showing the reason of failure when using nested stacks.
See original GitHub issuemain/root stack is not properly reporting errors from nested stacks, there is no way to know why it actually failed because the error is generalized that some resources could not be created, but why, there is no reason. The only chance to see the error is to constantly monitor the deployment on AWS CloudFormation Console, and once it starts to roll back and delete nested stacks you can quickly see why the nested stack failed in events tab.
E.g.:
creating CloudFormation changeset...
0/3 | 2:07:56 PM | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata
0/3 | 2:07:56 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | appsync-bizon.NestedStack/appsync-bizon.NestedStackResource (appsyncbizonNestedStackappsyncbizonNestedStackResource814A53CF)
0/3 | 2:07:57 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | appsync-bizon.NestedStack/appsync-bizon.NestedStackResource (appsyncbizonNestedStackappsyncbizonNestedStackResource814A53CF) Resource creation Initiated
0/3 | 2:07:58 PM | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata Resource creation Initiated
1/3 | 2:07:58 PM | CREATE_COMPLETE | AWS::CDK::Metadata | CDKMetadata
2/3 | 2:08:19 PM | CREATE_FAILED | AWS::CloudFormation::Stack | appsync-bizon.NestedStack/appsync-bizon.NestedStackResource (appsyncbizonNestedStackappsyncbizonNestedStackResource814A53CF) Embedded stack arn:aws:cloudformation:eu-west-2:452364846299:stack/ProductName-bizon-appsyncbizonNestedStackappsyncbizonNestedStackResource814A53CF-4NAE12ZLOQGT/a92a4b40-3c46-11ea-9fec-06452e71541c was not successfully created: The following resource(s) failed to create: [dynamodbstackbizonNestedStackdynamodbstackbizonNestedStackResource0AACEAF0, productnameresolversNestedStackproductnameresolversNestedStackResource42DF9B6A].
as you can see there is no reason why it failed, just saying that some resources failed to create. While actually the error on the nested stack events tab is:
E.g.:
Service role arn not specified (Service: AWSAppSync; Status Code: 400; Error Code: BadRequestException; Request ID: 5a9b00be-f21c-4cea-97ad-3d0e8552c5e5)
or
Only one resolver is allowed per field. (Service: AWSAppSync; Status Code: 400; Error Code: BadRequestException; Request ID: 39813c06-7d28-4d72-be32-f05785f4338e)
QueryListEvents, WikiArticleLastRevision
or
Property validation failure: [Value for property {/Name} does not match pattern {[_A-Za-z][_0-9A-Za-z]*}]
So there is no way to know about those errors because on roll back those stacks are removed, and developer will never know why it failed.
Reproduction Steps
Just add a nested stack and try to simulate the above error examples:
- Create AppSync nested stack but don’t create service roll for it, and try to create another resource which should rely on that service role.
- Name a resource in a nested stack improperly with
-
or.
- Create 2 same resolver in one nested stack. etc … basically any error that will be thrown inside nested stack
Error Log
already specified above
Environment
- CLI Version : 1.21.0
- Framework Version:
- OS : Windows
- Language : Typescript
Other
I found this issue opened as a feature #4489 but I don’t think it is a feature, rather it is a bug, since the feature of having Nested Stacks exists, this means that error reporting for nested stack to be chained in the parent wasn’t.
This is 🐛 Bug Report
Issue Analytics
- State:
- Created 4 years ago
- Reactions:43
- Comments:8
Top GitHub Comments
I’m also trying to learn CDK right now and wondering how I’m supposed to debug anything when all I’m getting is something like “The following resource(s) failed to create: [Serverapp, EbsStackawselasticbeanstalkec2roleD9735CA4].”
I faced the same issue, but found the failed nested stack in the CloudFormation CLI under stacks and when toggling the dropdown from “Active” to “Deleted”. The stack events for that one contained the failure reason.