@@ -50305,25 +50305,27 @@ function cleanupChangeSet(cfn, stack, params, failOnEmptyChangeSet, noDeleteFail
5030550305 }
5030650306 // Get detailed failure information for change set creation failures
5030750307 let failureReason = `Failed to create Change Set: ${changeSetStatus.StatusReason}`;
50308- const eventChangeSetId = changeSetId || changeSetStatus.ChangeSetId;
50309- if (eventChangeSetId) {
50310- try {
50311- core.info(`Attempting to get change set failure details for: ${eventChangeSetId}`);
50312- const events = yield cfn.send(new client_cloudformation_1.DescribeEventsCommand({
50313- ChangeSetName: eventChangeSetId,
50314- Filters: { FailedEvents: true }
50315- }));
50316- core.info(`Retrieved ${((_a = events.OperationEvents) === null || _a === void 0 ? void 0 : _a.length) || 0} failed events for change set`);
50317- const failedEvents = (_b = events.OperationEvents) === null || _b === void 0 ? void 0 : _b.filter(event => event.ResourceStatusReason);
50318- if (failedEvents && failedEvents.length > 0) {
50319- const reasons = failedEvents
50320- .map(event => `${event.LogicalResourceId}: ${event.ResourceStatusReason}`)
50321- .join('; ');
50322- failureReason += `. Failed resources: ${reasons}`;
50308+ // Only call DescribeEvents for validation failures (ExecutionStatus: UNAVAILABLE, Status: FAILED)
50309+ if (changeSetStatus.ExecutionStatus === 'UNAVAILABLE' && changeSetStatus.Status === 'FAILED') {
50310+ const eventChangeSetId = changeSetId || changeSetStatus.ChangeSetId;
50311+ if (eventChangeSetId) {
50312+ try {
50313+ core.info(`Attempting to get validation failure details for: ${eventChangeSetId}`);
50314+ const events = yield cfn.send(new client_cloudformation_1.DescribeEventsCommand({
50315+ ChangeSetName: eventChangeSetId
50316+ }));
50317+ core.info(`Retrieved ${((_a = events.OperationEvents) === null || _a === void 0 ? void 0 : _a.length) || 0} events for change set`);
50318+ const validationEvents = (_b = events.OperationEvents) === null || _b === void 0 ? void 0 : _b.filter(event => event.EventType === 'VALIDATION_ERROR');
50319+ if (validationEvents && validationEvents.length > 0) {
50320+ const reasons = validationEvents
50321+ .map(event => `${event.ValidationPath}: ${event.ValidationStatusReason}`)
50322+ .join('; ');
50323+ failureReason += `. Validation errors: ${reasons}`;
50324+ }
50325+ }
50326+ catch (error) {
50327+ core.info(`Failed to get validation event details: ${error}`);
5032350328 }
50324- }
50325- catch (error) {
50326- core.info(`Failed to get change set event details: ${error}`);
5032750329 }
5032850330 }
5032950331 throw new Error(failureReason);
0 commit comments