Detect changeset creation failure when there's no changet
@@ -264,9 +264,20 @@ func (s sdk) CreateChangeSet(ctx context.Context, name string, template []byte)
return "", err
}
- err = s.CF.WaitUntilChangeSetCreateCompleteWithContext(ctx, &cloudformation.DescribeChangeSetInput{
+ // we have to WaitUntilChangeSetCreateComplete even this in fail with error `ResourceNotReady`
+ // so that we can invoke DescribeChangeSet to check status, and then we can know about the actual creation failure cause.
+ s.CF.WaitUntilChangeSetCreateCompleteWithContext(ctx, &cloudformation.DescribeChangeSetInput{ // nolint:errcheck
ChangeSetName: changeset.Id,
})
+
+ desc, err := s.CF.DescribeChangeSetWithContext(ctx, &cloudformation.DescribeChangeSetInput{
+ ChangeSetName: aws.String(update),
+ StackName: aws.String(name),
+ })
+ if aws.StringValue(desc.Status) == "FAILED" {
+ return *changeset.Id, fmt.Errorf(aws.StringValue(desc.StatusReason))
+ }
+
return *changeset.Id, err
}
