@composurecdk/route53 0.7.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/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/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} +26 -7
- 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/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/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/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/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/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/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/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} +11 -3
- 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/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/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/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/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/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/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 -21
- 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-builder.d.ts → commonjs/health-check-alarm-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/{health-check-builder.d.ts → commonjs/health-check-builder.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/{a-record-builder.js → esm/a-record-builder.js} +0 -0
- /package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +0 -0
- /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
- /package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +0 -0
- /package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +0 -0
- /package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +0 -0
- /package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.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/{health-check-builder.js → esm/health-check-builder.js} +0 -0
- /package/dist/{https-record-builder.js → esm/https-record-builder.js} +0 -0
- /package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +0 -0
- /package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +0 -0
- /package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +0 -0
- /package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +0 -0
- /package/dist/{txt-record-builder.js → esm/txt-record-builder.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
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Annotations, Aws, Stack, Token } from "aws-cdk-lib";
|
|
2
|
+
import { Effect, PolicyStatement, ServicePrincipal } from "aws-cdk-lib/aws-iam";
|
|
3
|
+
import { ResourcePolicy } from "aws-cdk-lib/aws-logs";
|
|
4
|
+
import { createLogGroupBuilder } from "@composurecdk/logs";
|
|
5
|
+
import { QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_ID, QUERY_LOGGING_RESOURCE_POLICY_NAME, } from "./defaults.js";
|
|
6
|
+
const QUERY_LOG_REGION = "us-east-1";
|
|
7
|
+
const QUERY_LOGGING_REGION_ANNOTATION = "@composurecdk/route53:query-logging-region";
|
|
8
|
+
const QUERY_LOGGING_NAME_ANNOTATION = "@composurecdk/route53:query-logging-name";
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the query-logging configuration for a hosted zone build, creating
|
|
11
|
+
* the auxiliary `LogGroup` and shared `ResourcePolicy` constructs as needed.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export function resolveQueryLogging(scope, id, zoneName, cfg) {
|
|
16
|
+
if (cfg === false)
|
|
17
|
+
return {};
|
|
18
|
+
if (cfg?.logGroupArn !== undefined) {
|
|
19
|
+
if (cfg.configure !== undefined) {
|
|
20
|
+
throw new Error(`queryLogging: 'configure' cannot be combined with 'logGroupArn' — ` +
|
|
21
|
+
`the log group is user-managed and not built by this builder.`);
|
|
22
|
+
}
|
|
23
|
+
warnIfArnNotUsEast1(scope, cfg.logGroupArn);
|
|
24
|
+
return { queryLogsLogGroupArn: cfg.logGroupArn };
|
|
25
|
+
}
|
|
26
|
+
errorIfStackNotUsEast1(scope);
|
|
27
|
+
const defaultLogGroupName = `${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/${stripTrailingDot(zoneName)}`;
|
|
28
|
+
let subBuilder = createLogGroupBuilder().logGroupName(defaultLogGroupName);
|
|
29
|
+
if (cfg?.configure) {
|
|
30
|
+
subBuilder = cfg.configure(subBuilder);
|
|
31
|
+
}
|
|
32
|
+
const queryLogGroup = subBuilder.build(scope, `${id}QueryLogs`).logGroup;
|
|
33
|
+
warnIfLogGroupNameOutsidePrefix(scope, id, subBuilder.logGroupName());
|
|
34
|
+
return {
|
|
35
|
+
queryLogGroup,
|
|
36
|
+
queryLogsLogGroupArn: queryLogGroup.logGroupArn,
|
|
37
|
+
policy: ensureSharedResourcePolicy(scope),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function stripTrailingDot(name) {
|
|
41
|
+
return name.endsWith(".") ? name.slice(0, -1) : name;
|
|
42
|
+
}
|
|
43
|
+
function ensureSharedResourcePolicy(scope) {
|
|
44
|
+
const stack = Stack.of(scope);
|
|
45
|
+
const existing = stack.node.tryFindChild(QUERY_LOGGING_RESOURCE_POLICY_ID);
|
|
46
|
+
if (existing instanceof ResourcePolicy)
|
|
47
|
+
return existing;
|
|
48
|
+
return new ResourcePolicy(stack, QUERY_LOGGING_RESOURCE_POLICY_ID, {
|
|
49
|
+
resourcePolicyName: QUERY_LOGGING_RESOURCE_POLICY_NAME,
|
|
50
|
+
policyStatements: [
|
|
51
|
+
new PolicyStatement({
|
|
52
|
+
sid: "AllowRoute53QueryLogging",
|
|
53
|
+
effect: Effect.ALLOW,
|
|
54
|
+
principals: [new ServicePrincipal("route53.amazonaws.com")],
|
|
55
|
+
actions: ["logs:CreateLogStream", "logs:PutLogEvents"],
|
|
56
|
+
resources: [
|
|
57
|
+
`arn:${Aws.PARTITION}:logs:${QUERY_LOG_REGION}:${Aws.ACCOUNT_ID}:log-group:${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/*:*`,
|
|
58
|
+
],
|
|
59
|
+
conditions: {
|
|
60
|
+
StringEquals: { "aws:SourceAccount": Aws.ACCOUNT_ID },
|
|
61
|
+
},
|
|
62
|
+
}),
|
|
63
|
+
],
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function errorIfStackNotUsEast1(scope) {
|
|
67
|
+
const region = Stack.of(scope).region;
|
|
68
|
+
if (Token.isUnresolved(region)) {
|
|
69
|
+
checkEnvAgnosticRegion(scope);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (region === QUERY_LOG_REGION)
|
|
73
|
+
return;
|
|
74
|
+
throw new Error(buildRegionErrorMessage(region));
|
|
75
|
+
}
|
|
76
|
+
// Env-agnostic stacks have no concrete region in the synthesised template, so
|
|
77
|
+
// fall back to CDK_DEFAULT_REGION — the same env var the CDK toolkit uses to
|
|
78
|
+
// fill the deploy region. Unset means we can't verify at synth time and warn
|
|
79
|
+
// instead, so deploying outside us-east-1 still surfaces a clear synth-time
|
|
80
|
+
// signal rather than the obscure CFN error.
|
|
81
|
+
function checkEnvAgnosticRegion(scope) {
|
|
82
|
+
const envRegion = process.env.CDK_DEFAULT_REGION;
|
|
83
|
+
if (envRegion === undefined || envRegion === "") {
|
|
84
|
+
Annotations.of(scope).addWarningV2(QUERY_LOGGING_REGION_ANNOTATION, `Route 53 query logging is enabled by default and requires the CloudWatch log ` +
|
|
85
|
+
`group to live in ${QUERY_LOG_REGION}. This stack is env-agnostic and CDK_DEFAULT_REGION ` +
|
|
86
|
+
`is not set, so the deploy region cannot be verified at synth time. Deploying ` +
|
|
87
|
+
`outside ${QUERY_LOG_REGION} will fail with "InvalidInputException - The ARN for the ` +
|
|
88
|
+
`CloudWatch Logs log group is invalid". To silence this warning, either pin ` +
|
|
89
|
+
`env: { region: '${QUERY_LOG_REGION}' } on the stack, pass queryLogging({ logGroupArn }) ` +
|
|
90
|
+
`referencing a log group you own in ${QUERY_LOG_REGION}, or queryLogging(false) to opt out.`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (envRegion === QUERY_LOG_REGION)
|
|
94
|
+
return;
|
|
95
|
+
throw new Error(buildRegionErrorMessage(envRegion));
|
|
96
|
+
}
|
|
97
|
+
function buildRegionErrorMessage(region) {
|
|
98
|
+
return (`Route 53 accepts DNS query logs only in ${QUERY_LOG_REGION}, but this stack is deployed in "${region}". ` +
|
|
99
|
+
`Without this check, the deploy fails late with "InvalidInputException - The ARN for the ` +
|
|
100
|
+
`CloudWatch Logs log group is invalid" after CloudFormation has already started rolling forward. ` +
|
|
101
|
+
`Either:\n` +
|
|
102
|
+
` 1. Deploy the stack containing this hosted zone in ${QUERY_LOG_REGION}, or\n` +
|
|
103
|
+
` 2. Pass queryLogging({ logGroupArn: 'arn:aws:logs:${QUERY_LOG_REGION}:...' }) referencing a log group ` +
|
|
104
|
+
`you own in ${QUERY_LOG_REGION}, or\n` +
|
|
105
|
+
` 3. Set queryLogging(false) to opt out.`);
|
|
106
|
+
}
|
|
107
|
+
function warnIfArnNotUsEast1(scope, arn) {
|
|
108
|
+
if (Token.isUnresolved(arn))
|
|
109
|
+
return;
|
|
110
|
+
const region = parseLogGroupArnRegion(arn);
|
|
111
|
+
if (region === undefined || region === QUERY_LOG_REGION)
|
|
112
|
+
return;
|
|
113
|
+
Annotations.of(scope).addWarningV2(QUERY_LOGGING_REGION_ANNOTATION, `queryLogging.logGroupArn references a log group in "${region}", but Route 53 query logs ` +
|
|
114
|
+
`are accepted only in ${QUERY_LOG_REGION}. The deploy will fail unless this ARN is corrected.`);
|
|
115
|
+
}
|
|
116
|
+
function warnIfLogGroupNameOutsidePrefix(scope, id, logGroupName) {
|
|
117
|
+
if (logGroupName === undefined || Token.isUnresolved(logGroupName))
|
|
118
|
+
return;
|
|
119
|
+
if (logGroupName.startsWith(`${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/`))
|
|
120
|
+
return;
|
|
121
|
+
Annotations.of(scope).addWarningV2(QUERY_LOGGING_NAME_ANNOTATION, `Hosted zone "${id}" query log group is named "${logGroupName}", which is outside the ` +
|
|
122
|
+
`"${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/*" prefix that the auto-managed resource policy ` +
|
|
123
|
+
`covers. Add a resource policy on this log group granting route53.amazonaws.com permission ` +
|
|
124
|
+
`to logs:CreateLogStream and logs:PutLogEvents, or change the name back to the default prefix.`);
|
|
125
|
+
}
|
|
126
|
+
function parseLogGroupArnRegion(arn) {
|
|
127
|
+
// arn:partition:logs:region:account:log-group:name
|
|
128
|
+
const parts = arn.split(":");
|
|
129
|
+
if (parts.length < 6 || parts[0] !== "arn" || parts[2] !== "logs")
|
|
130
|
+
return undefined;
|
|
131
|
+
return parts[3];
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=query-logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-logging.js","sourceRoot":"","sources":["../../src/query-logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SrvRecord, type SrvRecordProps, 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 SRV record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link SrvRecordProps} but replaces `zone` with a
|
|
8
|
+
* {@link Resolvable} so it can be wired from composed components.
|
|
9
|
+
*/
|
|
10
|
+
export interface SrvRecordBuilderProps extends Omit<SrvRecordProps, "zone"> {
|
|
11
|
+
/** The hosted zone in which to create the record. */
|
|
12
|
+
zone?: Resolvable<IHostedZone>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The build output of an {@link ISrvRecordBuilder}.
|
|
16
|
+
*/
|
|
17
|
+
export interface SrvRecordBuilderResult {
|
|
18
|
+
/** The Route53 SRV record construct created by the builder. */
|
|
19
|
+
record: SrvRecord;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fluent builder for configuring and creating a Route53 SRV record.
|
|
23
|
+
*
|
|
24
|
+
* SRV records advertise the location (host + port) of a named service, and
|
|
25
|
+
* the record name typically follows the `_service._proto` convention (e.g.
|
|
26
|
+
* `_sip._tcp`). Lower priority wins; weight distributes load across peers.
|
|
27
|
+
*/
|
|
28
|
+
export type ISrvRecordBuilder = IBuilder<SrvRecordBuilderProps, SrvRecordBuilder>;
|
|
29
|
+
declare class SrvRecordBuilder implements Lifecycle<SrvRecordBuilderResult> {
|
|
30
|
+
props: Partial<SrvRecordBuilderProps>;
|
|
31
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): SrvRecordBuilderResult;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new {@link ISrvRecordBuilder} for configuring a Route53 SRV record.
|
|
35
|
+
*
|
|
36
|
+
* @returns A fluent builder for a Route53 SRV record.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createSrvRecordBuilder(): ISrvRecordBuilder;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=srv-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"srv-record-builder.d.ts","sourceRoot":"","sources":["../../src/srv-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3F,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,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACzE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAElF,cAAM,gBAAiB,YAAW,SAAS,CAAC,sBAAsB,CAAC;IACjE,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;IAE3C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB;CAwB/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAG1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"srv-record-builder.js","sourceRoot":"","sources":["../../src/srv-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA+BpD,MAAM,gBAAgB;IACpB,KAAK,GAAmC,EAAE,CAAC;IAE3C,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,CACb,qBAAqB,EAAE,sDAAsD,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,EAAE,+BAA+B;gBACpD,+EAA+E,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,mBAAmB;YACtB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACX,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,+GAA+G;IAC/G,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SvcbRecord, type SvcbRecordProps, 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 SVCB record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link SvcbRecordProps} but replaces `zone` with a
|
|
8
|
+
* {@link Resolvable} so it can be wired from composed components.
|
|
9
|
+
*/
|
|
10
|
+
export interface SvcbRecordBuilderProps extends Omit<SvcbRecordProps, "zone"> {
|
|
11
|
+
/** The hosted zone in which to create the record. */
|
|
12
|
+
zone?: Resolvable<IHostedZone>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The build output of an {@link ISvcbRecordBuilder}.
|
|
16
|
+
*/
|
|
17
|
+
export interface SvcbRecordBuilderResult {
|
|
18
|
+
/** The Route53 SVCB record construct created by the builder. */
|
|
19
|
+
record: SvcbRecord;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fluent builder for configuring and creating a Route53 SVCB record.
|
|
23
|
+
*
|
|
24
|
+
* SVCB is the generic service-binding record type (RFC 9460). For HTTPS
|
|
25
|
+
* specifically, prefer {@link createHttpsRecordBuilder} — most clients only
|
|
26
|
+
* consult HTTPS records for web traffic.
|
|
27
|
+
*/
|
|
28
|
+
export type ISvcbRecordBuilder = IBuilder<SvcbRecordBuilderProps, SvcbRecordBuilder>;
|
|
29
|
+
declare class SvcbRecordBuilder implements Lifecycle<SvcbRecordBuilderResult> {
|
|
30
|
+
props: Partial<SvcbRecordBuilderProps>;
|
|
31
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): SvcbRecordBuilderResult;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new {@link ISvcbRecordBuilder} for configuring a Route53 SVCB
|
|
35
|
+
* record.
|
|
36
|
+
*
|
|
37
|
+
* @returns A fluent builder for a Route53 SVCB record.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createSvcbRecordBuilder(): ISvcbRecordBuilder;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=svcb-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svcb-record-builder.d.ts","sourceRoot":"","sources":["../../src/svcb-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC7F,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,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;IAC3E,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAErF,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,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAuB;CAwBhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAG5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svcb-record-builder.js","sourceRoot":"","sources":["../../src/svcb-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0C,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AA+BrD,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,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,CACb,sBAAsB,EAAE,sDAAsD,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,+BAA+B;gBACrD,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,oBAAoB;YACvB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACV,CAAC;QAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,+GAA+G;IAC/G,OAAO,OAAO,CAA4C,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TxtRecord, type TxtRecordProps, 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 TXT record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link TxtRecordProps} but replaces `zone` with a
|
|
8
|
+
* {@link Resolvable} so it can be wired from composed components.
|
|
9
|
+
*/
|
|
10
|
+
export interface TxtRecordBuilderProps extends Omit<TxtRecordProps, "zone"> {
|
|
11
|
+
/** The hosted zone in which to create the record. */
|
|
12
|
+
zone?: Resolvable<IHostedZone>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The build output of an {@link ITxtRecordBuilder}.
|
|
16
|
+
*/
|
|
17
|
+
export interface TxtRecordBuilderResult {
|
|
18
|
+
/** The Route53 TXT record construct created by the builder. */
|
|
19
|
+
record: TxtRecord;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fluent builder for configuring and creating a Route53 TXT record.
|
|
23
|
+
*
|
|
24
|
+
* Commonly used for SPF, DKIM, DMARC, and domain-verification tokens.
|
|
25
|
+
*/
|
|
26
|
+
export type ITxtRecordBuilder = IBuilder<TxtRecordBuilderProps, TxtRecordBuilder>;
|
|
27
|
+
declare class TxtRecordBuilder implements Lifecycle<TxtRecordBuilderResult> {
|
|
28
|
+
props: Partial<TxtRecordBuilderProps>;
|
|
29
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): TxtRecordBuilderResult;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new {@link ITxtRecordBuilder} for configuring a Route53 TXT record.
|
|
33
|
+
*
|
|
34
|
+
* @returns A fluent builder for a Route53 TXT record.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createTxtRecordBuilder(): ITxtRecordBuilder;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=txt-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txt-record-builder.d.ts","sourceRoot":"","sources":["../../src/txt-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3F,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,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACzE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAElF,cAAM,gBAAiB,YAAW,SAAS,CAAC,sBAAsB,CAAC;IACjE,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;IAE3C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB;CAwB/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAG1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txt-record-builder.js","sourceRoot":"","sources":["../../src/txt-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA6BpD,MAAM,gBAAgB;IACpB,KAAK,GAAmC,EAAE,CAAC;IAE3C,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,CACb,qBAAqB,EAAE,sDAAsD,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,EAAE,+BAA+B;gBACpD,qDAAqD,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,mBAAmB;YACtB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACX,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,+GAA+G;IAC/G,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { APEX, A, AAAA, ALIAS, CNAME, TXT, MX, SRV, CAA, CAA_ISSUE, CAA_ISSUEWILD, CAA_IODEF, NS, DS, HTTPS, SVCB, type AliasRecordOptions, type RecordOptions, type RecordSpec, type RecordType, type ARecordSpec, type AaaaRecordSpec, type AliasRecordSpec, type CnameRecordSpec, type TxtRecordSpec, type MxRecordSpec, type SrvRecordSpec, type CaaRecordSpec, type NsRecordSpec, type DsRecordSpec, type HttpsRecordSpec, type SvcbRecordSpec, } from "./zone-dsl.js";
|
|
2
|
+
export { zoneRecords, type IZoneRecordsBuilder, type ZoneRecordsBuilderResult, } from "./zone-records.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/zone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,KAAK,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EACH,GAAG,EACH,SAAS,EACT,aAAa,EACb,SAAS,EACT,EAAE,EACF,EAAE,EACF,KAAK,EACL,IAAI,EACJ,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/zone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,KAAK,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EACH,GAAG,EACH,SAAS,EACT,aAAa,EACb,SAAS,EACT,EAAE,EACF,EAAE,EACF,KAAK,EACL,IAAI,GAiBL,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import type { Duration } from "aws-cdk-lib";
|
|
2
|
+
import { CaaTag, type HttpsRecordValue, type RecordTarget, type SvcbRecordValue } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import type { Resolvable } from "@composurecdk/core";
|
|
4
|
+
/**
|
|
5
|
+
* Sentinel name representing the zone apex (the zone-file `@`).
|
|
6
|
+
*
|
|
7
|
+
* Translated to an undefined CDK `recordName` when bound to a CDK construct.
|
|
8
|
+
*/
|
|
9
|
+
export declare const APEX = "@";
|
|
10
|
+
/**
|
|
11
|
+
* Per-record options applied to the underlying CDK construct.
|
|
12
|
+
*
|
|
13
|
+
* Mirrors the optional fields shared by every Route 53 record builder. Each
|
|
14
|
+
* record-type DSL helper accepts these as a trailing options argument.
|
|
15
|
+
*/
|
|
16
|
+
export interface RecordOptions {
|
|
17
|
+
/** TTL for the record set. Falls back to the underlying builder's default. */
|
|
18
|
+
readonly ttl?: Duration;
|
|
19
|
+
/** Optional comment passed through to the CDK construct. */
|
|
20
|
+
readonly comment?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ARecordSpec extends RecordOptions {
|
|
23
|
+
readonly type: "A";
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly addresses: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export interface AaaaRecordSpec extends RecordOptions {
|
|
28
|
+
readonly type: "AAAA";
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly addresses: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
export interface CnameRecordSpec extends RecordOptions {
|
|
33
|
+
readonly type: "CNAME";
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly target: string;
|
|
36
|
+
}
|
|
37
|
+
export interface TxtRecordSpec extends RecordOptions {
|
|
38
|
+
readonly type: "TXT";
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly values: readonly string[];
|
|
41
|
+
}
|
|
42
|
+
export interface MxRecordSpec extends RecordOptions {
|
|
43
|
+
readonly type: "MX";
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly values: readonly {
|
|
46
|
+
readonly priority: number;
|
|
47
|
+
readonly hostName: string;
|
|
48
|
+
}[];
|
|
49
|
+
}
|
|
50
|
+
export interface SrvRecordSpec extends RecordOptions {
|
|
51
|
+
readonly type: "SRV";
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly values: readonly {
|
|
54
|
+
readonly priority: number;
|
|
55
|
+
readonly weight: number;
|
|
56
|
+
readonly port: number;
|
|
57
|
+
readonly hostName: string;
|
|
58
|
+
}[];
|
|
59
|
+
}
|
|
60
|
+
export interface CaaRecordSpec extends RecordOptions {
|
|
61
|
+
readonly type: "CAA";
|
|
62
|
+
readonly name: string;
|
|
63
|
+
readonly values: readonly {
|
|
64
|
+
readonly flag: number;
|
|
65
|
+
readonly tag: CaaTag;
|
|
66
|
+
readonly value: string;
|
|
67
|
+
}[];
|
|
68
|
+
}
|
|
69
|
+
export interface NsRecordSpec extends RecordOptions {
|
|
70
|
+
readonly type: "NS";
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly values: readonly string[];
|
|
73
|
+
}
|
|
74
|
+
export interface DsRecordSpec extends RecordOptions {
|
|
75
|
+
readonly type: "DS";
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly values: readonly string[];
|
|
78
|
+
}
|
|
79
|
+
export interface HttpsRecordSpec extends RecordOptions {
|
|
80
|
+
readonly type: "HTTPS";
|
|
81
|
+
readonly name: string;
|
|
82
|
+
readonly values: readonly HttpsRecordValue[];
|
|
83
|
+
}
|
|
84
|
+
export interface SvcbRecordSpec extends RecordOptions {
|
|
85
|
+
readonly type: "SVCB";
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly values: readonly SvcbRecordValue[];
|
|
88
|
+
}
|
|
89
|
+
export interface AliasRecordSpec extends RecordOptions {
|
|
90
|
+
readonly type: "ALIAS";
|
|
91
|
+
readonly name: string;
|
|
92
|
+
readonly target: Resolvable<RecordTarget>;
|
|
93
|
+
/** `false` emits an A alias (default); `true` emits an AAAA alias. */
|
|
94
|
+
readonly ipv6: boolean;
|
|
95
|
+
}
|
|
96
|
+
export type RecordSpec = ARecordSpec | AaaaRecordSpec | CnameRecordSpec | TxtRecordSpec | MxRecordSpec | SrvRecordSpec | CaaRecordSpec | NsRecordSpec | DsRecordSpec | HttpsRecordSpec | SvcbRecordSpec | AliasRecordSpec;
|
|
97
|
+
/** Record type discriminators surfaced by {@link RecordSpec}. */
|
|
98
|
+
export type RecordType = RecordSpec["type"];
|
|
99
|
+
/**
|
|
100
|
+
* IPv4 address record. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
101
|
+
*
|
|
102
|
+
* Multiple `A` calls for the same `name` are merged into a single CDK record
|
|
103
|
+
* set with all addresses; alternatively, pass an array as the second argument.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* A("@", "1.2.3.4")
|
|
108
|
+
* A("ha", ["1.2.3.4", "5.6.7.8"])
|
|
109
|
+
* A("www", "1.2.3.4", { ttl: Duration.minutes(10) })
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function A(name: string, address: string | readonly string[], options?: RecordOptions): ARecordSpec;
|
|
113
|
+
/**
|
|
114
|
+
* IPv6 address record. See {@link A} for the merging / array semantics — they
|
|
115
|
+
* are identical.
|
|
116
|
+
*/
|
|
117
|
+
export declare function AAAA(name: string, address: string | readonly string[], options?: RecordOptions): AaaaRecordSpec;
|
|
118
|
+
/**
|
|
119
|
+
* Canonical-name record. DNS forbids more than one CNAME per name, so a second
|
|
120
|
+
* `CNAME(name, …)` for the same name is a configuration error and is rejected
|
|
121
|
+
* when the records are bound to the zone.
|
|
122
|
+
*
|
|
123
|
+
* CNAMEs also cannot live at the zone apex — use an A/AAAA alias instead.
|
|
124
|
+
*
|
|
125
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* CNAME("dkim1", "dkim1.39769.dkim.example.")
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare function CNAME(name: string, target: string, options?: RecordOptions): CnameRecordSpec;
|
|
133
|
+
/**
|
|
134
|
+
* Text record. Pass a single string or an array of strings; multiple `TXT`
|
|
135
|
+
* calls for the same `name` are merged into one CDK record set.
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* TXT("@", "v=spf1 mx -all")
|
|
140
|
+
* TXT("_dmarc", "v=DMARC1; p=none;")
|
|
141
|
+
* TXT("multi", ["one", "two"])
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function TXT(name: string, value: string | readonly string[], options?: RecordOptions): TxtRecordSpec;
|
|
145
|
+
/**
|
|
146
|
+
* Mail-exchanger record. The argument order matches BIND zone files
|
|
147
|
+
* (`name priority target`); multiple `MX(name, …)` calls for the same name are
|
|
148
|
+
* merged into one CDK record set with all `(priority, hostName)` pairs.
|
|
149
|
+
*
|
|
150
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* MX("@", 10, "mail.example.com.")
|
|
155
|
+
* MX("@", 20, "backup.example.com.")
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function MX(name: string, priority: number, hostName: string, options?: RecordOptions): MxRecordSpec;
|
|
159
|
+
/**
|
|
160
|
+
* Service-locator record. The argument order matches BIND zone files
|
|
161
|
+
* (`name priority weight port target`); multiple `SRV(name, …)` calls for the
|
|
162
|
+
* same name are merged into one CDK record set.
|
|
163
|
+
*
|
|
164
|
+
* Record names typically follow the `_service._proto` convention (e.g.
|
|
165
|
+
* `_sip._tcp`). Lower priority wins; weight distributes load across peers.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* SRV("_sip._tcp", 10, 60, 5060, "sip1.example.com.")
|
|
170
|
+
* SRV("_sip._tcp", 10, 40, 5060, "sip2.example.com.")
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
export declare function SRV(name: string, priority: number, weight: number, port: number, hostName: string, options?: RecordOptions): SrvRecordSpec;
|
|
174
|
+
/**
|
|
175
|
+
* Certification-authority authorization record. Argument order matches BIND
|
|
176
|
+
* zone files (`name flag tag value`); multiple `CAA(name, …)` calls for the
|
|
177
|
+
* same name are merged into one CDK record set.
|
|
178
|
+
*
|
|
179
|
+
* For the common cases, prefer {@link CAA_ISSUE}, {@link CAA_ISSUEWILD}, or
|
|
180
|
+
* {@link CAA_IODEF}.
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```ts
|
|
184
|
+
* CAA("@", 0, CaaTag.ISSUE, "amazon.com")
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
export declare function CAA(name: string, flag: number, tag: CaaTag, value: string, options?: RecordOptions): CaaRecordSpec;
|
|
188
|
+
/**
|
|
189
|
+
* CAA `issue` record — authorizes a specific certificate authority to issue
|
|
190
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* CAA_ISSUE("@", "amazon.com")
|
|
195
|
+
* CAA_ISSUE("@", "amazontrust.com")
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export declare function CAA_ISSUE(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
|
|
199
|
+
/**
|
|
200
|
+
* CAA `issuewild` record — authorizes a specific CA to issue wildcard
|
|
201
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
202
|
+
*/
|
|
203
|
+
export declare function CAA_ISSUEWILD(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
|
|
204
|
+
/**
|
|
205
|
+
* CAA `iodef` record — reports policy violations to a URL. Merges with other
|
|
206
|
+
* CAA records at the same name.
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```ts
|
|
210
|
+
* CAA_IODEF("@", "mailto:security@example.com")
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export declare function CAA_IODEF(name: string, url: string, options?: RecordOptions): CaaRecordSpec;
|
|
214
|
+
/**
|
|
215
|
+
* Name-server delegation record. Delegates a subdomain to the supplied name
|
|
216
|
+
* servers. NS records cannot live at the zone apex — the apex NS set is
|
|
217
|
+
* managed by Route 53 itself.
|
|
218
|
+
*
|
|
219
|
+
* Multiple `NS(name, …)` calls for the same name are merged; alternatively,
|
|
220
|
+
* pass an array of host names.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```ts
|
|
224
|
+
* NS("internal", ["ns-1.awsdns-00.co.uk.", "ns-2.awsdns-00.com."])
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
export declare function NS(name: string, hostName: string | readonly string[], options?: RecordOptions): NsRecordSpec;
|
|
228
|
+
/**
|
|
229
|
+
* DNSSEC delegation-signer record. Each value is a full rdata string
|
|
230
|
+
* (`keyTag algorithm digestType digest`). Multiple `DS(name, …)` calls for the
|
|
231
|
+
* same name are merged.
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```ts
|
|
235
|
+
* DS("secure", "60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118")
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
export declare function DS(name: string, rdata: string | readonly string[], options?: RecordOptions): DsRecordSpec;
|
|
239
|
+
/**
|
|
240
|
+
* HTTPS service-binding record (RFC 9460). Accepts pre-constructed
|
|
241
|
+
* {@link HttpsRecordValue} instances from the CDK. For alias-mode HTTPS
|
|
242
|
+
* records (typically pointing at a CloudFront distribution), use
|
|
243
|
+
* `createHttpsRecordBuilder` directly — the DSL supports value-mode only.
|
|
244
|
+
*
|
|
245
|
+
* Multiple `HTTPS(name, …)` calls for the same name are merged.
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```ts
|
|
249
|
+
* HTTPS("@", HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] }))
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export declare function HTTPS(name: string, value: HttpsRecordValue | readonly HttpsRecordValue[], options?: RecordOptions): HttpsRecordSpec;
|
|
253
|
+
/**
|
|
254
|
+
* Generic service-binding record (RFC 9460). For HTTPS specifically, prefer
|
|
255
|
+
* {@link HTTPS} — most clients only consult HTTPS records for web traffic.
|
|
256
|
+
*
|
|
257
|
+
* Multiple `SVCB(name, …)` calls for the same name are merged.
|
|
258
|
+
*/
|
|
259
|
+
export declare function SVCB(name: string, value: SvcbRecordValue | readonly SvcbRecordValue[], options?: RecordOptions): SvcbRecordSpec;
|
|
260
|
+
/**
|
|
261
|
+
* Options for {@link ALIAS}. Extends {@link RecordOptions} with `ipv6` to pick
|
|
262
|
+
* between A-alias (default) and AAAA-alias output.
|
|
263
|
+
*/
|
|
264
|
+
export interface AliasRecordOptions extends RecordOptions {
|
|
265
|
+
/** When `true`, emit an AAAA alias record instead of an A alias. */
|
|
266
|
+
readonly ipv6?: boolean;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Route 53 alias record — compiles to an A record (or AAAA when
|
|
270
|
+
* `options.ipv6` is `true`) whose target is an `aliasTarget` rather than a
|
|
271
|
+
* list of IP addresses. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
272
|
+
*
|
|
273
|
+
* Pair with the alias-target helpers in `@composurecdk/route53` —
|
|
274
|
+
* `cloudfrontAliasTarget`, `apiGatewayAliasTarget`, or
|
|
275
|
+
* `apiGatewayDomainAliasTarget` — which return `Resolvable<RecordTarget>`.
|
|
276
|
+
*
|
|
277
|
+
* Because DNS permits only one record set per `(type, name)`, an `ALIAS`
|
|
278
|
+
* cannot coexist with address-mode `A`/`AAAA` at the same name, and two
|
|
279
|
+
* `ALIAS` calls for the same `(type, name)` are a configuration error. Both
|
|
280
|
+
* cases are rejected at build time.
|
|
281
|
+
*
|
|
282
|
+
* TTL defaults do not apply to alias records — AWS ignores TTL on aliases and
|
|
283
|
+
* CDK warns if one is set — so the underlying builder suppresses them.
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```ts
|
|
287
|
+
* ALIAS("@", cloudfrontAliasTarget(
|
|
288
|
+
* ref<DistributionBuilderResult>("cdn").get("distribution"),
|
|
289
|
+
* ))
|
|
290
|
+
* ALIAS("@", cloudfrontAliasTarget(
|
|
291
|
+
* ref<DistributionBuilderResult>("cdn").get("distribution"),
|
|
292
|
+
* ), { ipv6: true })
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
export declare function ALIAS(name: string, target: Resolvable<RecordTarget>, options?: AliasRecordOptions): AliasRecordSpec;
|
|
296
|
+
//# 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 @@
|
|
|
1
|
+
{"version":3,"file":"zone-dsl.js","sourceRoot":"","sources":["../../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}
|