|
|
@@ -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
|
|
|
}
|
|
|
|