@composurecdk/route53 0.6.0 → 0.8.0
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 +54 -4
- package/dist/commonjs/a-record-builder.d.ts.map +1 -0
- package/dist/commonjs/a-record-builder.js +38 -0
- package/dist/commonjs/a-record-builder.js.map +1 -0
- package/dist/commonjs/aaaa-record-builder.d.ts.map +1 -0
- package/dist/commonjs/aaaa-record-builder.js +39 -0
- package/dist/commonjs/aaaa-record-builder.js.map +1 -0
- package/dist/commonjs/alias-targets.d.ts.map +1 -0
- package/dist/commonjs/alias-targets.js +50 -0
- package/dist/commonjs/alias-targets.js.map +1 -0
- package/dist/commonjs/caa-record-builder.d.ts.map +1 -0
- package/dist/commonjs/caa-record-builder.js +37 -0
- package/dist/commonjs/caa-record-builder.js.map +1 -0
- package/dist/commonjs/cname-record-builder.d.ts.map +1 -0
- package/dist/commonjs/cname-record-builder.js +43 -0
- package/dist/commonjs/cname-record-builder.js.map +1 -0
- package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +30 -4
- package/dist/commonjs/defaults.d.ts.map +1 -0
- package/dist/commonjs/defaults.js +159 -0
- package/dist/commonjs/defaults.js.map +1 -0
- package/dist/commonjs/ds-record-builder.d.ts.map +1 -0
- package/dist/commonjs/ds-record-builder.js +37 -0
- package/dist/commonjs/ds-record-builder.js.map +1 -0
- package/dist/{health-check-alarm-builder.d.ts → commonjs/health-check-alarm-builder.d.ts} +5 -2
- package/dist/commonjs/health-check-alarm-builder.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-builder.js +136 -0
- package/dist/commonjs/health-check-alarm-builder.js.map +1 -0
- package/dist/commonjs/health-check-alarm-config.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-config.js +3 -0
- package/dist/commonjs/health-check-alarm-config.js.map +1 -0
- package/dist/commonjs/health-check-alarm-defaults.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-defaults.js +29 -0
- package/dist/commonjs/health-check-alarm-defaults.js.map +1 -0
- package/dist/commonjs/health-check-alarms.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarms.js +45 -0
- package/dist/commonjs/health-check-alarms.js.map +1 -0
- package/dist/{health-check-builder.d.ts → commonjs/health-check-builder.d.ts} +5 -2
- package/dist/commonjs/health-check-builder.d.ts.map +1 -0
- package/dist/commonjs/health-check-builder.js +56 -0
- package/dist/commonjs/health-check-builder.js.map +1 -0
- package/dist/{hosted-zone-builder.d.ts → commonjs/hosted-zone-builder.d.ts} +29 -9
- package/dist/commonjs/hosted-zone-builder.d.ts.map +1 -0
- package/dist/commonjs/hosted-zone-builder.js +60 -0
- package/dist/commonjs/hosted-zone-builder.js.map +1 -0
- package/dist/commonjs/https-record-builder.d.ts.map +1 -0
- package/dist/commonjs/https-record-builder.js +45 -0
- package/dist/commonjs/https-record-builder.js.map +1 -0
- package/dist/{index.d.ts → commonjs/index.d.ts} +2 -1
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +54 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/mx-record-builder.d.ts.map +1 -0
- package/dist/commonjs/mx-record-builder.js +37 -0
- package/dist/commonjs/mx-record-builder.js.map +1 -0
- package/dist/commonjs/ns-record-builder.d.ts.map +1 -0
- package/dist/commonjs/ns-record-builder.js +42 -0
- package/dist/commonjs/ns-record-builder.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/query-logging.d.ts +60 -0
- package/dist/commonjs/query-logging.d.ts.map +1 -0
- package/dist/commonjs/query-logging.js +136 -0
- package/dist/commonjs/query-logging.js.map +1 -0
- package/dist/commonjs/srv-record-builder.d.ts.map +1 -0
- package/dist/commonjs/srv-record-builder.js +37 -0
- package/dist/commonjs/srv-record-builder.js.map +1 -0
- package/dist/commonjs/svcb-record-builder.d.ts.map +1 -0
- package/dist/commonjs/svcb-record-builder.js +38 -0
- package/dist/commonjs/svcb-record-builder.js.map +1 -0
- package/dist/commonjs/txt-record-builder.d.ts.map +1 -0
- package/dist/commonjs/txt-record-builder.js +37 -0
- package/dist/commonjs/txt-record-builder.js.map +1 -0
- package/dist/commonjs/zone/index.d.ts.map +1 -0
- package/dist/commonjs/zone/index.js +23 -0
- package/dist/commonjs/zone/index.js.map +1 -0
- package/dist/commonjs/zone/zone-dsl.d.ts.map +1 -0
- package/dist/commonjs/zone/zone-dsl.js +247 -0
- package/dist/commonjs/zone/zone-dsl.js.map +1 -0
- package/dist/commonjs/zone/zone-records.d.ts.map +1 -0
- package/dist/commonjs/zone/zone-records.js +322 -0
- package/dist/commonjs/zone/zone-records.js.map +1 -0
- package/dist/esm/a-record-builder.d.ts +56 -0
- package/dist/esm/a-record-builder.d.ts.map +1 -0
- package/dist/{a-record-builder.js → esm/a-record-builder.js} +1 -0
- package/dist/esm/a-record-builder.js.map +1 -0
- package/dist/esm/aaaa-record-builder.d.ts +44 -0
- package/dist/esm/aaaa-record-builder.d.ts.map +1 -0
- package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +1 -0
- package/dist/esm/aaaa-record-builder.js.map +1 -0
- package/dist/esm/alias-targets.d.ts +34 -0
- package/dist/esm/alias-targets.d.ts.map +1 -0
- package/dist/esm/alias-targets.js.map +1 -0
- package/dist/esm/caa-record-builder.d.ts +44 -0
- package/dist/esm/caa-record-builder.d.ts.map +1 -0
- package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +1 -0
- package/dist/esm/caa-record-builder.js.map +1 -0
- package/dist/esm/cname-record-builder.d.ts +42 -0
- package/dist/esm/cname-record-builder.d.ts.map +1 -0
- package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +1 -0
- package/dist/esm/cname-record-builder.js.map +1 -0
- package/dist/esm/defaults.d.ts +119 -0
- package/dist/esm/defaults.d.ts.map +1 -0
- package/dist/{defaults.js → esm/defaults.js} +37 -4
- package/dist/esm/defaults.js.map +1 -0
- package/dist/esm/ds-record-builder.d.ts +42 -0
- package/dist/esm/ds-record-builder.d.ts.map +1 -0
- package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +1 -0
- package/dist/esm/ds-record-builder.js.map +1 -0
- package/dist/esm/health-check-alarm-builder.d.ts +133 -0
- package/dist/esm/health-check-alarm-builder.d.ts.map +1 -0
- package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.js} +8 -2
- package/dist/esm/health-check-alarm-builder.js.map +1 -0
- package/dist/esm/health-check-alarm-config.d.ts +39 -0
- package/dist/esm/health-check-alarm-config.d.ts.map +1 -0
- package/dist/esm/health-check-alarm-config.js.map +1 -0
- package/dist/esm/health-check-alarm-defaults.d.ts +13 -0
- package/dist/esm/health-check-alarm-defaults.d.ts.map +1 -0
- package/dist/esm/health-check-alarm-defaults.js.map +1 -0
- package/dist/esm/health-check-alarms.d.ts +15 -0
- package/dist/esm/health-check-alarms.d.ts.map +1 -0
- package/dist/esm/health-check-alarms.js.map +1 -0
- package/dist/esm/health-check-builder.d.ts +103 -0
- package/dist/esm/health-check-builder.d.ts.map +1 -0
- package/dist/{health-check-builder.js → esm/health-check-builder.js} +7 -2
- package/dist/esm/health-check-builder.js.map +1 -0
- package/dist/esm/hosted-zone-builder.d.ts +95 -0
- package/dist/esm/hosted-zone-builder.d.ts.map +1 -0
- package/dist/{hosted-zone-builder.js → esm/hosted-zone-builder.js} +13 -5
- package/dist/esm/hosted-zone-builder.js.map +1 -0
- package/dist/esm/https-record-builder.d.ts +45 -0
- package/dist/esm/https-record-builder.d.ts.map +1 -0
- package/dist/{https-record-builder.js → esm/https-record-builder.js} +1 -0
- package/dist/esm/https-record-builder.js.map +1 -0
- package/dist/esm/index.d.ts +20 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/{index.js → esm/index.js} +1 -1
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mx-record-builder.d.ts +40 -0
- package/dist/esm/mx-record-builder.d.ts.map +1 -0
- package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +1 -0
- package/dist/esm/mx-record-builder.js.map +1 -0
- package/dist/esm/ns-record-builder.d.ts +40 -0
- package/dist/esm/ns-record-builder.d.ts.map +1 -0
- package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +1 -0
- package/dist/esm/ns-record-builder.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/query-logging.d.ts +60 -0
- package/dist/esm/query-logging.d.ts.map +1 -0
- package/dist/esm/query-logging.js +133 -0
- package/dist/esm/query-logging.js.map +1 -0
- package/dist/esm/srv-record-builder.d.ts +40 -0
- package/dist/esm/srv-record-builder.d.ts.map +1 -0
- package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +1 -0
- package/dist/esm/srv-record-builder.js.map +1 -0
- package/dist/esm/svcb-record-builder.d.ts +41 -0
- package/dist/esm/svcb-record-builder.d.ts.map +1 -0
- package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +1 -0
- package/dist/esm/svcb-record-builder.js.map +1 -0
- package/dist/esm/txt-record-builder.d.ts +38 -0
- package/dist/esm/txt-record-builder.d.ts.map +1 -0
- package/dist/{txt-record-builder.js → esm/txt-record-builder.js} +1 -0
- package/dist/esm/txt-record-builder.js.map +1 -0
- package/dist/esm/zone/index.d.ts +3 -0
- package/dist/esm/zone/index.d.ts.map +1 -0
- package/dist/esm/zone/index.js.map +1 -0
- package/dist/esm/zone/zone-dsl.d.ts +296 -0
- package/dist/esm/zone/zone-dsl.d.ts.map +1 -0
- package/dist/esm/zone/zone-dsl.js.map +1 -0
- package/dist/esm/zone/zone-records.d.ts +67 -0
- package/dist/esm/zone/zone-records.d.ts.map +1 -0
- package/dist/esm/zone/zone-records.js.map +1 -0
- package/package.json +47 -20
- package/dist/a-record-builder.d.ts.map +0 -1
- package/dist/a-record-builder.js.map +0 -1
- package/dist/aaaa-record-builder.d.ts.map +0 -1
- package/dist/aaaa-record-builder.js.map +0 -1
- package/dist/alias-targets.d.ts.map +0 -1
- package/dist/alias-targets.js.map +0 -1
- package/dist/caa-record-builder.d.ts.map +0 -1
- package/dist/caa-record-builder.js.map +0 -1
- package/dist/cname-record-builder.d.ts.map +0 -1
- package/dist/cname-record-builder.js.map +0 -1
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js.map +0 -1
- package/dist/ds-record-builder.d.ts.map +0 -1
- package/dist/ds-record-builder.js.map +0 -1
- package/dist/health-check-alarm-builder.d.ts.map +0 -1
- package/dist/health-check-alarm-builder.js.map +0 -1
- package/dist/health-check-alarm-config.d.ts.map +0 -1
- package/dist/health-check-alarm-config.js.map +0 -1
- package/dist/health-check-alarm-defaults.d.ts.map +0 -1
- package/dist/health-check-alarm-defaults.js.map +0 -1
- package/dist/health-check-alarms.d.ts.map +0 -1
- package/dist/health-check-alarms.js.map +0 -1
- package/dist/health-check-builder.d.ts.map +0 -1
- package/dist/health-check-builder.js.map +0 -1
- package/dist/hosted-zone-builder.d.ts.map +0 -1
- package/dist/hosted-zone-builder.js.map +0 -1
- package/dist/https-record-builder.d.ts.map +0 -1
- package/dist/https-record-builder.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mx-record-builder.d.ts.map +0 -1
- package/dist/mx-record-builder.js.map +0 -1
- package/dist/ns-record-builder.d.ts.map +0 -1
- package/dist/ns-record-builder.js.map +0 -1
- package/dist/srv-record-builder.d.ts.map +0 -1
- package/dist/srv-record-builder.js.map +0 -1
- package/dist/svcb-record-builder.d.ts.map +0 -1
- package/dist/svcb-record-builder.js.map +0 -1
- package/dist/txt-record-builder.d.ts.map +0 -1
- package/dist/txt-record-builder.js.map +0 -1
- package/dist/zone/index.d.ts.map +0 -1
- package/dist/zone/index.js.map +0 -1
- package/dist/zone/zone-dsl.d.ts.map +0 -1
- package/dist/zone/zone-dsl.js.map +0 -1
- package/dist/zone/zone-records.d.ts.map +0 -1
- package/dist/zone/zone-records.js.map +0 -1
- /package/dist/{a-record-builder.d.ts → commonjs/a-record-builder.d.ts} +0 -0
- /package/dist/{aaaa-record-builder.d.ts → commonjs/aaaa-record-builder.d.ts} +0 -0
- /package/dist/{alias-targets.d.ts → commonjs/alias-targets.d.ts} +0 -0
- /package/dist/{caa-record-builder.d.ts → commonjs/caa-record-builder.d.ts} +0 -0
- /package/dist/{cname-record-builder.d.ts → commonjs/cname-record-builder.d.ts} +0 -0
- /package/dist/{ds-record-builder.d.ts → commonjs/ds-record-builder.d.ts} +0 -0
- /package/dist/{health-check-alarm-config.d.ts → commonjs/health-check-alarm-config.d.ts} +0 -0
- /package/dist/{health-check-alarm-defaults.d.ts → commonjs/health-check-alarm-defaults.d.ts} +0 -0
- /package/dist/{health-check-alarms.d.ts → commonjs/health-check-alarms.d.ts} +0 -0
- /package/dist/{https-record-builder.d.ts → commonjs/https-record-builder.d.ts} +0 -0
- /package/dist/{mx-record-builder.d.ts → commonjs/mx-record-builder.d.ts} +0 -0
- /package/dist/{ns-record-builder.d.ts → commonjs/ns-record-builder.d.ts} +0 -0
- /package/dist/{srv-record-builder.d.ts → commonjs/srv-record-builder.d.ts} +0 -0
- /package/dist/{svcb-record-builder.d.ts → commonjs/svcb-record-builder.d.ts} +0 -0
- /package/dist/{txt-record-builder.d.ts → commonjs/txt-record-builder.d.ts} +0 -0
- /package/dist/{zone → commonjs/zone}/index.d.ts +0 -0
- /package/dist/{zone → commonjs/zone}/zone-dsl.d.ts +0 -0
- /package/dist/{zone → commonjs/zone}/zone-records.d.ts +0 -0
- /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
- /package/dist/{health-check-alarm-config.js → esm/health-check-alarm-config.js} +0 -0
- /package/dist/{health-check-alarm-defaults.js → esm/health-check-alarm-defaults.js} +0 -0
- /package/dist/{health-check-alarms.js → esm/health-check-alarms.js} +0 -0
- /package/dist/{zone → esm/zone}/index.js +0 -0
- /package/dist/{zone → esm/zone}/zone-dsl.js +0 -0
- /package/dist/{zone → esm/zone}/zone-records.js +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Annotations, Stack, Token } from "aws-cdk-lib";
|
|
2
|
-
import {
|
|
2
|
+
import { COPY_STATE, resolve } from "@composurecdk/core";
|
|
3
|
+
import { taggedBuilder } from "@composurecdk/cloudformation";
|
|
3
4
|
import { AlarmDefinitionBuilder, createAlarms } from "@composurecdk/cloudwatch";
|
|
4
5
|
import { resolveHealthCheckAlarmDefinitions } from "./health-check-alarms.js";
|
|
5
6
|
/**
|
|
@@ -72,6 +73,11 @@ class HealthCheckAlarmBuilder {
|
|
|
72
73
|
this.#customAlarms.push(configure(new AlarmDefinitionBuilder(key)));
|
|
73
74
|
return this;
|
|
74
75
|
}
|
|
76
|
+
/** @internal — see ADR-0005. */
|
|
77
|
+
[COPY_STATE](target) {
|
|
78
|
+
target.#healthCheck = this.#healthCheck;
|
|
79
|
+
target.#customAlarms.push(...this.#customAlarms);
|
|
80
|
+
}
|
|
75
81
|
build(scope, id, context) {
|
|
76
82
|
if (!this.#healthCheck) {
|
|
77
83
|
throw new Error(`HealthCheckAlarmBuilder "${id}" requires a health check. ` +
|
|
@@ -121,6 +127,6 @@ class HealthCheckAlarmBuilder {
|
|
|
121
127
|
* `HealthCheckId` from the app stack and import it in the alarm stack.
|
|
122
128
|
*/
|
|
123
129
|
export function createHealthCheckAlarmBuilder() {
|
|
124
|
-
return
|
|
130
|
+
return taggedBuilder(HealthCheckAlarmBuilder);
|
|
125
131
|
}
|
|
126
132
|
//# sourceMappingURL=health-check-alarm-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarm-builder.js","sourceRoot":"","sources":["../../src/health-check-alarm-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAmB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAwD9E;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAiB;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO;IACvC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO;IACnC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAChC,oCAAoC,EACpC,iFAAiF;QAC/E,gBAAgB,MAAM,8DAA8D;QACpF,yEAAyE;QACzE,6CAA6C,CAChD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAiB,EACjB,EAAU,EACV,MAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC9C,MAAM,eAAe,GACnB,WAAW,KAAK,KAAK,IAAI,WAAW,EAAE,OAAO,KAAK,KAAK;QACrD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,kCAAkC,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,eAAe,CAAC,CAAC;IAE9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,uBAAuB;IAC3B,KAAK,GAA0C,EAAE,CAAC;IAClD,YAAY,CAAwC;IAC3C,aAAa,GAA2C,EAAE,CAAC;IAEpE;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAiD;QAC3D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CACN,GAAW,EACX,SAEyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAA+B;QAC1C,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CACH,KAAiB,EACjB,EAAU,EACV,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,4BAA4B,EAAE,6BAA6B;gBACzD,sEAAsE,CACzE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,sBAAsB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE;gBAChD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC/C,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,CAClB,uBAAuB,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AlarmConfig } from "@composurecdk/cloudwatch";
|
|
2
|
+
/**
|
|
3
|
+
* Controls which recommended alarms are created for a Route 53 health check.
|
|
4
|
+
* The single recommended alarm — `healthCheckStatus` — is enabled by default
|
|
5
|
+
* with the AWS-recommended threshold. Set it to `false` to disable, or
|
|
6
|
+
* provide an {@link AlarmConfig} to tune the threshold or evaluation window.
|
|
7
|
+
*
|
|
8
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
|
|
9
|
+
*/
|
|
10
|
+
export interface HealthCheckAlarmConfig {
|
|
11
|
+
/**
|
|
12
|
+
* Master switch: set to `false` to disable all recommended alarms.
|
|
13
|
+
* Individual alarms can also be disabled via their own entry.
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Alarm when the health check is reporting unhealthy.
|
|
19
|
+
*
|
|
20
|
+
* Metric: `AWS/Route53 HealthCheckStatus`, statistic Minimum, period
|
|
21
|
+
* 1 minute, dimension `HealthCheckId`. Minimum is the AWS-recommended
|
|
22
|
+
* statistic — it surfaces "at least one Route 53 checker sees it down"
|
|
23
|
+
* during the period.
|
|
24
|
+
*
|
|
25
|
+
* Default threshold: `< 1` for one consecutive 1-minute period.
|
|
26
|
+
* Default `treatMissingData: breaching` — missing data is treated as
|
|
27
|
+
* unhealthy, matching the AWS example.
|
|
28
|
+
*
|
|
29
|
+
* Note: `AWS/Route53` metrics are emitted only in `us-east-1`. Alarms
|
|
30
|
+
* created against this metric in any other region will never receive
|
|
31
|
+
* data. The builder emits a synth-time warning when this happens; for
|
|
32
|
+
* stacks outside `us-east-1`, route the alarm into a `us-east-1` stack
|
|
33
|
+
* via `createHealthCheckAlarmBuilder()` and `compose().withStacks()`.
|
|
34
|
+
*
|
|
35
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
|
|
36
|
+
*/
|
|
37
|
+
healthCheckStatus?: AlarmConfig | false;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=health-check-alarm-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarm-config.d.ts","sourceRoot":"","sources":["../../src/health-check-alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarm-config.js","sourceRoot":"","sources":["../../src/health-check-alarm-config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AlarmConfigDefaults } from "@composurecdk/cloudwatch";
|
|
2
|
+
interface HealthCheckAlarmDefaults {
|
|
3
|
+
enabled: true;
|
|
4
|
+
healthCheckStatus: AlarmConfigDefaults;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* AWS-recommended default alarm configuration for Route 53 health checks.
|
|
8
|
+
*
|
|
9
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
|
|
10
|
+
*/
|
|
11
|
+
export declare const HEALTH_CHECK_ALARM_DEFAULTS: HealthCheckAlarmDefaults;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=health-check-alarm-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/health-check-alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,iBAAiB,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,wBAmBzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarm-defaults.js","sourceRoot":"","sources":["../../src/health-check-alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,OAAO,EAAE,IAAI;IAEb;;;;;;;;;OASG;IACH,iBAAiB,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,SAAS;KAC7C;CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IHealthCheck } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import type { AlarmDefinition } from "@composurecdk/cloudwatch";
|
|
3
|
+
import type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
|
|
4
|
+
/**
|
|
5
|
+
* Resolves the recommended alarm configuration into fully-resolved
|
|
6
|
+
* {@link AlarmDefinition}s for a Route 53 health check.
|
|
7
|
+
*
|
|
8
|
+
* Period and statistic are fixed at the AWS-recommended values
|
|
9
|
+
* (1 minute, Minimum) and not exposed as configuration knobs — they are
|
|
10
|
+
* load-bearing for the recommended semantics ("the worst checker reading
|
|
11
|
+
* per minute"). Threshold, evaluation periods, datapoints, and missing-data
|
|
12
|
+
* behaviour remain user-configurable via {@link HealthCheckAlarmConfig}.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveHealthCheckAlarmDefinitions(healthCheck: IHealthCheck, config: HealthCheckAlarmConfig | undefined): AlarmDefinition[];
|
|
15
|
+
//# sourceMappingURL=health-check-alarms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarms.d.ts","sourceRoot":"","sources":["../../src/health-check-alarms.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAK7E;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,SAAS,GACzC,eAAe,EAAE,CA8BnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-alarms.js","sourceRoot":"","sources":["../../src/health-check-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAyB,EACzB,MAA0C;IAE1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,kBAAkB,CAC5B,MAAM,EAAE,iBAAiB,EACzB,2BAA2B,CAAC,iBAAiB,CAC9C,CAAC;QACF,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,mBAAmB;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,MAAM,CAAC;gBACjB,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,mBAAmB;gBAC/B,aAAa,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE;gBAC3D,SAAS,EAAE,KAAK,CAAC,OAAO;gBACxB,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,mBAAmB;YAC1D,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,gFAAgF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB;SAC1I,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { HealthCheck, type HealthCheckProps, type IHealthCheck } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
3
|
+
import { type IConstruct } from "constructs";
|
|
4
|
+
import { COPY_STATE, type Lifecycle } from "@composurecdk/core";
|
|
5
|
+
import { type ITaggedBuilder } from "@composurecdk/cloudformation";
|
|
6
|
+
import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
|
|
7
|
+
import type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
|
|
8
|
+
/**
|
|
9
|
+
* Configuration properties for the Route 53 health-check builder.
|
|
10
|
+
*
|
|
11
|
+
* Extends the CDK {@link HealthCheckProps} with builder-specific options for
|
|
12
|
+
* AWS-recommended CloudWatch alarms.
|
|
13
|
+
*/
|
|
14
|
+
export interface HealthCheckBuilderProps extends HealthCheckProps {
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for AWS-recommended CloudWatch alarms.
|
|
17
|
+
*
|
|
18
|
+
* By default, the builder creates a recommended `healthCheckStatus`
|
|
19
|
+
* alarm matching AWS guidance (`HealthCheckStatus < 1` for one minute,
|
|
20
|
+
* `treatMissingData: breaching`). The alarm can be customised or
|
|
21
|
+
* disabled. Set to `false` to disable all alarms.
|
|
22
|
+
*
|
|
23
|
+
* No alarm actions are configured by default since notification methods
|
|
24
|
+
* are user-specific. Access alarms from the build result or use an
|
|
25
|
+
* `afterBuild` hook (or `alarmActionsPolicy`) to apply actions.
|
|
26
|
+
*
|
|
27
|
+
* Note: `AWS/Route53` metrics are emitted only in `us-east-1`. If this
|
|
28
|
+
* builder is used outside `us-east-1`, the synthesised alarm will never
|
|
29
|
+
* receive data — the builder emits a synth-time warning. For non-`us-east-1`
|
|
30
|
+
* stacks, suppress this builder's alarms with `recommendedAlarms: false`
|
|
31
|
+
* and create alarms in a `us-east-1` stack via
|
|
32
|
+
* {@link createHealthCheckAlarmBuilder}.
|
|
33
|
+
*
|
|
34
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
|
|
35
|
+
*/
|
|
36
|
+
recommendedAlarms?: HealthCheckAlarmConfig | false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The build output of an {@link IHealthCheckBuilder}.
|
|
40
|
+
*/
|
|
41
|
+
export interface HealthCheckBuilderResult {
|
|
42
|
+
/** The Route 53 health check construct created by the builder. */
|
|
43
|
+
healthCheck: HealthCheck;
|
|
44
|
+
/**
|
|
45
|
+
* CloudWatch alarms created for the health check, keyed by alarm name.
|
|
46
|
+
*
|
|
47
|
+
* Includes both AWS-recommended alarms and any custom alarms added via
|
|
48
|
+
* {@link IHealthCheckBuilder.addAlarm}. Access individual alarms by key
|
|
49
|
+
* (e.g. `result.alarms.healthCheckStatus`).
|
|
50
|
+
*
|
|
51
|
+
* No alarm actions are configured — apply them via the result or an
|
|
52
|
+
* `afterBuild` hook.
|
|
53
|
+
*
|
|
54
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
|
|
55
|
+
*/
|
|
56
|
+
alarms: Record<string, Alarm>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A fluent builder for configuring and creating a Route 53 health check.
|
|
60
|
+
*
|
|
61
|
+
* Each configuration property from the CDK {@link HealthCheckProps} is
|
|
62
|
+
* exposed as an overloaded method: call with a value to set it (returns the
|
|
63
|
+
* builder for chaining), or call with no arguments to read the current value.
|
|
64
|
+
*
|
|
65
|
+
* The builder also creates the AWS-recommended `healthCheckStatus`
|
|
66
|
+
* CloudWatch alarm by default. Alarms can be customised or disabled via the
|
|
67
|
+
* `recommendedAlarms` property.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const hc = createHealthCheckBuilder()
|
|
72
|
+
* .type(HealthCheckType.HTTPS)
|
|
73
|
+
* .fqdn("api.example.com")
|
|
74
|
+
* .resourcePath("/health");
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export type IHealthCheckBuilder = ITaggedBuilder<HealthCheckBuilderProps, HealthCheckBuilder>;
|
|
78
|
+
declare class HealthCheckBuilder implements Lifecycle<HealthCheckBuilderResult> {
|
|
79
|
+
#private;
|
|
80
|
+
props: Partial<HealthCheckBuilderProps>;
|
|
81
|
+
addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<IHealthCheck>) => AlarmDefinitionBuilder<IHealthCheck>): this;
|
|
82
|
+
/** @internal — see ADR-0005. */
|
|
83
|
+
[COPY_STATE](target: HealthCheckBuilder): void;
|
|
84
|
+
build(scope: IConstruct, id: string): HealthCheckBuilderResult;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Creates a new {@link IHealthCheckBuilder} for configuring a Route 53
|
|
88
|
+
* health check.
|
|
89
|
+
*
|
|
90
|
+
* @returns A fluent builder for a Route 53 health check.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* const hc = createHealthCheckBuilder()
|
|
95
|
+
* .type(HealthCheckType.HTTPS)
|
|
96
|
+
* .fqdn("api.example.com");
|
|
97
|
+
*
|
|
98
|
+
* const result = hc.build(stack, "ApiHealthCheck");
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function createHealthCheckBuilder(): IHealthCheckBuilder;
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=health-check-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-builder.d.ts","sourceRoot":"","sources":["../../src/health-check-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAI7E;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,WAAW,EAAE,WAAW,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAE9F,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAG7C,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,wBAAwB;CA4B/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HealthCheck } from "aws-cdk-lib/aws-route53";
|
|
2
|
-
import {
|
|
2
|
+
import { COPY_STATE } from "@composurecdk/core";
|
|
3
|
+
import { taggedBuilder } from "@composurecdk/cloudformation";
|
|
3
4
|
import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
|
|
4
5
|
import { buildHealthCheckAlarms } from "./health-check-alarm-builder.js";
|
|
5
6
|
import { HEALTH_CHECK_DEFAULTS } from "./defaults.js";
|
|
@@ -10,6 +11,10 @@ class HealthCheckBuilder {
|
|
|
10
11
|
this.#customAlarms.push(configure(new AlarmDefinitionBuilder(key)));
|
|
11
12
|
return this;
|
|
12
13
|
}
|
|
14
|
+
/** @internal — see ADR-0005. */
|
|
15
|
+
[COPY_STATE](target) {
|
|
16
|
+
target.#customAlarms.push(...this.#customAlarms);
|
|
17
|
+
}
|
|
13
18
|
build(scope, id) {
|
|
14
19
|
const { recommendedAlarms, ...rest } = this.props;
|
|
15
20
|
if (!rest.type) {
|
|
@@ -43,6 +48,6 @@ class HealthCheckBuilder {
|
|
|
43
48
|
* ```
|
|
44
49
|
*/
|
|
45
50
|
export function createHealthCheckBuilder() {
|
|
46
|
-
return
|
|
51
|
+
return taggedBuilder(HealthCheckBuilder);
|
|
47
52
|
}
|
|
48
53
|
//# sourceMappingURL=health-check-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check-builder.js","sourceRoot":"","sources":["../../src/health-check-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA4C,MAAM,yBAAyB,CAAC;AAGhG,OAAO,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA4EtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IACpC,aAAa,GAA2C,EAAE,CAAC;IAEpE,QAAQ,CACN,GAAW,EACX,SAEyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAA0B;QACrC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,+DAA+D,CACzF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,qBAAqB;YACxB,GAAG,IAAI;SACY,CAAC;QAEtB,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,EAAE,EACF,EAAE,WAAW,EAAE,EACf;YACE,iBAAiB;YACjB,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CACF,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,aAAa,CAA8C,kBAAkB,CAAC,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { PublicHostedZone, type PublicHostedZoneProps } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type LogGroup } from "aws-cdk-lib/aws-logs";
|
|
3
|
+
import { type IConstruct } from "constructs";
|
|
4
|
+
import { type Lifecycle } from "@composurecdk/core";
|
|
5
|
+
import { type ITaggedBuilder } from "@composurecdk/cloudformation";
|
|
6
|
+
import { type QueryLoggingConfig } from "./query-logging.js";
|
|
7
|
+
/**
|
|
8
|
+
* Configuration properties for the Route53 public hosted zone builder.
|
|
9
|
+
*
|
|
10
|
+
* Hides the CDK `queryLogsLogGroupArn` field in favour of {@link queryLogging}
|
|
11
|
+
* — a discriminated config that supports a `false` opt-out, a user-supplied
|
|
12
|
+
* pre-existing log group ARN, or a customizable auto-managed `LogGroup`
|
|
13
|
+
* provisioned alongside the hosted zone.
|
|
14
|
+
*/
|
|
15
|
+
export interface HostedZoneBuilderProps extends Omit<PublicHostedZoneProps, "queryLogsLogGroupArn"> {
|
|
16
|
+
/**
|
|
17
|
+
* See {@link QueryLoggingConfig}. Defaults to an auto-managed CloudWatch
|
|
18
|
+
* log group and a single shared resource policy granting Route 53 write
|
|
19
|
+
* access — the secure path is the easy path. Set to `false` to opt out, or
|
|
20
|
+
* to `{ logGroupArn }` to bring your own log group.
|
|
21
|
+
*/
|
|
22
|
+
queryLogging?: QueryLoggingConfig;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The build output of an {@link IHostedZoneBuilder}. Contains the CDK
|
|
26
|
+
* constructs created during {@link Lifecycle.build}, keyed by role.
|
|
27
|
+
*/
|
|
28
|
+
export interface HostedZoneBuilderResult {
|
|
29
|
+
/** The Route53 public hosted zone construct created by the builder. */
|
|
30
|
+
hostedZone: PublicHostedZone;
|
|
31
|
+
/**
|
|
32
|
+
* The CloudWatch log group auto-created for DNS query logging, or
|
|
33
|
+
* `undefined` when query logging was disabled or the user supplied their
|
|
34
|
+
* own log group ARN. The shared `AWS::Logs::ResourcePolicy` is
|
|
35
|
+
* intentionally not exposed: it is stack-scoped, shared across every
|
|
36
|
+
* hosted zone in the stack, and not safe to mutate from a single
|
|
37
|
+
* builder's result.
|
|
38
|
+
*/
|
|
39
|
+
queryLogGroup?: LogGroup;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A fluent builder for configuring and creating a Route53 public hosted zone.
|
|
43
|
+
*
|
|
44
|
+
* Each configuration property from the CDK {@link PublicHostedZoneProps} is
|
|
45
|
+
* exposed as an overloaded method: call with a value to set it (returns the
|
|
46
|
+
* builder for chaining), or call with no arguments to read the current value.
|
|
47
|
+
*
|
|
48
|
+
* The builder implements {@link Lifecycle}, so it can be used directly as a
|
|
49
|
+
* component in a {@link compose | composed system}. When built, it creates a
|
|
50
|
+
* public hosted zone with the configured properties — including the
|
|
51
|
+
* auto-managed DNS query-log group and shared resource policy — and returns a
|
|
52
|
+
* {@link HostedZoneBuilderResult}.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const zone = createHostedZoneBuilder()
|
|
57
|
+
* .zoneName("example.com")
|
|
58
|
+
* .comment("Primary customer-facing domain");
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export type IHostedZoneBuilder = ITaggedBuilder<HostedZoneBuilderProps, HostedZoneBuilder>;
|
|
62
|
+
declare class HostedZoneBuilder implements Lifecycle<HostedZoneBuilderResult> {
|
|
63
|
+
props: Partial<HostedZoneBuilderProps>;
|
|
64
|
+
build(scope: IConstruct, id: string): HostedZoneBuilderResult;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates a new {@link IHostedZoneBuilder} for configuring a Route53 public
|
|
68
|
+
* hosted zone.
|
|
69
|
+
*
|
|
70
|
+
* This is the entry point for defining a public hosted zone component. The
|
|
71
|
+
* returned builder exposes every {@link HostedZoneBuilderProps} property as a
|
|
72
|
+
* fluent setter/getter and implements {@link Lifecycle} for use with
|
|
73
|
+
* {@link compose}.
|
|
74
|
+
*
|
|
75
|
+
* @returns A fluent builder for a Route53 public hosted zone.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* const zone = createHostedZoneBuilder().zoneName("example.com");
|
|
80
|
+
*
|
|
81
|
+
* // Use standalone:
|
|
82
|
+
* const result = zone.build(stack, "SiteZone");
|
|
83
|
+
*
|
|
84
|
+
* // Or compose into a system:
|
|
85
|
+
* const system = compose(
|
|
86
|
+
* { zone, cert: createCertificateBuilder()
|
|
87
|
+
* .domainName("example.com")
|
|
88
|
+
* .validationZone(ref("zone", (r: HostedZoneBuilderResult) => r.hostedZone)) },
|
|
89
|
+
* { zone: [], cert: ["zone"] },
|
|
90
|
+
* );
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function createHostedZoneBuilder(): IHostedZoneBuilder;
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=hosted-zone-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-zone-builder.d.ts","sourceRoot":"","sources":["../../src/hosted-zone-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAClD,qBAAqB,EACrB,sBAAsB,CACvB;IACC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,UAAU,EAAE,gBAAgB,CAAC;IAC7B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAE3F,cAAM,iBAAkB,YAAW,SAAS,CAAC,uBAAuB,CAAC;IACnE,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAM;IAE5C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,uBAAuB;CA8B9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PublicHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
-
import {
|
|
2
|
+
import { taggedBuilder } from "@composurecdk/cloudformation";
|
|
3
3
|
import { HOSTED_ZONE_DEFAULTS } from "./defaults.js";
|
|
4
|
+
import { resolveQueryLogging } from "./query-logging.js";
|
|
4
5
|
class HostedZoneBuilder {
|
|
5
6
|
props = {};
|
|
6
7
|
build(scope, id) {
|
|
@@ -8,12 +9,19 @@ class HostedZoneBuilder {
|
|
|
8
9
|
throw new Error(`HostedZoneBuilder "${id}" requires a zoneName. ` +
|
|
9
10
|
`Call .zoneName() with a fully-qualified domain.`);
|
|
10
11
|
}
|
|
11
|
-
const
|
|
12
|
+
const { queryLogging, ...zoneProps } = {
|
|
12
13
|
...HOSTED_ZONE_DEFAULTS,
|
|
13
14
|
...this.props,
|
|
14
15
|
};
|
|
15
|
-
const
|
|
16
|
-
|
|
16
|
+
const { queryLogGroup, queryLogsLogGroupArn, policy } = resolveQueryLogging(scope, id, this.props.zoneName, queryLogging);
|
|
17
|
+
const hostedZone = new PublicHostedZone(scope, id, {
|
|
18
|
+
...zoneProps,
|
|
19
|
+
zoneName: this.props.zoneName,
|
|
20
|
+
queryLogsLogGroupArn,
|
|
21
|
+
});
|
|
22
|
+
if (policy)
|
|
23
|
+
hostedZone.node.addDependency(policy);
|
|
24
|
+
return { hostedZone, queryLogGroup };
|
|
17
25
|
}
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
@@ -44,6 +52,6 @@ class HostedZoneBuilder {
|
|
|
44
52
|
* ```
|
|
45
53
|
*/
|
|
46
54
|
export function createHostedZoneBuilder() {
|
|
47
|
-
return
|
|
55
|
+
return taggedBuilder(HostedZoneBuilder);
|
|
48
56
|
}
|
|
49
57
|
//# sourceMappingURL=hosted-zone-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-zone-builder.js","sourceRoot":"","sources":["../../src/hosted-zone-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA8B,MAAM,yBAAyB,CAAC;AAIvF,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAA2B,MAAM,oBAAoB,CAAC;AA+DlF,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,yBAAyB;gBAC/C,iDAAiD,CACpD,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG;YACrC,GAAG,oBAAoB;YACvB,GAAG,IAAI,CAAC,KAAK;SACd,CAAC;QAEF,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,mBAAmB,CACzE,KAAK,EACL,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,YAAY,CACb,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE;YACjD,GAAG,SAAS;YACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,oBAAoB;SACrB,CAAC,CAAC;QAEH,IAAI,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IACvC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAA4C,iBAAiB,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HttpsRecord, type HttpsRecordProps, type IHostedZone, type RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type IConstruct } from "constructs";
|
|
3
|
+
import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration properties for the Route53 HTTPS record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link HttpsRecordProps} but replaces `zone` and `target`
|
|
8
|
+
* with {@link Resolvable} variants so they can be wired from composed
|
|
9
|
+
* components (e.g. a CloudFront distribution used as an alias target).
|
|
10
|
+
*/
|
|
11
|
+
export interface HttpsRecordBuilderProps extends Omit<HttpsRecordProps, "zone" | "target"> {
|
|
12
|
+
/** The hosted zone in which to create the record. */
|
|
13
|
+
zone?: Resolvable<IHostedZone>;
|
|
14
|
+
/** The record target — mutually exclusive with `values`. */
|
|
15
|
+
target?: Resolvable<RecordTarget>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The build output of an {@link IHttpsRecordBuilder}.
|
|
19
|
+
*/
|
|
20
|
+
export interface HttpsRecordBuilderResult {
|
|
21
|
+
/** The Route53 HTTPS record construct created by the builder. */
|
|
22
|
+
record: HttpsRecord;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A fluent builder for configuring and creating a Route53 HTTPS record.
|
|
26
|
+
*
|
|
27
|
+
* HTTPS records (RFC 9460) advertise protocol hints — ALPN, port, IP hints —
|
|
28
|
+
* that clients can use before opening a connection, enabling one-round-trip
|
|
29
|
+
* HTTP/3 upgrades. Specify exactly one of `values` (explicit parameter list)
|
|
30
|
+
* or `target` (alias, typically a CloudFront distribution).
|
|
31
|
+
*/
|
|
32
|
+
export type IHttpsRecordBuilder = IBuilder<HttpsRecordBuilderProps, HttpsRecordBuilder>;
|
|
33
|
+
declare class HttpsRecordBuilder implements Lifecycle<HttpsRecordBuilderResult> {
|
|
34
|
+
props: Partial<HttpsRecordBuilderProps>;
|
|
35
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): HttpsRecordBuilderResult;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new {@link IHttpsRecordBuilder} for configuring a Route53 HTTPS
|
|
39
|
+
* record.
|
|
40
|
+
*
|
|
41
|
+
* @returns A fluent builder for a Route53 HTTPS record.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createHttpsRecordBuilder(): IHttpsRecordBuilder;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=https-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https-record-builder.d.ts","sourceRoot":"","sources":["../../src/https-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;GAOG;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAExF,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAE7C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CAiCjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAG9D"}
|
|
@@ -36,6 +36,7 @@ class HttpsRecordBuilder {
|
|
|
36
36
|
* @returns A fluent builder for a Route53 HTTPS record.
|
|
37
37
|
*/
|
|
38
38
|
export function createHttpsRecordBuilder() {
|
|
39
|
+
// eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
|
|
39
40
|
return Builder(HttpsRecordBuilder);
|
|
40
41
|
}
|
|
41
42
|
//# sourceMappingURL=https-record-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https-record-builder.js","sourceRoot":"","sources":["../../src/https-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAmCtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,+BAA+B;gBACtD,qFAAqF,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;QACvC,IAAI,SAAS,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,6DAA6D,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,OAAO,GAAG,cAAc,EAAE,WAAW,KAAK,SAAS,CAAC;QAC1D,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACzC,GAAG,IAAI;YACP,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACT,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,+GAA+G;IAC/G,OAAO,OAAO,CAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { createHostedZoneBuilder, type HostedZoneBuilderProps, type HostedZoneBuilderResult, type IHostedZoneBuilder, } from "./hosted-zone-builder.js";
|
|
2
|
+
export { type QueryLoggingConfig } from "./query-logging.js";
|
|
3
|
+
export { createARecordBuilder, type ARecordBuilderProps, type ARecordBuilderResult, type IARecordBuilder, } from "./a-record-builder.js";
|
|
4
|
+
export { createAaaaRecordBuilder, type AaaaRecordBuilderProps, type AaaaRecordBuilderResult, type IAaaaRecordBuilder, } from "./aaaa-record-builder.js";
|
|
5
|
+
export { createCnameRecordBuilder, type CnameRecordBuilderProps, type CnameRecordBuilderResult, type ICnameRecordBuilder, } from "./cname-record-builder.js";
|
|
6
|
+
export { createTxtRecordBuilder, type TxtRecordBuilderProps, type TxtRecordBuilderResult, type ITxtRecordBuilder, } from "./txt-record-builder.js";
|
|
7
|
+
export { createMxRecordBuilder, type MxRecordBuilderProps, type MxRecordBuilderResult, type IMxRecordBuilder, } from "./mx-record-builder.js";
|
|
8
|
+
export { createSrvRecordBuilder, type SrvRecordBuilderProps, type SrvRecordBuilderResult, type ISrvRecordBuilder, } from "./srv-record-builder.js";
|
|
9
|
+
export { createCaaRecordBuilder, type CaaRecordBuilderProps, type CaaRecordBuilderResult, type ICaaRecordBuilder, } from "./caa-record-builder.js";
|
|
10
|
+
export { createNsRecordBuilder, type NsRecordBuilderProps, type NsRecordBuilderResult, type INsRecordBuilder, } from "./ns-record-builder.js";
|
|
11
|
+
export { createDsRecordBuilder, type DsRecordBuilderProps, type DsRecordBuilderResult, type IDsRecordBuilder, } from "./ds-record-builder.js";
|
|
12
|
+
export { createHttpsRecordBuilder, type HttpsRecordBuilderProps, type HttpsRecordBuilderResult, type IHttpsRecordBuilder, } from "./https-record-builder.js";
|
|
13
|
+
export { createSvcbRecordBuilder, type SvcbRecordBuilderProps, type SvcbRecordBuilderResult, type ISvcbRecordBuilder, } from "./svcb-record-builder.js";
|
|
14
|
+
export { createHealthCheckBuilder, type HealthCheckBuilderProps, type HealthCheckBuilderResult, type IHealthCheckBuilder, } from "./health-check-builder.js";
|
|
15
|
+
export { createHealthCheckAlarmBuilder, type HealthCheckAlarmBuilderProps, type HealthCheckAlarmBuilderResult, type IHealthCheckAlarmBuilder, } from "./health-check-alarm-builder.js";
|
|
16
|
+
export type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
|
|
17
|
+
export { HEALTH_CHECK_ALARM_DEFAULTS } from "./health-check-alarm-defaults.js";
|
|
18
|
+
export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
|
|
19
|
+
export { HOSTED_ZONE_DEFAULTS, QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_NAME, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,mCAAmC,EACnC,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -14,5 +14,5 @@ export { createHealthCheckBuilder, } from "./health-check-builder.js";
|
|
|
14
14
|
export { createHealthCheckAlarmBuilder, } from "./health-check-alarm-builder.js";
|
|
15
15
|
export { HEALTH_CHECK_ALARM_DEFAULTS } from "./health-check-alarm-defaults.js";
|
|
16
16
|
export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
|
|
17
|
-
export { HOSTED_ZONE_DEFAULTS, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
|
|
17
|
+
export { HOSTED_ZONE_DEFAULTS, QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_NAME, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,GAI9B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,mCAAmC,EACnC,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { MxRecord, type MxRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type IConstruct } from "constructs";
|
|
3
|
+
import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration properties for the Route53 MX record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link MxRecordProps} but replaces `zone` with a
|
|
8
|
+
* {@link Resolvable} so it can be wired from composed components.
|
|
9
|
+
*/
|
|
10
|
+
export interface MxRecordBuilderProps extends Omit<MxRecordProps, "zone"> {
|
|
11
|
+
/** The hosted zone in which to create the record. */
|
|
12
|
+
zone?: Resolvable<IHostedZone>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The build output of an {@link IMxRecordBuilder}.
|
|
16
|
+
*/
|
|
17
|
+
export interface MxRecordBuilderResult {
|
|
18
|
+
/** The Route53 MX record construct created by the builder. */
|
|
19
|
+
record: MxRecord;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fluent builder for configuring and creating a Route53 MX record.
|
|
23
|
+
*
|
|
24
|
+
* MX records direct inbound mail to the host(s) responsible for accepting it.
|
|
25
|
+
* Each value pairs a priority (lower wins) with a fully-qualified mail-server
|
|
26
|
+
* host name. Pair with SPF/DKIM/DMARC TXT records for authenticated email.
|
|
27
|
+
*/
|
|
28
|
+
export type IMxRecordBuilder = IBuilder<MxRecordBuilderProps, MxRecordBuilder>;
|
|
29
|
+
declare class MxRecordBuilder implements Lifecycle<MxRecordBuilderResult> {
|
|
30
|
+
props: Partial<MxRecordBuilderProps>;
|
|
31
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): MxRecordBuilderResult;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new {@link IMxRecordBuilder} for configuring a Route53 MX record.
|
|
35
|
+
*
|
|
36
|
+
* @returns A fluent builder for a Route53 MX record.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createMxRecordBuilder(): IMxRecordBuilder;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=mx-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mx-record-builder.d.ts","sourceRoot":"","sources":["../../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CAsB9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAGxD"}
|
|
@@ -28,6 +28,7 @@ class MxRecordBuilder {
|
|
|
28
28
|
* @returns A fluent builder for a Route53 MX record.
|
|
29
29
|
*/
|
|
30
30
|
export function createMxRecordBuilder() {
|
|
31
|
+
// eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
|
|
31
32
|
return Builder(MxRecordBuilder);
|
|
32
33
|
}
|
|
33
34
|
//# sourceMappingURL=mx-record-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mx-record-builder.js","sourceRoot":"","sources":["../../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA+BnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,iEAAiE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,+GAA+G;IAC/G,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { NsRecord, type NsRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type IConstruct } from "constructs";
|
|
3
|
+
import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration properties for the Route53 NS record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link NsRecordProps} but replaces `zone` with a
|
|
8
|
+
* {@link Resolvable} so it can be wired from composed components.
|
|
9
|
+
*/
|
|
10
|
+
export interface NsRecordBuilderProps extends Omit<NsRecordProps, "zone"> {
|
|
11
|
+
/** The hosted zone in which to create the record. */
|
|
12
|
+
zone?: Resolvable<IHostedZone>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The build output of an {@link INsRecordBuilder}.
|
|
16
|
+
*/
|
|
17
|
+
export interface NsRecordBuilderResult {
|
|
18
|
+
/** The Route53 NS record construct created by the builder. */
|
|
19
|
+
record: NsRecord;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fluent builder for configuring and creating a Route53 NS record.
|
|
23
|
+
*
|
|
24
|
+
* Use NS records to delegate a subdomain to a different set of name servers
|
|
25
|
+
* (including another Route53 hosted zone). The apex NS record set is managed
|
|
26
|
+
* by Route53 itself and should not be recreated here.
|
|
27
|
+
*/
|
|
28
|
+
export type INsRecordBuilder = IBuilder<NsRecordBuilderProps, NsRecordBuilder>;
|
|
29
|
+
declare class NsRecordBuilder implements Lifecycle<NsRecordBuilderResult> {
|
|
30
|
+
props: Partial<NsRecordBuilderProps>;
|
|
31
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): NsRecordBuilderResult;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new {@link INsRecordBuilder} for configuring a Route53 NS record.
|
|
35
|
+
*
|
|
36
|
+
* @returns A fluent builder for a Route53 NS record.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createNsRecordBuilder(): INsRecordBuilder;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=ns-record-builder.d.ts.map
|