Skip to content

Commit 6cac813

Browse files
committed
fix: using logical id instead alarmName
In DependsOn use the Physical ID of the resource instead the concatenate alarm name
1 parent 949ac3d commit 6cac813

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

src/index.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -593,20 +593,26 @@ class AlertsPlugin {
593593
resourcesKeys.length === 0 ||
594594
resourcesKeys.indexOf(resource) !== -1)
595595
)
596-
.map((key) => resources[key]);
596+
.map((key) => ({
597+
cfLogicalId: key,
598+
cfResource: resources[key],
599+
}));
597600
}
598601

599-
_resolveAlarmsNames(definition) {
602+
_resolveAlarmsPhysicalLogicalIds(definition) {
600603
return this._getFilteredResourcesAsArray(
601604
definition.alarmsToInclude,
602605
'AWS::CloudWatch::Alarm',
603606
true
604-
).map((resource) => resource.Properties.AlarmName);
607+
).map((filteredResource) => ({
608+
cfLogicalId: filteredResource.cfLogicalId,
609+
cfPhysicalId: filteredResource.cfResource.Properties.AlarmName,
610+
}));
605611
}
606612

607-
_resolveAlarmRules(alarmsNames) {
608-
const alarmRule = alarmsNames
609-
.map((alarmName) => `ALARM(${alarmName})`)
613+
_resolveAlarmRules(physicalLogicalIds) {
614+
const alarmRule = physicalLogicalIds
615+
.map((physicalLogicalId) => `ALARM(${physicalLogicalId.cfPhysicalId})`)
610616
.join(' OR ');
611617

612618
return alarmRule;
@@ -641,9 +647,10 @@ class AlertsPlugin {
641647
Object.keys(definitions).forEach((definitionName) => {
642648
const definition = definitions[definitionName];
643649
if (definition.type === 'composite' && definition.enabled !== false) {
644-
const alarmsNames = this._resolveAlarmsNames(definition);
650+
const physicalLogicalIds =
651+
this._resolveAlarmsPhysicalLogicalIds(definition);
645652
// only create the composite alarm if there is at least one alarm to include
646-
if (alarmsNames?.length > 0) {
653+
if (physicalLogicalIds?.length > 0) {
647654
const cf = {};
648655
const { cfResource, cfName } = this._getCfResourceAndName(
649656
'Composite',
@@ -656,10 +663,10 @@ class AlertsPlugin {
656663
AlarmName: cfName,
657664
AlarmDescription: definition.description,
658665
ActionsEnabled: definition.actionsEnabled,
659-
AlarmRule: this._resolveAlarmRules(alarmsNames),
666+
AlarmRule: this._resolveAlarmRules(physicalLogicalIds),
660667
AlarmActions: alarmActions,
661668
},
662-
DependsOn: alarmsNames,
669+
DependsOn: physicalLogicalIds.map((alarm) => alarm.cfLogicalId),
663670
};
664671

665672
cf[cfResource] = compositeAlarm;

src/index.test.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,7 +1703,7 @@ describe('#index', () => {
17031703
AlarmRule: 'ALARM(fooservice-dev-foo-successRateDrop)',
17041704
AlarmActions: [{ Ref: 'AwsAlertsAlarm' }],
17051705
}),
1706-
DependsOn: ['fooservice-dev-foo-successRateDrop'],
1706+
DependsOn: ['FooSuccessRateDropAlarm'],
17071707
},
17081708
});
17091709
});
@@ -1747,10 +1747,7 @@ describe('#index', () => {
17471747
'ALARM(fooservice-dev-foo-successRateDrop) OR ALARM(fooservice-dev-foo1-successRateDrop)',
17481748
AlarmActions: [{ Ref: 'AwsAlertsAlarm' }],
17491749
}),
1750-
DependsOn: [
1751-
'fooservice-dev-foo-successRateDrop',
1752-
'fooservice-dev-foo1-successRateDrop',
1753-
],
1750+
DependsOn: ['FooSuccessRateDropAlarm', 'Foo1SuccessRateDropAlarm'],
17541751
},
17551752
});
17561753
});
@@ -1859,10 +1856,7 @@ describe('#index', () => {
18591856
'ALARM(fooservice-dev-foo-successRateDrop) OR ALARM(fooservice-dev-foo1-successRateDrop)',
18601857
AlarmActions: [{ Ref: 'AwsAlertsAlarm' }],
18611858
}),
1862-
DependsOn: [
1863-
'fooservice-dev-foo-successRateDrop',
1864-
'fooservice-dev-foo1-successRateDrop',
1865-
],
1859+
DependsOn: ['FooSuccessRateDropAlarm', 'Foo1SuccessRateDropAlarm'],
18661860
},
18671861
});
18681862
});

0 commit comments

Comments
 (0)