@composurecdk/cloudwatch 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/commonjs/alarm-definition-builder.d.ts +8 -0
- package/dist/commonjs/alarm-definition-builder.d.ts.map +1 -1
- package/dist/commonjs/alarm-definition-builder.js +13 -0
- package/dist/commonjs/alarm-definition-builder.js.map +1 -1
- package/dist/commonjs/alarm-definition.d.ts +6 -2
- package/dist/commonjs/alarm-definition.d.ts.map +1 -1
- package/dist/commonjs/create-alarms.d.ts +5 -1
- package/dist/commonjs/create-alarms.d.ts.map +1 -1
- package/dist/commonjs/create-alarms.js +10 -2
- package/dist/commonjs/create-alarms.js.map +1 -1
- package/dist/esm/alarm-definition-builder.d.ts +8 -0
- package/dist/esm/alarm-definition-builder.d.ts.map +1 -1
- package/dist/esm/alarm-definition-builder.js +13 -0
- package/dist/esm/alarm-definition-builder.js.map +1 -1
- package/dist/esm/alarm-definition.d.ts +6 -2
- package/dist/esm/alarm-definition.d.ts.map +1 -1
- package/dist/esm/create-alarms.d.ts +5 -1
- package/dist/esm/create-alarms.d.ts.map +1 -1
- package/dist/esm/create-alarms.js +10 -2
- package/dist/esm/create-alarms.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -93,6 +93,18 @@ const alarms = createAlarms(scope, "MyFunction", definitions);
|
|
|
93
93
|
|
|
94
94
|
Construct IDs follow the pattern `${id}${Capitalize(key)}Alarm` (e.g., `MyFunctionErrorsAlarm`).
|
|
95
95
|
|
|
96
|
+
### Construct IDs
|
|
97
|
+
|
|
98
|
+
Set `constructId` on a definition to override that pattern — the value is used verbatim:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
const alarms = createAlarms(scope, "MyFunction", [
|
|
102
|
+
{ key: "errors", constructId: "LegacyErrorsAlarm" /* …rest of the definition */ },
|
|
103
|
+
]);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This exists for grandfathering: a CloudFormation logical ID is derived from the construct ID, and changing it replaces (drops + recreates) the alarm on deploy. Pinning `constructId` to the existing ID lets you adopt `createAlarms` for alarms already in a deployed stack without churn. Unlike the alarm _name_ — which can be rewritten at synth time by [alarmNamePolicy](#alarmnamepolicy) — the construct ID is fixed at construction, so it can only be set here, per definition. `AlarmDefinitionBuilder` exposes the same control via `.constructId(id)`.
|
|
107
|
+
|
|
96
108
|
### Alarm names
|
|
97
109
|
|
|
98
110
|
Each alarm receives an explicit, hierarchical name of the form `${stackName}/${kebab(id)}/${kebab(key)}` (e.g. `payments-prod/checkout-fn/errors`) instead of CloudFormation's hash-suffixed default. Slashes render hierarchy in the console; segments are kebab-cased so names scan cleanly in dashboards, oncall pages, and email subjects, where word separation matters more than in code.
|
|
@@ -20,6 +20,14 @@ export declare class AlarmDefinitionBuilder<TConstruct> {
|
|
|
20
20
|
* the {@link alarmName} helper to construct branded values.
|
|
21
21
|
*/
|
|
22
22
|
alarmName(name: AlarmName): this;
|
|
23
|
+
/**
|
|
24
|
+
* Sets an explicit construct id for the created alarm, used verbatim. When
|
|
25
|
+
* unset, {@link createAlarms} derives `` `${id}${Capitalize(key)}Alarm` ``.
|
|
26
|
+
*
|
|
27
|
+
* Set this to preserve an existing CloudFormation logical ID when
|
|
28
|
+
* grandfathering alarms into a stack.
|
|
29
|
+
*/
|
|
30
|
+
constructId(id: string): this;
|
|
23
31
|
threshold(value: number): this;
|
|
24
32
|
greaterThan(): this;
|
|
25
33
|
greaterThanOrEqual(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;
|
|
1
|
+
{"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;gBAYhC,GAAG,EAAE,MAAM;IAIvB,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI;IAK7D;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAKhC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,IAAI;IAKvB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAKnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,CAAC,GAAG,IAAI;IAK3E;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe;CAyBhD"}
|
|
@@ -14,6 +14,7 @@ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
|
14
14
|
class AlarmDefinitionBuilder {
|
|
15
15
|
#key;
|
|
16
16
|
#alarmName;
|
|
17
|
+
#constructId;
|
|
17
18
|
#metricFactory;
|
|
18
19
|
#threshold = 0;
|
|
19
20
|
#comparisonOperator = aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD;
|
|
@@ -37,6 +38,17 @@ class AlarmDefinitionBuilder {
|
|
|
37
38
|
this.#alarmName = name;
|
|
38
39
|
return this;
|
|
39
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Sets an explicit construct id for the created alarm, used verbatim. When
|
|
43
|
+
* unset, {@link createAlarms} derives `` `${id}${Capitalize(key)}Alarm` ``.
|
|
44
|
+
*
|
|
45
|
+
* Set this to preserve an existing CloudFormation logical ID when
|
|
46
|
+
* grandfathering alarms into a stack.
|
|
47
|
+
*/
|
|
48
|
+
constructId(id) {
|
|
49
|
+
this.#constructId = id;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
40
52
|
threshold(value) {
|
|
41
53
|
this.#threshold = value;
|
|
42
54
|
return this;
|
|
@@ -86,6 +98,7 @@ class AlarmDefinitionBuilder {
|
|
|
86
98
|
const definition = {
|
|
87
99
|
key: this.#key,
|
|
88
100
|
alarmName: this.#alarmName,
|
|
101
|
+
constructId: this.#constructId,
|
|
89
102
|
metric: this.#metricFactory(construct),
|
|
90
103
|
threshold: this.#threshold,
|
|
91
104
|
comparisonOperator: this.#comparisonOperator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,16 @@ export type AlarmMetric = Metric | MathExpression;
|
|
|
14
14
|
* A fully-resolved alarm descriptor. All fields are required —
|
|
15
15
|
* this is the canonical form consumed by {@link createAlarms}.
|
|
16
16
|
*
|
|
17
|
-
* `alarmName`
|
|
18
|
-
* derives a default via
|
|
17
|
+
* `alarmName` and `constructId` are the optional fields:
|
|
18
|
+
* - `alarmName`: when omitted, {@link createAlarms} derives a default via
|
|
19
|
+
* `defaultAlarmName(scope, id, key)`.
|
|
20
|
+
* - `constructId`: when omitted, {@link createAlarms} derives the construct id
|
|
21
|
+
* as `` `${id}${Capitalize(key)}Alarm` ``.
|
|
19
22
|
*/
|
|
20
23
|
export interface AlarmDefinition {
|
|
21
24
|
key: string;
|
|
22
25
|
alarmName?: AlarmName;
|
|
26
|
+
constructId?: string;
|
|
23
27
|
metric: AlarmMetric;
|
|
24
28
|
threshold: number;
|
|
25
29
|
comparisonOperator: ComparisonOperator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -9,11 +9,15 @@ import type { AlarmDefinition } from "./alarm-definition.js";
|
|
|
9
9
|
* otherwise it is derived from the scope, `id`, and `def.key` via
|
|
10
10
|
* {@link defaultAlarmName}.
|
|
11
11
|
*
|
|
12
|
+
* Each alarm's construct id is `${id}${Capitalize(key)}Alarm`, unless the
|
|
13
|
+
* definition supplies an explicit `constructId`, which is used verbatim (e.g.
|
|
14
|
+
* to preserve an existing logical ID when grandfathering).
|
|
15
|
+
*
|
|
12
16
|
* @param scope - CDK construct scope.
|
|
13
17
|
* @param id - Base identifier; each alarm's construct id is `${id}${Capitalize(key)}Alarm`.
|
|
14
18
|
* @param definitions - Fully-resolved alarm definitions.
|
|
15
19
|
* @returns A record mapping each definition's key to its created Alarm.
|
|
16
|
-
* @throws If duplicate keys are found
|
|
20
|
+
* @throws If duplicate keys are found, or a supplied `constructId` is empty.
|
|
17
21
|
*/
|
|
18
22
|
export declare function createAlarms(scope: IConstruct, id: string, definitions: AlarmDefinition[]): Record<string, Alarm>;
|
|
19
23
|
//# sourceMappingURL=create-alarms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D
|
|
1
|
+
{"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CA0BvB"}
|
|
@@ -13,11 +13,15 @@ function capitalize(s) {
|
|
|
13
13
|
* otherwise it is derived from the scope, `id`, and `def.key` via
|
|
14
14
|
* {@link defaultAlarmName}.
|
|
15
15
|
*
|
|
16
|
+
* Each alarm's construct id is `${id}${Capitalize(key)}Alarm`, unless the
|
|
17
|
+
* definition supplies an explicit `constructId`, which is used verbatim (e.g.
|
|
18
|
+
* to preserve an existing logical ID when grandfathering).
|
|
19
|
+
*
|
|
16
20
|
* @param scope - CDK construct scope.
|
|
17
21
|
* @param id - Base identifier; each alarm's construct id is `${id}${Capitalize(key)}Alarm`.
|
|
18
22
|
* @param definitions - Fully-resolved alarm definitions.
|
|
19
23
|
* @returns A record mapping each definition's key to its created Alarm.
|
|
20
|
-
* @throws If duplicate keys are found
|
|
24
|
+
* @throws If duplicate keys are found, or a supplied `constructId` is empty.
|
|
21
25
|
*/
|
|
22
26
|
function createAlarms(scope, id, definitions) {
|
|
23
27
|
const alarms = {};
|
|
@@ -26,7 +30,11 @@ function createAlarms(scope, id, definitions) {
|
|
|
26
30
|
throw new Error(`Duplicate alarm key "${def.key}". Custom alarms cannot use the same key as a recommended alarm. ` +
|
|
27
31
|
`Disable the recommended alarm first, or use a different key.`);
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
if (def.constructId === "") {
|
|
34
|
+
throw new Error(`Alarm "${def.key}": constructId, when set, must be non-empty.`);
|
|
35
|
+
}
|
|
36
|
+
const constructId = def.constructId ?? `${id}${capitalize(def.key)}Alarm`;
|
|
37
|
+
alarms[def.key] = def.metric.createAlarm(scope, constructId, {
|
|
30
38
|
alarmName: def.alarmName ?? (0, default_alarm_name_js_1.defaultAlarmName)(scope, id, def.key),
|
|
31
39
|
threshold: def.threshold,
|
|
32
40
|
evaluationPeriods: def.evaluationPeriods,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":";;AA2BA,oCA8BC;AAtDD,mEAA2D;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,YAAY,CAC1B,KAAiB,EACjB,EAAU,EACV,WAA8B;IAE9B,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,GAAG,mEAAmE;gBAChG,8DAA8D,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,8CAA8C,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;YAC3D,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAA,wCAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;YAChE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,gBAAgB,EAAE,GAAG,CAAC,WAAW;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -20,6 +20,14 @@ export declare class AlarmDefinitionBuilder<TConstruct> {
|
|
|
20
20
|
* the {@link alarmName} helper to construct branded values.
|
|
21
21
|
*/
|
|
22
22
|
alarmName(name: AlarmName): this;
|
|
23
|
+
/**
|
|
24
|
+
* Sets an explicit construct id for the created alarm, used verbatim. When
|
|
25
|
+
* unset, {@link createAlarms} derives `` `${id}${Capitalize(key)}Alarm` ``.
|
|
26
|
+
*
|
|
27
|
+
* Set this to preserve an existing CloudFormation logical ID when
|
|
28
|
+
* grandfathering alarms into a stack.
|
|
29
|
+
*/
|
|
30
|
+
constructId(id: string): this;
|
|
23
31
|
threshold(value: number): this;
|
|
24
32
|
greaterThan(): this;
|
|
25
33
|
greaterThanOrEqual(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;
|
|
1
|
+
{"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;gBAYhC,GAAG,EAAE,MAAM;IAIvB,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI;IAK7D;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAKhC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,IAAI;IAKvB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAKnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,CAAC,GAAG,IAAI;IAK3E;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe;CAyBhD"}
|
|
@@ -11,6 +11,7 @@ import { ComparisonOperator, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch
|
|
|
11
11
|
export class AlarmDefinitionBuilder {
|
|
12
12
|
#key;
|
|
13
13
|
#alarmName;
|
|
14
|
+
#constructId;
|
|
14
15
|
#metricFactory;
|
|
15
16
|
#threshold = 0;
|
|
16
17
|
#comparisonOperator = ComparisonOperator.GREATER_THAN_THRESHOLD;
|
|
@@ -34,6 +35,17 @@ export class AlarmDefinitionBuilder {
|
|
|
34
35
|
this.#alarmName = name;
|
|
35
36
|
return this;
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets an explicit construct id for the created alarm, used verbatim. When
|
|
40
|
+
* unset, {@link createAlarms} derives `` `${id}${Capitalize(key)}Alarm` ``.
|
|
41
|
+
*
|
|
42
|
+
* Set this to preserve an existing CloudFormation logical ID when
|
|
43
|
+
* grandfathering alarms into a stack.
|
|
44
|
+
*/
|
|
45
|
+
constructId(id) {
|
|
46
|
+
this.#constructId = id;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
37
49
|
threshold(value) {
|
|
38
50
|
this.#threshold = value;
|
|
39
51
|
return this;
|
|
@@ -83,6 +95,7 @@ export class AlarmDefinitionBuilder {
|
|
|
83
95
|
const definition = {
|
|
84
96
|
key: this.#key,
|
|
85
97
|
alarmName: this.#alarmName,
|
|
98
|
+
constructId: this.#constructId,
|
|
86
99
|
metric: this.#metricFactory(construct),
|
|
87
100
|
threshold: this.#threshold,
|
|
88
101
|
comparisonOperator: this.#comparisonOperator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,16 @@ export type AlarmMetric = Metric | MathExpression;
|
|
|
14
14
|
* A fully-resolved alarm descriptor. All fields are required —
|
|
15
15
|
* this is the canonical form consumed by {@link createAlarms}.
|
|
16
16
|
*
|
|
17
|
-
* `alarmName`
|
|
18
|
-
* derives a default via
|
|
17
|
+
* `alarmName` and `constructId` are the optional fields:
|
|
18
|
+
* - `alarmName`: when omitted, {@link createAlarms} derives a default via
|
|
19
|
+
* `defaultAlarmName(scope, id, key)`.
|
|
20
|
+
* - `constructId`: when omitted, {@link createAlarms} derives the construct id
|
|
21
|
+
* as `` `${id}${Capitalize(key)}Alarm` ``.
|
|
19
22
|
*/
|
|
20
23
|
export interface AlarmDefinition {
|
|
21
24
|
key: string;
|
|
22
25
|
alarmName?: AlarmName;
|
|
26
|
+
constructId?: string;
|
|
23
27
|
metric: AlarmMetric;
|
|
24
28
|
threshold: number;
|
|
25
29
|
comparisonOperator: ComparisonOperator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -9,11 +9,15 @@ import type { AlarmDefinition } from "./alarm-definition.js";
|
|
|
9
9
|
* otherwise it is derived from the scope, `id`, and `def.key` via
|
|
10
10
|
* {@link defaultAlarmName}.
|
|
11
11
|
*
|
|
12
|
+
* Each alarm's construct id is `${id}${Capitalize(key)}Alarm`, unless the
|
|
13
|
+
* definition supplies an explicit `constructId`, which is used verbatim (e.g.
|
|
14
|
+
* to preserve an existing logical ID when grandfathering).
|
|
15
|
+
*
|
|
12
16
|
* @param scope - CDK construct scope.
|
|
13
17
|
* @param id - Base identifier; each alarm's construct id is `${id}${Capitalize(key)}Alarm`.
|
|
14
18
|
* @param definitions - Fully-resolved alarm definitions.
|
|
15
19
|
* @returns A record mapping each definition's key to its created Alarm.
|
|
16
|
-
* @throws If duplicate keys are found
|
|
20
|
+
* @throws If duplicate keys are found, or a supplied `constructId` is empty.
|
|
17
21
|
*/
|
|
18
22
|
export declare function createAlarms(scope: IConstruct, id: string, definitions: AlarmDefinition[]): Record<string, Alarm>;
|
|
19
23
|
//# sourceMappingURL=create-alarms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D
|
|
1
|
+
{"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CA0BvB"}
|
|
@@ -10,11 +10,15 @@ function capitalize(s) {
|
|
|
10
10
|
* otherwise it is derived from the scope, `id`, and `def.key` via
|
|
11
11
|
* {@link defaultAlarmName}.
|
|
12
12
|
*
|
|
13
|
+
* Each alarm's construct id is `${id}${Capitalize(key)}Alarm`, unless the
|
|
14
|
+
* definition supplies an explicit `constructId`, which is used verbatim (e.g.
|
|
15
|
+
* to preserve an existing logical ID when grandfathering).
|
|
16
|
+
*
|
|
13
17
|
* @param scope - CDK construct scope.
|
|
14
18
|
* @param id - Base identifier; each alarm's construct id is `${id}${Capitalize(key)}Alarm`.
|
|
15
19
|
* @param definitions - Fully-resolved alarm definitions.
|
|
16
20
|
* @returns A record mapping each definition's key to its created Alarm.
|
|
17
|
-
* @throws If duplicate keys are found
|
|
21
|
+
* @throws If duplicate keys are found, or a supplied `constructId` is empty.
|
|
18
22
|
*/
|
|
19
23
|
export function createAlarms(scope, id, definitions) {
|
|
20
24
|
const alarms = {};
|
|
@@ -23,7 +27,11 @@ export function createAlarms(scope, id, definitions) {
|
|
|
23
27
|
throw new Error(`Duplicate alarm key "${def.key}". Custom alarms cannot use the same key as a recommended alarm. ` +
|
|
24
28
|
`Disable the recommended alarm first, or use a different key.`);
|
|
25
29
|
}
|
|
26
|
-
|
|
30
|
+
if (def.constructId === "") {
|
|
31
|
+
throw new Error(`Alarm "${def.key}": constructId, when set, must be non-empty.`);
|
|
32
|
+
}
|
|
33
|
+
const constructId = def.constructId ?? `${id}${capitalize(def.key)}Alarm`;
|
|
34
|
+
alarms[def.key] = def.metric.createAlarm(scope, constructId, {
|
|
27
35
|
alarmName: def.alarmName ?? defaultAlarmName(scope, id, def.key),
|
|
28
36
|
threshold: def.threshold,
|
|
29
37
|
evaluationPeriods: def.evaluationPeriods,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,EAAU,EACV,WAA8B;IAE9B,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,GAAG,mEAAmE;gBAChG,8DAA8D,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,8CAA8C,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;YAC3D,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;YAChE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,gBAAgB,EAAE,GAAG,CAAC,WAAW;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@composurecdk/cloudwatch",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Composable CloudWatch alarm primitives for composureCDK resource packages",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"aws-cdk-lib": "^2.
|
|
40
|
+
"aws-cdk-lib": "^2.1.0",
|
|
41
41
|
"constructs": "^10.0.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|