@composurecdk/route53 0.3.4 → 0.3.6
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 +118 -10
- package/dist/a-record-builder.d.ts.map +1 -1
- package/dist/a-record-builder.js +2 -3
- package/dist/a-record-builder.js.map +1 -1
- package/dist/aaaa-record-builder.d.ts.map +1 -1
- package/dist/aaaa-record-builder.js +2 -3
- package/dist/aaaa-record-builder.js.map +1 -1
- package/dist/caa-record-builder.d.ts +44 -0
- package/dist/caa-record-builder.d.ts.map +1 -0
- package/dist/caa-record-builder.js +33 -0
- package/dist/caa-record-builder.js.map +1 -0
- package/dist/cname-record-builder.d.ts.map +1 -1
- package/dist/cname-record-builder.js +1 -2
- package/dist/cname-record-builder.js.map +1 -1
- package/dist/defaults.d.ts +42 -0
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +49 -0
- package/dist/defaults.js.map +1 -1
- package/dist/ds-record-builder.d.ts +42 -0
- package/dist/ds-record-builder.d.ts.map +1 -0
- package/dist/ds-record-builder.js +33 -0
- package/dist/ds-record-builder.js.map +1 -0
- package/dist/https-record-builder.d.ts +45 -0
- package/dist/https-record-builder.d.ts.map +1 -0
- package/dist/https-record-builder.js +41 -0
- package/dist/https-record-builder.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/mx-record-builder.d.ts +40 -0
- package/dist/mx-record-builder.d.ts.map +1 -0
- package/dist/mx-record-builder.js +33 -0
- package/dist/mx-record-builder.js.map +1 -0
- package/dist/ns-record-builder.d.ts +40 -0
- package/dist/ns-record-builder.d.ts.map +1 -0
- package/dist/ns-record-builder.js +38 -0
- package/dist/ns-record-builder.js.map +1 -0
- package/dist/srv-record-builder.d.ts +40 -0
- package/dist/srv-record-builder.d.ts.map +1 -0
- package/dist/srv-record-builder.js +33 -0
- package/dist/srv-record-builder.js.map +1 -0
- package/dist/svcb-record-builder.d.ts +41 -0
- package/dist/svcb-record-builder.d.ts.map +1 -0
- package/dist/svcb-record-builder.js +34 -0
- package/dist/svcb-record-builder.js.map +1 -0
- package/dist/txt-record-builder.d.ts.map +1 -1
- package/dist/txt-record-builder.js +1 -2
- package/dist/txt-record-builder.js.map +1 -1
- package/dist/zone/index.d.ts +3 -0
- package/dist/zone/index.d.ts.map +1 -0
- package/dist/zone/index.js +3 -0
- package/dist/zone/index.js.map +1 -0
- package/dist/zone/zone-dsl.d.ts +252 -0
- package/dist/zone/zone-dsl.d.ts.map +1 -0
- package/dist/zone/zone-dsl.js +198 -0
- package/dist/zone/zone-dsl.js.map +1 -0
- package/dist/zone/zone-records.d.ts +67 -0
- package/dist/zone/zone-records.d.ts.map +1 -0
- package/dist/zone/zone-records.js +267 -0
- package/dist/zone/zone-records.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import type { Duration } from "aws-cdk-lib";
|
|
2
|
+
import { CaaTag, type HttpsRecordValue, type SvcbRecordValue } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
/**
|
|
4
|
+
* Sentinel name representing the zone apex (the zone-file `@`).
|
|
5
|
+
*
|
|
6
|
+
* Translated to an undefined CDK `recordName` when bound to a CDK construct.
|
|
7
|
+
*/
|
|
8
|
+
export declare const APEX = "@";
|
|
9
|
+
/**
|
|
10
|
+
* Per-record options applied to the underlying CDK construct.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the optional fields shared by every Route 53 record builder. Each
|
|
13
|
+
* record-type DSL helper accepts these as a trailing options argument.
|
|
14
|
+
*/
|
|
15
|
+
export interface RecordOptions {
|
|
16
|
+
/** TTL for the record set. Falls back to the underlying builder's default. */
|
|
17
|
+
readonly ttl?: Duration;
|
|
18
|
+
/** Optional comment passed through to the CDK construct. */
|
|
19
|
+
readonly comment?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ARecordSpec extends RecordOptions {
|
|
22
|
+
readonly type: "A";
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly addresses: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
export interface AaaaRecordSpec extends RecordOptions {
|
|
27
|
+
readonly type: "AAAA";
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly addresses: readonly string[];
|
|
30
|
+
}
|
|
31
|
+
export interface CnameRecordSpec extends RecordOptions {
|
|
32
|
+
readonly type: "CNAME";
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly target: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TxtRecordSpec extends RecordOptions {
|
|
37
|
+
readonly type: "TXT";
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly values: readonly string[];
|
|
40
|
+
}
|
|
41
|
+
export interface MxRecordSpec extends RecordOptions {
|
|
42
|
+
readonly type: "MX";
|
|
43
|
+
readonly name: string;
|
|
44
|
+
readonly values: readonly {
|
|
45
|
+
readonly priority: number;
|
|
46
|
+
readonly hostName: string;
|
|
47
|
+
}[];
|
|
48
|
+
}
|
|
49
|
+
export interface SrvRecordSpec extends RecordOptions {
|
|
50
|
+
readonly type: "SRV";
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly values: readonly {
|
|
53
|
+
readonly priority: number;
|
|
54
|
+
readonly weight: number;
|
|
55
|
+
readonly port: number;
|
|
56
|
+
readonly hostName: string;
|
|
57
|
+
}[];
|
|
58
|
+
}
|
|
59
|
+
export interface CaaRecordSpec extends RecordOptions {
|
|
60
|
+
readonly type: "CAA";
|
|
61
|
+
readonly name: string;
|
|
62
|
+
readonly values: readonly {
|
|
63
|
+
readonly flag: number;
|
|
64
|
+
readonly tag: CaaTag;
|
|
65
|
+
readonly value: string;
|
|
66
|
+
}[];
|
|
67
|
+
}
|
|
68
|
+
export interface NsRecordSpec extends RecordOptions {
|
|
69
|
+
readonly type: "NS";
|
|
70
|
+
readonly name: string;
|
|
71
|
+
readonly values: readonly string[];
|
|
72
|
+
}
|
|
73
|
+
export interface DsRecordSpec extends RecordOptions {
|
|
74
|
+
readonly type: "DS";
|
|
75
|
+
readonly name: string;
|
|
76
|
+
readonly values: readonly string[];
|
|
77
|
+
}
|
|
78
|
+
export interface HttpsRecordSpec extends RecordOptions {
|
|
79
|
+
readonly type: "HTTPS";
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly values: readonly HttpsRecordValue[];
|
|
82
|
+
}
|
|
83
|
+
export interface SvcbRecordSpec extends RecordOptions {
|
|
84
|
+
readonly type: "SVCB";
|
|
85
|
+
readonly name: string;
|
|
86
|
+
readonly values: readonly SvcbRecordValue[];
|
|
87
|
+
}
|
|
88
|
+
export type RecordSpec = ARecordSpec | AaaaRecordSpec | CnameRecordSpec | TxtRecordSpec | MxRecordSpec | SrvRecordSpec | CaaRecordSpec | NsRecordSpec | DsRecordSpec | HttpsRecordSpec | SvcbRecordSpec;
|
|
89
|
+
/** Record type discriminators surfaced by {@link RecordSpec}. */
|
|
90
|
+
export type RecordType = RecordSpec["type"];
|
|
91
|
+
/**
|
|
92
|
+
* IPv4 address record. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
93
|
+
*
|
|
94
|
+
* Multiple `A` calls for the same `name` are merged into a single CDK record
|
|
95
|
+
* set with all addresses; alternatively, pass an array as the second argument.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* A("@", "1.2.3.4")
|
|
100
|
+
* A("ha", ["1.2.3.4", "5.6.7.8"])
|
|
101
|
+
* A("www", "1.2.3.4", { ttl: Duration.minutes(10) })
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare function A(name: string, address: string | readonly string[], options?: RecordOptions): ARecordSpec;
|
|
105
|
+
/**
|
|
106
|
+
* IPv6 address record. See {@link A} for the merging / array semantics — they
|
|
107
|
+
* are identical.
|
|
108
|
+
*/
|
|
109
|
+
export declare function AAAA(name: string, address: string | readonly string[], options?: RecordOptions): AaaaRecordSpec;
|
|
110
|
+
/**
|
|
111
|
+
* Canonical-name record. DNS forbids more than one CNAME per name, so a second
|
|
112
|
+
* `CNAME(name, …)` for the same name is a configuration error and is rejected
|
|
113
|
+
* when the records are bound to the zone.
|
|
114
|
+
*
|
|
115
|
+
* CNAMEs also cannot live at the zone apex — use an A/AAAA alias instead.
|
|
116
|
+
*
|
|
117
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* CNAME("dkim1", "dkim1.39769.dkim.example.")
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function CNAME(name: string, target: string, options?: RecordOptions): CnameRecordSpec;
|
|
125
|
+
/**
|
|
126
|
+
* Text record. Pass a single string or an array of strings; multiple `TXT`
|
|
127
|
+
* calls for the same `name` are merged into one CDK record set.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* TXT("@", "v=spf1 mx -all")
|
|
132
|
+
* TXT("_dmarc", "v=DMARC1; p=none;")
|
|
133
|
+
* TXT("multi", ["one", "two"])
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export declare function TXT(name: string, value: string | readonly string[], options?: RecordOptions): TxtRecordSpec;
|
|
137
|
+
/**
|
|
138
|
+
* Mail-exchanger record. The argument order matches BIND zone files
|
|
139
|
+
* (`name priority target`); multiple `MX(name, …)` calls for the same name are
|
|
140
|
+
* merged into one CDK record set with all `(priority, hostName)` pairs.
|
|
141
|
+
*
|
|
142
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* MX("@", 10, "mail.example.com.")
|
|
147
|
+
* MX("@", 20, "backup.example.com.")
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export declare function MX(name: string, priority: number, hostName: string, options?: RecordOptions): MxRecordSpec;
|
|
151
|
+
/**
|
|
152
|
+
* Service-locator record. The argument order matches BIND zone files
|
|
153
|
+
* (`name priority weight port target`); multiple `SRV(name, …)` calls for the
|
|
154
|
+
* same name are merged into one CDK record set.
|
|
155
|
+
*
|
|
156
|
+
* Record names typically follow the `_service._proto` convention (e.g.
|
|
157
|
+
* `_sip._tcp`). Lower priority wins; weight distributes load across peers.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```ts
|
|
161
|
+
* SRV("_sip._tcp", 10, 60, 5060, "sip1.example.com.")
|
|
162
|
+
* SRV("_sip._tcp", 10, 40, 5060, "sip2.example.com.")
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export declare function SRV(name: string, priority: number, weight: number, port: number, hostName: string, options?: RecordOptions): SrvRecordSpec;
|
|
166
|
+
/**
|
|
167
|
+
* Certification-authority authorization record. Argument order matches BIND
|
|
168
|
+
* zone files (`name flag tag value`); multiple `CAA(name, …)` calls for the
|
|
169
|
+
* same name are merged into one CDK record set.
|
|
170
|
+
*
|
|
171
|
+
* For the common cases, prefer {@link CAA_ISSUE}, {@link CAA_ISSUEWILD}, or
|
|
172
|
+
* {@link CAA_IODEF}.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```ts
|
|
176
|
+
* CAA("@", 0, CaaTag.ISSUE, "amazon.com")
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export declare function CAA(name: string, flag: number, tag: CaaTag, value: string, options?: RecordOptions): CaaRecordSpec;
|
|
180
|
+
/**
|
|
181
|
+
* CAA `issue` record — authorizes a specific certificate authority to issue
|
|
182
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* CAA_ISSUE("@", "amazon.com")
|
|
187
|
+
* CAA_ISSUE("@", "amazontrust.com")
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export declare function CAA_ISSUE(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
|
|
191
|
+
/**
|
|
192
|
+
* CAA `issuewild` record — authorizes a specific CA to issue wildcard
|
|
193
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
194
|
+
*/
|
|
195
|
+
export declare function CAA_ISSUEWILD(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
|
|
196
|
+
/**
|
|
197
|
+
* CAA `iodef` record — reports policy violations to a URL. Merges with other
|
|
198
|
+
* CAA records at the same name.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* CAA_IODEF("@", "mailto:security@example.com")
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
export declare function CAA_IODEF(name: string, url: string, options?: RecordOptions): CaaRecordSpec;
|
|
206
|
+
/**
|
|
207
|
+
* Name-server delegation record. Delegates a subdomain to the supplied name
|
|
208
|
+
* servers. NS records cannot live at the zone apex — the apex NS set is
|
|
209
|
+
* managed by Route 53 itself.
|
|
210
|
+
*
|
|
211
|
+
* Multiple `NS(name, …)` calls for the same name are merged; alternatively,
|
|
212
|
+
* pass an array of host names.
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```ts
|
|
216
|
+
* NS("internal", ["ns-1.awsdns-00.co.uk.", "ns-2.awsdns-00.com."])
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function NS(name: string, hostName: string | readonly string[], options?: RecordOptions): NsRecordSpec;
|
|
220
|
+
/**
|
|
221
|
+
* DNSSEC delegation-signer record. Each value is a full rdata string
|
|
222
|
+
* (`keyTag algorithm digestType digest`). Multiple `DS(name, …)` calls for the
|
|
223
|
+
* same name are merged.
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```ts
|
|
227
|
+
* DS("secure", "60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118")
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
export declare function DS(name: string, rdata: string | readonly string[], options?: RecordOptions): DsRecordSpec;
|
|
231
|
+
/**
|
|
232
|
+
* HTTPS service-binding record (RFC 9460). Accepts pre-constructed
|
|
233
|
+
* {@link HttpsRecordValue} instances from the CDK. For alias-mode HTTPS
|
|
234
|
+
* records (typically pointing at a CloudFront distribution), use
|
|
235
|
+
* `createHttpsRecordBuilder` directly — the DSL supports value-mode only.
|
|
236
|
+
*
|
|
237
|
+
* Multiple `HTTPS(name, …)` calls for the same name are merged.
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```ts
|
|
241
|
+
* HTTPS("@", HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] }))
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
export declare function HTTPS(name: string, value: HttpsRecordValue | readonly HttpsRecordValue[], options?: RecordOptions): HttpsRecordSpec;
|
|
245
|
+
/**
|
|
246
|
+
* Generic service-binding record (RFC 9460). For HTTPS specifically, prefer
|
|
247
|
+
* {@link HTTPS} — most clients only consult HTTPS records for web traffic.
|
|
248
|
+
*
|
|
249
|
+
* Multiple `SVCB(name, …)` calls for the same name are merged.
|
|
250
|
+
*/
|
|
251
|
+
export declare function SVCB(name: string, value: SvcbRecordValue | readonly SvcbRecordValue[], options?: RecordOptions): SvcbRecordSpec;
|
|
252
|
+
//# sourceMappingURL=zone-dsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-dsl.d.ts","sourceRoot":"","sources":["../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { CaaTag } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
/**
|
|
3
|
+
* Sentinel name representing the zone apex (the zone-file `@`).
|
|
4
|
+
*
|
|
5
|
+
* Translated to an undefined CDK `recordName` when bound to a CDK construct.
|
|
6
|
+
*/
|
|
7
|
+
export const APEX = "@";
|
|
8
|
+
const toArray = (x) => Array.isArray(x) ? x : [x];
|
|
9
|
+
/**
|
|
10
|
+
* IPv4 address record. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
11
|
+
*
|
|
12
|
+
* Multiple `A` calls for the same `name` are merged into a single CDK record
|
|
13
|
+
* set with all addresses; alternatively, pass an array as the second argument.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* A("@", "1.2.3.4")
|
|
18
|
+
* A("ha", ["1.2.3.4", "5.6.7.8"])
|
|
19
|
+
* A("www", "1.2.3.4", { ttl: Duration.minutes(10) })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function A(name, address, options = {}) {
|
|
23
|
+
return { type: "A", name, addresses: toArray(address), ...options };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* IPv6 address record. See {@link A} for the merging / array semantics — they
|
|
27
|
+
* are identical.
|
|
28
|
+
*/
|
|
29
|
+
export function AAAA(name, address, options = {}) {
|
|
30
|
+
return { type: "AAAA", name, addresses: toArray(address), ...options };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Canonical-name record. DNS forbids more than one CNAME per name, so a second
|
|
34
|
+
* `CNAME(name, …)` for the same name is a configuration error and is rejected
|
|
35
|
+
* when the records are bound to the zone.
|
|
36
|
+
*
|
|
37
|
+
* CNAMEs also cannot live at the zone apex — use an A/AAAA alias instead.
|
|
38
|
+
*
|
|
39
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* CNAME("dkim1", "dkim1.39769.dkim.example.")
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function CNAME(name, target, options = {}) {
|
|
47
|
+
return { type: "CNAME", name, target, ...options };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Text record. Pass a single string or an array of strings; multiple `TXT`
|
|
51
|
+
* calls for the same `name` are merged into one CDK record set.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* TXT("@", "v=spf1 mx -all")
|
|
56
|
+
* TXT("_dmarc", "v=DMARC1; p=none;")
|
|
57
|
+
* TXT("multi", ["one", "two"])
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function TXT(name, value, options = {}) {
|
|
61
|
+
return { type: "TXT", name, values: toArray(value), ...options };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Mail-exchanger record. The argument order matches BIND zone files
|
|
65
|
+
* (`name priority target`); multiple `MX(name, …)` calls for the same name are
|
|
66
|
+
* merged into one CDK record set with all `(priority, hostName)` pairs.
|
|
67
|
+
*
|
|
68
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* MX("@", 10, "mail.example.com.")
|
|
73
|
+
* MX("@", 20, "backup.example.com.")
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function MX(name, priority, hostName, options = {}) {
|
|
77
|
+
return { type: "MX", name, values: [{ priority, hostName }], ...options };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Service-locator record. The argument order matches BIND zone files
|
|
81
|
+
* (`name priority weight port target`); multiple `SRV(name, …)` calls for the
|
|
82
|
+
* same name are merged into one CDK record set.
|
|
83
|
+
*
|
|
84
|
+
* Record names typically follow the `_service._proto` convention (e.g.
|
|
85
|
+
* `_sip._tcp`). Lower priority wins; weight distributes load across peers.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* SRV("_sip._tcp", 10, 60, 5060, "sip1.example.com.")
|
|
90
|
+
* SRV("_sip._tcp", 10, 40, 5060, "sip2.example.com.")
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export function SRV(name, priority, weight, port, hostName, options = {}) {
|
|
94
|
+
return { type: "SRV", name, values: [{ priority, weight, port, hostName }], ...options };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Certification-authority authorization record. Argument order matches BIND
|
|
98
|
+
* zone files (`name flag tag value`); multiple `CAA(name, …)` calls for the
|
|
99
|
+
* same name are merged into one CDK record set.
|
|
100
|
+
*
|
|
101
|
+
* For the common cases, prefer {@link CAA_ISSUE}, {@link CAA_ISSUEWILD}, or
|
|
102
|
+
* {@link CAA_IODEF}.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* CAA("@", 0, CaaTag.ISSUE, "amazon.com")
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export function CAA(name, flag, tag, value, options = {}) {
|
|
110
|
+
return { type: "CAA", name, values: [{ flag, tag, value }], ...options };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* CAA `issue` record — authorizes a specific certificate authority to issue
|
|
114
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* CAA_ISSUE("@", "amazon.com")
|
|
119
|
+
* CAA_ISSUE("@", "amazontrust.com")
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export function CAA_ISSUE(name, authority, options = {}) {
|
|
123
|
+
return CAA(name, 0, CaaTag.ISSUE, authority, options);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* CAA `issuewild` record — authorizes a specific CA to issue wildcard
|
|
127
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
128
|
+
*/
|
|
129
|
+
export function CAA_ISSUEWILD(name, authority, options = {}) {
|
|
130
|
+
return CAA(name, 0, CaaTag.ISSUEWILD, authority, options);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* CAA `iodef` record — reports policy violations to a URL. Merges with other
|
|
134
|
+
* CAA records at the same name.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```ts
|
|
138
|
+
* CAA_IODEF("@", "mailto:security@example.com")
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export function CAA_IODEF(name, url, options = {}) {
|
|
142
|
+
return CAA(name, 0, CaaTag.IODEF, url, options);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Name-server delegation record. Delegates a subdomain to the supplied name
|
|
146
|
+
* servers. NS records cannot live at the zone apex — the apex NS set is
|
|
147
|
+
* managed by Route 53 itself.
|
|
148
|
+
*
|
|
149
|
+
* Multiple `NS(name, …)` calls for the same name are merged; alternatively,
|
|
150
|
+
* pass an array of host names.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* NS("internal", ["ns-1.awsdns-00.co.uk.", "ns-2.awsdns-00.com."])
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export function NS(name, hostName, options = {}) {
|
|
158
|
+
return { type: "NS", name, values: toArray(hostName), ...options };
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* DNSSEC delegation-signer record. Each value is a full rdata string
|
|
162
|
+
* (`keyTag algorithm digestType digest`). Multiple `DS(name, …)` calls for the
|
|
163
|
+
* same name are merged.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* DS("secure", "60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118")
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
export function DS(name, rdata, options = {}) {
|
|
171
|
+
return { type: "DS", name, values: toArray(rdata), ...options };
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* HTTPS service-binding record (RFC 9460). Accepts pre-constructed
|
|
175
|
+
* {@link HttpsRecordValue} instances from the CDK. For alias-mode HTTPS
|
|
176
|
+
* records (typically pointing at a CloudFront distribution), use
|
|
177
|
+
* `createHttpsRecordBuilder` directly — the DSL supports value-mode only.
|
|
178
|
+
*
|
|
179
|
+
* Multiple `HTTPS(name, …)` calls for the same name are merged.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```ts
|
|
183
|
+
* HTTPS("@", HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] }))
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export function HTTPS(name, value, options = {}) {
|
|
187
|
+
return { type: "HTTPS", name, values: toArray(value), ...options };
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Generic service-binding record (RFC 9460). For HTTPS specifically, prefer
|
|
191
|
+
* {@link HTTPS} — most clients only consult HTTPS records for web traffic.
|
|
192
|
+
*
|
|
193
|
+
* Multiple `SVCB(name, …)` calls for the same name are merged.
|
|
194
|
+
*/
|
|
195
|
+
export function SVCB(name, value, options = {}) {
|
|
196
|
+
return { type: "SVCB", name, values: toArray(value), ...options };
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=zone-dsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-dsl.js","sourceRoot":"","sources":["../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
3
|
+
import { type AaaaRecordBuilderResult } from "../aaaa-record-builder.js";
|
|
4
|
+
import { type ARecordBuilderResult } from "../a-record-builder.js";
|
|
5
|
+
import { type CaaRecordBuilderResult } from "../caa-record-builder.js";
|
|
6
|
+
import { type CnameRecordBuilderResult } from "../cname-record-builder.js";
|
|
7
|
+
import { type DsRecordBuilderResult } from "../ds-record-builder.js";
|
|
8
|
+
import { type HttpsRecordBuilderResult } from "../https-record-builder.js";
|
|
9
|
+
import { type MxRecordBuilderResult } from "../mx-record-builder.js";
|
|
10
|
+
import { type NsRecordBuilderResult } from "../ns-record-builder.js";
|
|
11
|
+
import { type SrvRecordBuilderResult } from "../srv-record-builder.js";
|
|
12
|
+
import { type SvcbRecordBuilderResult } from "../svcb-record-builder.js";
|
|
13
|
+
import { type TxtRecordBuilderResult } from "../txt-record-builder.js";
|
|
14
|
+
import { type RecordSpec } from "./zone-dsl.js";
|
|
15
|
+
/**
|
|
16
|
+
* Build output of {@link zoneRecords}, split per record type. Each sub-map is
|
|
17
|
+
* keyed by the record's DNS name; the apex uses the {@link APEX} sentinel
|
|
18
|
+
* (`"@"`) so it never collides with a user-supplied label.
|
|
19
|
+
*/
|
|
20
|
+
export interface ZoneRecordsBuilderResult {
|
|
21
|
+
readonly a: Record<string, ARecordBuilderResult>;
|
|
22
|
+
readonly aaaa: Record<string, AaaaRecordBuilderResult>;
|
|
23
|
+
readonly cname: Record<string, CnameRecordBuilderResult>;
|
|
24
|
+
readonly txt: Record<string, TxtRecordBuilderResult>;
|
|
25
|
+
readonly mx: Record<string, MxRecordBuilderResult>;
|
|
26
|
+
readonly srv: Record<string, SrvRecordBuilderResult>;
|
|
27
|
+
readonly caa: Record<string, CaaRecordBuilderResult>;
|
|
28
|
+
readonly ns: Record<string, NsRecordBuilderResult>;
|
|
29
|
+
readonly ds: Record<string, DsRecordBuilderResult>;
|
|
30
|
+
readonly https: Record<string, HttpsRecordBuilderResult>;
|
|
31
|
+
readonly svcb: Record<string, SvcbRecordBuilderResult>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fluent builder that emits every record for a hosted zone from a
|
|
35
|
+
* {@link RecordSpec} list as a single composable {@link Lifecycle}.
|
|
36
|
+
*
|
|
37
|
+
* Records sharing `(type, name)` are merged into one CDK record set, matching
|
|
38
|
+
* DNS RR-set semantics. Every type uses its matching `@composurecdk/route53`
|
|
39
|
+
* builder, inheriting per-type TTL defaults.
|
|
40
|
+
*/
|
|
41
|
+
export interface IZoneRecordsBuilder extends Lifecycle<ZoneRecordsBuilderResult> {
|
|
42
|
+
/**
|
|
43
|
+
* The hosted zone to attach every record to. Accepts a {@link Resolvable},
|
|
44
|
+
* so a zone produced by a sibling compose component can be wired in via
|
|
45
|
+
* `ref("zone").get("hostedZone")`.
|
|
46
|
+
*/
|
|
47
|
+
zone(zone: Resolvable<IHostedZone>): IZoneRecordsBuilder;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates a single compose component that emits every record in `specs`.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* compose(
|
|
55
|
+
* {
|
|
56
|
+
* zone: createHostedZoneBuilder().zoneName("example.com"),
|
|
57
|
+
* records: zoneRecords([
|
|
58
|
+
* A("@", "1.2.3.4"),
|
|
59
|
+
* MX("@", 10, "mail.example.com."),
|
|
60
|
+
* ]).zone(ref<HostedZoneBuilderResult>("zone").get("hostedZone")),
|
|
61
|
+
* },
|
|
62
|
+
* { zone: [], records: ["zone"] },
|
|
63
|
+
* ).build(stack, "DNS");
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function zoneRecords(specs: readonly RecordSpec[]): IZoneRecordsBuilder;
|
|
67
|
+
//# sourceMappingURL=zone-records.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-records.d.ts","sourceRoot":"","sources":["../../src/zone/zone-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAe,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,uBAAuB,EAA2B,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,oBAAoB,EAAwB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,uBAAuB,EAA2B,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAWL,KAAK,UAAU,EAIhB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,wBAAwB,CAAC;IAC9E;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,mBAAmB,CAE7E"}
|