@fjall/components-infrastructure 0.89.5 → 0.89.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/LICENSE +50 -21
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -18
- package/dist/lib/app.d.ts +12 -12
- package/dist/lib/app.js +61 -56
- package/dist/lib/aspects/index.d.ts +1 -1
- package/dist/lib/aspects/index.js +1 -6
- package/dist/lib/aspects/resourceInventory.js +6 -13
- package/dist/lib/config/audit.js +1 -5
- package/dist/lib/config/aws/accessAnalyser.d.ts +11 -0
- package/dist/lib/config/aws/accessAnalyser.js +17 -0
- package/dist/lib/config/aws/accountAuditRole.js +11 -15
- package/dist/lib/config/aws/accountMonitoringRole.js +25 -29
- package/dist/lib/config/aws/alarmTopic.d.ts +8 -0
- package/dist/lib/config/aws/alarmTopic.js +19 -0
- package/dist/lib/config/aws/cloudTrail.js +4 -9
- package/dist/lib/config/aws/configRecorder.d.ts +16 -0
- package/dist/lib/config/aws/configRecorder.js +51 -0
- package/dist/lib/config/aws/configRulePreset.d.ts +13 -0
- package/dist/lib/config/aws/configRulePreset.js +62 -0
- package/dist/lib/config/aws/disasterRecovery.d.ts +1 -1
- package/dist/lib/config/aws/disasterRecovery.js +56 -73
- package/dist/lib/config/aws/ebsDefaultEncryption.d.ts +8 -0
- package/dist/lib/config/aws/ebsDefaultEncryption.js +41 -0
- package/dist/lib/config/aws/ecrDefaultImage.js +25 -30
- package/dist/lib/config/aws/eventBus.js +8 -11
- package/dist/lib/config/aws/guardDutyDetector.d.ts +16 -0
- package/dist/lib/config/aws/guardDutyDetector.js +26 -0
- package/dist/lib/config/aws/identityCenter.d.ts +1 -1
- package/dist/lib/config/aws/identityCenter.js +23 -25
- package/dist/lib/config/aws/identityCenterGroupMembership.js +18 -22
- package/dist/lib/config/aws/index.d.ts +19 -8
- package/dist/lib/config/aws/index.js +19 -25
- package/dist/lib/config/aws/inspectorEnablement.d.ts +9 -0
- package/dist/lib/config/aws/inspectorEnablement.js +51 -0
- package/dist/lib/config/aws/ipam.js +9 -13
- package/dist/lib/config/aws/oidcConnector.js +8 -12
- package/dist/lib/config/aws/platform.js +1 -5
- package/dist/lib/config/aws/s3BlockPublicAccess.d.ts +9 -0
- package/dist/lib/config/aws/s3BlockPublicAccess.js +55 -0
- package/dist/lib/config/aws/scpPreset.d.ts +21 -0
- package/dist/lib/config/aws/scpPreset.js +311 -0
- package/dist/lib/config/aws/securityBaseline.d.ts +15 -0
- package/dist/lib/config/aws/securityBaseline.js +27 -0
- package/dist/lib/config/aws/securityHubHub.d.ts +15 -0
- package/dist/lib/config/aws/securityHubHub.js +28 -0
- package/dist/lib/config/aws/securityServicesAdmin.d.ts +20 -0
- package/dist/lib/config/aws/securityServicesAdmin.js +115 -0
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.js +2 -21
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.js +5 -26
- package/dist/lib/patterns/aws/account.d.ts +17 -1
- package/dist/lib/patterns/aws/account.js +60 -33
- package/dist/lib/patterns/aws/apexDomainPattern.d.ts +26 -0
- package/dist/lib/patterns/aws/apexDomainPattern.js +91 -0
- package/dist/lib/patterns/aws/auditRole.js +13 -16
- package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
- package/dist/lib/patterns/aws/buildkite.js +70 -75
- package/dist/lib/patterns/aws/cdn.d.ts +5 -5
- package/dist/lib/patterns/aws/cdn.js +22 -28
- package/dist/lib/patterns/aws/compute.d.ts +1 -1
- package/dist/lib/patterns/aws/compute.js +31 -44
- package/dist/lib/patterns/aws/computeEc2.d.ts +1 -1
- package/dist/lib/patterns/aws/computeEc2.js +11 -14
- package/dist/lib/patterns/aws/computeEcs.d.ts +18 -2
- package/dist/lib/patterns/aws/computeEcs.js +41 -31
- package/dist/lib/patterns/aws/computeLambda.d.ts +2 -2
- package/dist/lib/patterns/aws/computeLambda.js +24 -31
- package/dist/lib/patterns/aws/database.d.ts +16 -7
- package/dist/lib/patterns/aws/database.js +81 -73
- package/dist/lib/patterns/aws/delegatedDomainPattern.d.ts +17 -0
- package/dist/lib/patterns/aws/delegatedDomainPattern.js +54 -0
- package/dist/lib/patterns/aws/dnsRecordComposer.d.ts +25 -0
- package/dist/lib/patterns/aws/dnsRecordComposer.js +225 -0
- package/dist/lib/patterns/aws/domain.d.ts +32 -0
- package/dist/lib/patterns/aws/domain.js +115 -0
- package/dist/lib/patterns/aws/domainDelegation.d.ts +3 -3
- package/dist/lib/patterns/aws/domainDelegation.js +28 -37
- package/dist/lib/patterns/aws/domainFactory.d.ts +20 -5
- package/dist/lib/patterns/aws/domainFactory.js +48 -10
- package/dist/lib/patterns/aws/domainValidation.d.ts +11 -0
- package/dist/lib/patterns/aws/domainValidation.js +145 -0
- package/dist/lib/patterns/aws/externalRecordsPattern.d.ts +18 -0
- package/dist/lib/patterns/aws/externalRecordsPattern.js +141 -0
- package/dist/lib/patterns/aws/fivetranProxy.d.ts +1 -1
- package/dist/lib/patterns/aws/fivetranProxy.js +6 -11
- package/dist/lib/patterns/aws/index.d.ts +21 -19
- package/dist/lib/patterns/aws/index.js +25 -36
- package/dist/lib/patterns/aws/interfaces/cdn.js +1 -5
- package/dist/lib/patterns/aws/interfaces/compute.js +4 -11
- package/dist/lib/patterns/aws/interfaces/connector.js +1 -15
- package/dist/lib/patterns/aws/interfaces/database.d.ts +1 -1
- package/dist/lib/patterns/aws/interfaces/database.js +6 -15
- package/dist/lib/patterns/aws/interfaces/domain.d.ts +80 -2
- package/dist/lib/patterns/aws/interfaces/domain.js +1 -6
- package/dist/lib/patterns/aws/interfaces/index.js +8 -41
- package/dist/lib/patterns/aws/interfaces/messaging.js +4 -11
- package/dist/lib/patterns/aws/interfaces/organisation.d.ts +1 -1
- package/dist/lib/patterns/aws/interfaces/organisation.js +4 -11
- package/dist/lib/patterns/aws/interfaces/pattern.js +2 -7
- package/dist/lib/patterns/aws/interfaces/storage.js +1 -5
- package/dist/lib/patterns/aws/managedIdentityCenter.js +7 -12
- package/dist/lib/patterns/aws/messaging.d.ts +7 -7
- package/dist/lib/patterns/aws/messaging.js +22 -33
- package/dist/lib/patterns/aws/network.d.ts +2 -2
- package/dist/lib/patterns/aws/network.js +9 -14
- package/dist/lib/patterns/aws/organisation.d.ts +6 -2
- package/dist/lib/patterns/aws/organisation.js +34 -35
- package/dist/lib/patterns/aws/organisationFactory.d.ts +3 -3
- package/dist/lib/patterns/aws/organisationFactory.js +7 -12
- package/dist/lib/patterns/aws/pattern.js +6 -12
- package/dist/lib/patterns/aws/payload.js +73 -63
- package/dist/lib/patterns/aws/platform.d.ts +6 -3
- package/dist/lib/patterns/aws/platform.js +15 -15
- package/dist/lib/patterns/aws/storage.d.ts +6 -4
- package/dist/lib/patterns/aws/storage.js +35 -40
- package/dist/lib/patterns/aws/subdomainHostedZone.js +11 -16
- package/dist/lib/patterns/aws/targets/fjallTargets.d.ts +37 -0
- package/dist/lib/patterns/aws/targets/fjallTargets.js +66 -0
- package/dist/lib/patterns/aws/targets/index.d.ts +2 -0
- package/dist/lib/patterns/aws/targets/index.js +2 -0
- package/dist/lib/patterns/aws/targets/targetResolution.d.ts +76 -0
- package/dist/lib/patterns/aws/targets/targetResolution.js +119 -0
- package/dist/lib/patterns/index.d.ts +1 -0
- package/dist/lib/patterns/index.js +1 -0
- package/dist/lib/resources/aws/analytics/clickhouse.d.ts +15 -0
- package/dist/lib/resources/aws/analytics/clickhouse.js +292 -0
- package/dist/lib/resources/aws/analytics/clickhouseConstants.d.ts +73 -0
- package/dist/lib/resources/aws/analytics/clickhouseConstants.js +87 -0
- package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.d.ts +13 -0
- package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.js +28 -0
- package/dist/lib/resources/aws/analytics/clickhouseTypes.d.ts +47 -0
- package/dist/lib/resources/aws/analytics/clickhouseTypes.js +1 -0
- package/dist/lib/resources/aws/analytics/clickhouseUserData.d.ts +5 -0
- package/dist/lib/resources/aws/analytics/clickhouseUserData.js +248 -0
- package/dist/lib/resources/aws/analytics/index.d.ts +2 -0
- package/dist/lib/resources/aws/analytics/index.js +1 -0
- package/dist/lib/resources/aws/audit/auditRole.js +10 -15
- package/dist/lib/resources/aws/audit/index.d.ts +1 -1
- package/dist/lib/resources/aws/audit/index.js +1 -6
- package/dist/lib/resources/aws/backup/backupPlan.d.ts +1 -1
- package/dist/lib/resources/aws/backup/backupPlan.js +14 -16
- package/dist/lib/resources/aws/backup/backupVault.d.ts +1 -1
- package/dist/lib/resources/aws/backup/backupVault.js +13 -15
- package/dist/lib/resources/aws/backup/index.d.ts +2 -2
- package/dist/lib/resources/aws/backup/index.js +2 -19
- package/dist/lib/resources/aws/base/awsStack.js +17 -19
- package/dist/lib/resources/aws/base/index.d.ts +1 -1
- package/dist/lib/resources/aws/base/index.js +1 -18
- package/dist/lib/resources/aws/cdn/cloudFront.js +40 -42
- package/dist/lib/resources/aws/cdn/index.d.ts +1 -1
- package/dist/lib/resources/aws/cdn/index.js +1 -18
- package/dist/lib/resources/aws/compute/ec2.js +39 -39
- package/dist/lib/resources/aws/compute/ecs.d.ts +18 -396
- package/dist/lib/resources/aws/compute/ecs.js +105 -976
- package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.d.ts +22 -0
- package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.js +35 -0
- package/dist/lib/resources/aws/compute/ecsConstants.d.ts +20 -0
- package/dist/lib/resources/aws/compute/ecsConstants.js +49 -0
- package/dist/lib/resources/aws/compute/ecsContext.d.ts +12 -0
- package/dist/lib/resources/aws/compute/ecsContext.js +1 -0
- package/dist/lib/resources/aws/compute/ecsImages.d.ts +4 -0
- package/dist/lib/resources/aws/compute/ecsImages.js +35 -0
- package/dist/lib/resources/aws/compute/ecsNetworking.d.ts +28 -0
- package/dist/lib/resources/aws/compute/ecsNetworking.js +290 -0
- package/dist/lib/resources/aws/compute/ecsRoles.d.ts +15 -0
- package/dist/lib/resources/aws/compute/ecsRoles.js +110 -0
- package/dist/lib/resources/aws/compute/ecsServiceFactory.d.ts +33 -0
- package/dist/lib/resources/aws/compute/ecsServiceFactory.js +183 -0
- package/dist/lib/resources/aws/compute/ecsTaskDefinition.d.ts +30 -0
- package/dist/lib/resources/aws/compute/ecsTaskDefinition.js +168 -0
- package/dist/lib/resources/aws/compute/ecsTypes.d.ts +337 -0
- package/dist/lib/resources/aws/compute/ecsTypes.js +10 -0
- package/dist/lib/resources/aws/compute/ecsValidation.d.ts +18 -0
- package/dist/lib/resources/aws/compute/ecsValidation.js +72 -0
- package/dist/lib/resources/aws/compute/index.d.ts +3 -3
- package/dist/lib/resources/aws/compute/index.js +3 -20
- package/dist/lib/resources/aws/compute/lambda.d.ts +10 -2
- package/dist/lib/resources/aws/compute/lambda.js +81 -71
- package/dist/lib/resources/aws/database/dynamodb.js +24 -27
- package/dist/lib/resources/aws/database/index.d.ts +7 -7
- package/dist/lib/resources/aws/database/index.js +14 -33
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +10 -2
- package/dist/lib/resources/aws/database/rdsAurora.js +76 -61
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +2 -2
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +24 -21
- package/dist/lib/resources/aws/database/rdsDefaults.js +3 -7
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +2 -2
- package/dist/lib/resources/aws/database/rdsHelpers.js +21 -29
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +11 -3
- package/dist/lib/resources/aws/database/rdsInstance.js +101 -83
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +5 -9
- package/dist/lib/resources/aws/iam/delegationRole.d.ts +18 -0
- package/dist/lib/resources/aws/iam/delegationRole.js +60 -0
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +4 -9
- package/dist/lib/resources/aws/iam/identityCenter/group.js +5 -9
- package/dist/lib/resources/aws/iam/identityCenter/index.d.ts +3 -3
- package/dist/lib/resources/aws/iam/identityCenter/index.js +3 -20
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +5 -9
- package/dist/lib/resources/aws/iam/index.d.ts +5 -4
- package/dist/lib/resources/aws/iam/index.js +5 -21
- package/dist/lib/resources/aws/iam/instanceProfile.js +2 -7
- package/dist/lib/resources/aws/iam/managedPolicy.js +2 -7
- package/dist/lib/resources/aws/iam/policy.js +2 -7
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/index.d.ts +7 -7
- package/dist/lib/resources/aws/index.js +7 -24
- package/dist/lib/resources/aws/logging/cloudTrail.d.ts +1 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +18 -22
- package/dist/lib/resources/aws/logging/index.d.ts +2 -2
- package/dist/lib/resources/aws/logging/index.js +2 -19
- package/dist/lib/resources/aws/logging/logGroup.js +4 -10
- package/dist/lib/resources/aws/messaging/eventbridge.js +11 -14
- package/dist/lib/resources/aws/messaging/index.d.ts +4 -4
- package/dist/lib/resources/aws/messaging/index.js +4 -21
- package/dist/lib/resources/aws/messaging/sns.js +11 -14
- package/dist/lib/resources/aws/messaging/sqs.js +32 -34
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -1
- package/dist/lib/resources/aws/messaging/utils.js +1 -6
- package/dist/lib/resources/aws/monitoring/alarmDefaults.d.ts +36 -0
- package/dist/lib/resources/aws/monitoring/alarmDefaults.js +34 -0
- package/dist/lib/resources/aws/monitoring/ecsAlarms.d.ts +21 -0
- package/dist/lib/resources/aws/monitoring/ecsAlarms.js +88 -0
- package/dist/lib/resources/aws/monitoring/index.d.ts +4 -0
- package/dist/lib/resources/aws/monitoring/index.js +4 -5
- package/dist/lib/resources/aws/monitoring/lambdaAlarms.d.ts +18 -0
- package/dist/lib/resources/aws/monitoring/lambdaAlarms.js +44 -0
- package/dist/lib/resources/aws/monitoring/rdsAlarms.d.ts +20 -0
- package/dist/lib/resources/aws/monitoring/rdsAlarms.js +52 -0
- package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.d.ts +17 -0
- package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.js +26 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.js +22 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.js +23 -0
- package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.d.ts +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.js +22 -0
- package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.d.ts +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.js +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/index.d.ts +10 -0
- package/dist/lib/resources/aws/networking/dnsRecord/index.js +10 -0
- package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.d.ts +16 -0
- package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.d.ts +18 -0
- package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.js +21 -0
- package/dist/lib/resources/aws/networking/domain.d.ts +1 -1
- package/dist/lib/resources/aws/networking/domain.js +32 -34
- package/dist/lib/resources/aws/networking/domainCertificate.d.ts +8 -3
- package/dist/lib/resources/aws/networking/domainCertificate.js +22 -16
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +23 -19
- package/dist/lib/resources/aws/networking/hostedZone.js +70 -134
- package/dist/lib/resources/aws/networking/index.d.ts +8 -7
- package/dist/lib/resources/aws/networking/index.js +8 -24
- package/dist/lib/resources/aws/networking/ipam.js +2 -7
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +45 -55
- package/dist/lib/resources/aws/networking/securityGroup.js +2 -7
- package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
- package/dist/lib/resources/aws/networking/vpc.js +17 -21
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +1 -1
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +11 -15
- package/dist/lib/resources/aws/organisation/index.d.ts +5 -5
- package/dist/lib/resources/aws/organisation/index.js +4 -12
- package/dist/lib/resources/aws/organisation/organisation.js +5 -7
- package/dist/lib/resources/aws/organisation/organisationAccount.js +7 -10
- package/dist/lib/resources/aws/organisation/organisationPolicy.js +5 -9
- package/dist/lib/resources/aws/organisation/organisationalUnit.js +1 -3
- package/dist/lib/resources/aws/secrets/alias.js +2 -7
- package/dist/lib/resources/aws/secrets/index.d.ts +4 -4
- package/dist/lib/resources/aws/secrets/index.js +4 -21
- package/dist/lib/resources/aws/secrets/kms.js +15 -18
- package/dist/lib/resources/aws/secrets/parameter.d.ts +3 -3
- package/dist/lib/resources/aws/secrets/parameter.js +19 -22
- package/dist/lib/resources/aws/secrets/secret.d.ts +2 -2
- package/dist/lib/resources/aws/secrets/secret.js +12 -14
- package/dist/lib/resources/aws/storage/ecr.d.ts +2 -2
- package/dist/lib/resources/aws/storage/ecr.js +7 -13
- package/dist/lib/resources/aws/storage/index.d.ts +2 -2
- package/dist/lib/resources/aws/storage/index.js +2 -19
- package/dist/lib/resources/aws/storage/s3.d.ts +1 -1
- package/dist/lib/resources/aws/storage/s3.js +24 -12
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +3 -7
- package/dist/lib/resources/aws/utilities/codeBuild.js +7 -12
- package/dist/lib/resources/aws/utilities/customResource.js +14 -17
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +2 -7
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -5
- package/dist/lib/resources/aws/utilities/index.js +5 -22
- package/dist/lib/resources/aws/utilities/resourceShare.js +2 -7
- package/dist/lib/resources/index.d.ts +1 -1
- package/dist/lib/resources/index.js +1 -18
- package/dist/lib/types.js +1 -3
- package/dist/lib/utils/accountsUtils.d.ts +5 -0
- package/dist/lib/utils/accountsUtils.js +18 -0
- package/dist/lib/utils/addSuffixToEmail.js +1 -5
- package/dist/lib/utils/backupTierMapping.js +2 -6
- package/dist/lib/utils/capitaliseString.js +1 -10
- package/dist/lib/utils/connections.js +9 -13
- package/dist/lib/utils/connector.js +10 -23
- package/dist/lib/utils/constructMap.d.ts +33 -0
- package/dist/lib/utils/constructMap.js +154 -0
- package/dist/lib/utils/databaseTypes.js +4 -10
- package/dist/lib/utils/dnsRecords.d.ts +1 -1
- package/dist/lib/utils/dnsRecords.js +23 -27
- package/dist/lib/utils/domainTypes.d.ts +0 -1
- package/dist/lib/utils/domainTypes.js +2 -10
- package/dist/lib/utils/env.js +14 -26
- package/dist/lib/utils/getAccountId.js +3 -7
- package/dist/lib/utils/getAsync.js +7 -10
- package/dist/lib/utils/getConfig.d.ts +0 -2
- package/dist/lib/utils/getConfig.js +29 -47
- package/dist/lib/utils/getStackOutput.js +4 -8
- package/dist/lib/utils/index.d.ts +12 -12
- package/dist/lib/utils/index.js +12 -29
- package/dist/lib/utils/manifestWriter.d.ts +14 -3
- package/dist/lib/utils/manifestWriter.js +60 -43
- package/dist/lib/utils/orgConfigParser.d.ts +14 -0
- package/dist/lib/utils/orgConfigParser.js +49 -0
- package/dist/lib/utils/removalPolicy.js +5 -9
- package/dist/lib/utils/resourceNaming.js +11 -16
- package/dist/lib/utils/standardTagsAspect.js +9 -16
- package/dist/lib/utils/stripAndCamelCase.js +1 -5
- package/dist/lib/utils/validationLogger.js +12 -18
- package/dist/lib/utils/vpcUtils.js +5 -10
- package/package.json +25 -8
- package/dist/lib/config/aws/accountId.d.ts +0 -6
- package/dist/lib/config/aws/accountId.js +0 -32
- package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
- package/dist/lib/config/aws/backupGlobalSettings.js +0 -49
- package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
- package/dist/lib/config/aws/costAllocationTags.js +0 -47
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
- package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -57
- package/dist/lib/config/aws/ipamPoolId.d.ts +0 -16
- package/dist/lib/config/aws/ipamPoolId.js +0 -42
- package/dist/lib/config/aws/organisation.d.ts +0 -30
- package/dist/lib/config/aws/organisation.js +0 -92
- package/dist/lib/config/aws/organisationId.d.ts +0 -7
- package/dist/lib/config/aws/organisationId.js +0 -45
- package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
- package/dist/lib/config/aws/organisationsAccess.js +0 -49
- package/dist/lib/config/aws/ramSharing.d.ts +0 -4
- package/dist/lib/config/aws/ramSharing.js +0 -34
- package/dist/lib/config/monitoring.d.ts +0 -18
- package/dist/lib/config/monitoring.js +0 -22
- package/dist/lib/patterns/aws/connections.d.ts +0 -46
- package/dist/lib/patterns/aws/connections.js +0 -159
- package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
- package/dist/lib/patterns/aws/hostedZone.js +0 -150
- package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
- package/dist/lib/patterns/aws/managedAccount.js +0 -55
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
- package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
- package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
- package/dist/lib/patterns/aws/managedPlatform.js +0 -29
- package/dist/lib/resources/aws/database/database.d.ts +0 -14
- package/dist/lib/resources/aws/database/database.js +0 -28
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
- package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
- package/dist/lib/resources/aws/database/migrationLambda.d.ts +0 -80
- package/dist/lib/resources/aws/database/migrationLambda.js +0 -119
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -51
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
- package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
- package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -29
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -120
- package/dist/lib/utils/capitalizeString.d.ts +0 -12
- package/dist/lib/utils/capitalizeString.js +0 -30
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Tags } from "aws-cdk-lib";
|
|
3
|
+
import { CrossAccountZoneDelegationRecord as CdkCrossAccountZoneDelegationRecord } from "aws-cdk-lib/aws-route53";
|
|
4
|
+
// CDK's CrossAccountZoneDelegationRecord is a custom-resource Lambda: user-level tags
|
|
5
|
+
// on the record itself may not reach AWS. We tag the wrapping Fjall Construct for
|
|
6
|
+
// assertion purposes; create-path tags still propagate to child resources (Lambda,
|
|
7
|
+
// log group) via CDK's standard tag propagation.
|
|
8
|
+
export class CrossAccountDelegationRecord extends Construct {
|
|
9
|
+
record;
|
|
10
|
+
description;
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id);
|
|
13
|
+
this.description =
|
|
14
|
+
props.description ??
|
|
15
|
+
`Fjall-managed cross-account delegation for ${props.delegatedZoneName} in parent ${props.parentHostedZoneName}`;
|
|
16
|
+
this.record = new CdkCrossAccountZoneDelegationRecord(this, "Record", {
|
|
17
|
+
delegationRole: props.delegationRole,
|
|
18
|
+
delegatedZone: props.delegatedZone,
|
|
19
|
+
parentHostedZoneName: props.parentHostedZoneName
|
|
20
|
+
});
|
|
21
|
+
Tags.of(this).add("fjall:description", this.description);
|
|
22
|
+
Tags.of(this).add("fjall:costAllocation:environment", props.costAllocationEnvironment ?? "management");
|
|
23
|
+
Tags.of(this).add("fjall:costAllocation:service", "crossAccountDelegation");
|
|
24
|
+
Tags.of(this).add("fjall:costAllocation:domain", props.costAllocationDomain ?? props.delegatedZoneName);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { ARecord as CdkARecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface ARecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly values: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class ARecord extends Construct {
|
|
8
|
+
readonly record: CdkARecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: ARecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { ARecord as CdkARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class ARecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("A", this.fqdn);
|
|
12
|
+
this.record = new CdkARecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
target: RecordTarget.fromIpAddresses(...props.values),
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { AaaaRecord as CdkAaaaRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface AaaaRecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly values: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class AaaaRecord extends Construct {
|
|
8
|
+
readonly record: CdkAaaaRecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: AaaaRecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { AaaaRecord as CdkAaaaRecord, RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class AaaaRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description =
|
|
12
|
+
props.description ?? defaultDnsComment("AAAA", this.fqdn);
|
|
13
|
+
this.record = new CdkAaaaRecord(this, "Record", {
|
|
14
|
+
zone: props.zone,
|
|
15
|
+
recordName: this.fqdn,
|
|
16
|
+
target: RecordTarget.fromIpAddresses(...props.values),
|
|
17
|
+
ttl: resolveTtl(props.ttl),
|
|
18
|
+
comment: this.description
|
|
19
|
+
});
|
|
20
|
+
applyDnsRecordTags(this, props);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { ARecord as CdkARecord, type IAliasRecordTarget } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface AliasRecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly target: IAliasRecordTarget;
|
|
6
|
+
}
|
|
7
|
+
export declare class AliasRecord extends Construct {
|
|
8
|
+
readonly record: CdkARecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: AliasRecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { ARecord as CdkARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn } from "./dnsRecordBase.js";
|
|
4
|
+
export class AliasRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description =
|
|
12
|
+
props.description ?? defaultDnsComment("alias", this.fqdn);
|
|
13
|
+
// Route53 ignores TTL on ALIAS records — the target dictates caching behaviour,
|
|
14
|
+
// so we deliberately do not forward props.ttl to the underlying CDK resource.
|
|
15
|
+
this.record = new CdkARecord(this, "Record", {
|
|
16
|
+
zone: props.zone,
|
|
17
|
+
recordName: this.fqdn,
|
|
18
|
+
target: RecordTarget.fromAlias(props.target),
|
|
19
|
+
comment: this.description
|
|
20
|
+
});
|
|
21
|
+
applyDnsRecordTags(this, props);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CaaRecord as CdkCaaRecord, type CaaTag } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface CaaRecordValue {
|
|
5
|
+
readonly flag: number;
|
|
6
|
+
readonly tag: CaaTag;
|
|
7
|
+
readonly value: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CaaRecordProps extends DnsRecordCommonProps {
|
|
10
|
+
readonly values: CaaRecordValue[];
|
|
11
|
+
}
|
|
12
|
+
export declare class CaaRecord extends Construct {
|
|
13
|
+
readonly record: CdkCaaRecord;
|
|
14
|
+
readonly description: string;
|
|
15
|
+
readonly fqdn: string;
|
|
16
|
+
constructor(scope: Construct, id: string, props: CaaRecordProps);
|
|
17
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CaaRecord as CdkCaaRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class CaaRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("CAA", this.fqdn);
|
|
12
|
+
this.record = new CdkCaaRecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
values: props.values,
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CnameRecord as CdkCnameRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface CnameRecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly domainName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class CnameRecord extends Construct {
|
|
8
|
+
readonly record: CdkCnameRecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: CnameRecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CnameRecord as CdkCnameRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class CnameRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description =
|
|
12
|
+
props.description ?? defaultDnsComment("CNAME", this.fqdn);
|
|
13
|
+
this.record = new CdkCnameRecord(this, "Record", {
|
|
14
|
+
zone: props.zone,
|
|
15
|
+
recordName: this.fqdn,
|
|
16
|
+
domainName: props.domainName,
|
|
17
|
+
ttl: resolveTtl(props.ttl),
|
|
18
|
+
comment: this.description
|
|
19
|
+
});
|
|
20
|
+
applyDnsRecordTags(this, props);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import { type Construct } from "constructs";
|
|
3
|
+
import type { IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
4
|
+
export interface DnsRecordCommonProps {
|
|
5
|
+
readonly zone: IHostedZone;
|
|
6
|
+
readonly zoneName: string;
|
|
7
|
+
readonly recordName: string;
|
|
8
|
+
readonly ttl?: number;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly costAllocationEnvironment?: string;
|
|
11
|
+
readonly costAllocationDomain?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const DEFAULT_DNS_TTL_SECONDS = 300;
|
|
14
|
+
export declare function resolveFqdn(zoneName: string, recordName: string): string;
|
|
15
|
+
export declare function resolveTtl(ttlSeconds: number | undefined): Duration;
|
|
16
|
+
export declare function defaultDnsComment(recordType: string, fqdn: string): string;
|
|
17
|
+
export declare function applyDnsRecordTags(construct: Construct, props: Pick<DnsRecordCommonProps, "zoneName" | "costAllocationEnvironment" | "costAllocationDomain">): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Duration, Tags } from "aws-cdk-lib";
|
|
2
|
+
import { DNS_APEX } from "@fjall/util";
|
|
3
|
+
export const DEFAULT_DNS_TTL_SECONDS = 300;
|
|
4
|
+
export function resolveFqdn(zoneName, recordName) {
|
|
5
|
+
return recordName === DNS_APEX ? zoneName : `${recordName}.${zoneName}`;
|
|
6
|
+
}
|
|
7
|
+
export function resolveTtl(ttlSeconds) {
|
|
8
|
+
return Duration.seconds(ttlSeconds ?? DEFAULT_DNS_TTL_SECONDS);
|
|
9
|
+
}
|
|
10
|
+
export function defaultDnsComment(recordType, fqdn) {
|
|
11
|
+
return `Fjall-managed ${recordType} record for ${fqdn}`;
|
|
12
|
+
}
|
|
13
|
+
export function applyDnsRecordTags(construct, props) {
|
|
14
|
+
Tags.of(construct).add("fjall:costAllocation:environment", props.costAllocationEnvironment ?? "management");
|
|
15
|
+
Tags.of(construct).add("fjall:costAllocation:service", "dnsRecord");
|
|
16
|
+
Tags.of(construct).add("fjall:costAllocation:domain", props.costAllocationDomain ?? props.zoneName);
|
|
17
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ARecord, type ARecordProps } from "./aRecord.js";
|
|
2
|
+
export { AaaaRecord, type AaaaRecordProps } from "./aaaaRecord.js";
|
|
3
|
+
export { CnameRecord, type CnameRecordProps } from "./cnameRecord.js";
|
|
4
|
+
export { MxRecord, type MxRecordProps, type MxRecordValue } from "./mxRecord.js";
|
|
5
|
+
export { TxtRecord, type TxtRecordProps } from "./txtRecord.js";
|
|
6
|
+
export { NsRecord, type NsRecordProps } from "./nsRecord.js";
|
|
7
|
+
export { SrvRecord, type SrvRecordProps, type SrvRecordValue } from "./srvRecord.js";
|
|
8
|
+
export { CaaRecord, type CaaRecordProps, type CaaRecordValue } from "./caaRecord.js";
|
|
9
|
+
export { AliasRecord, type AliasRecordProps } from "./aliasRecord.js";
|
|
10
|
+
export { DEFAULT_DNS_TTL_SECONDS, type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ARecord } from "./aRecord.js";
|
|
2
|
+
export { AaaaRecord } from "./aaaaRecord.js";
|
|
3
|
+
export { CnameRecord } from "./cnameRecord.js";
|
|
4
|
+
export { MxRecord } from "./mxRecord.js";
|
|
5
|
+
export { TxtRecord } from "./txtRecord.js";
|
|
6
|
+
export { NsRecord } from "./nsRecord.js";
|
|
7
|
+
export { SrvRecord } from "./srvRecord.js";
|
|
8
|
+
export { CaaRecord } from "./caaRecord.js";
|
|
9
|
+
export { AliasRecord } from "./aliasRecord.js";
|
|
10
|
+
export { DEFAULT_DNS_TTL_SECONDS } from "./dnsRecordBase.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { MxRecord as CdkMxRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface MxRecordValue {
|
|
5
|
+
readonly hostName: string;
|
|
6
|
+
readonly priority: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MxRecordProps extends DnsRecordCommonProps {
|
|
9
|
+
readonly values: MxRecordValue[];
|
|
10
|
+
}
|
|
11
|
+
export declare class MxRecord extends Construct {
|
|
12
|
+
readonly record: CdkMxRecord;
|
|
13
|
+
readonly description: string;
|
|
14
|
+
readonly fqdn: string;
|
|
15
|
+
constructor(scope: Construct, id: string, props: MxRecordProps);
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { MxRecord as CdkMxRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class MxRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("MX", this.fqdn);
|
|
12
|
+
this.record = new CdkMxRecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
values: props.values,
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { NsRecord as CdkNsRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface NsRecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly values: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class NsRecord extends Construct {
|
|
8
|
+
readonly record: CdkNsRecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: NsRecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { NsRecord as CdkNsRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class NsRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("NS", this.fqdn);
|
|
12
|
+
this.record = new CdkNsRecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
values: props.values,
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { SrvRecord as CdkSrvRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface SrvRecordValue {
|
|
5
|
+
readonly hostName: string;
|
|
6
|
+
readonly priority: number;
|
|
7
|
+
readonly weight: number;
|
|
8
|
+
readonly port: number;
|
|
9
|
+
}
|
|
10
|
+
export interface SrvRecordProps extends DnsRecordCommonProps {
|
|
11
|
+
readonly values: SrvRecordValue[];
|
|
12
|
+
}
|
|
13
|
+
export declare class SrvRecord extends Construct {
|
|
14
|
+
readonly record: CdkSrvRecord;
|
|
15
|
+
readonly description: string;
|
|
16
|
+
readonly fqdn: string;
|
|
17
|
+
constructor(scope: Construct, id: string, props: SrvRecordProps);
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { SrvRecord as CdkSrvRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class SrvRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("SRV", this.fqdn);
|
|
12
|
+
this.record = new CdkSrvRecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
values: props.values,
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { TxtRecord as CdkTxtRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
|
|
4
|
+
export interface TxtRecordProps extends DnsRecordCommonProps {
|
|
5
|
+
readonly values: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class TxtRecord extends Construct {
|
|
8
|
+
readonly record: CdkTxtRecord;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly fqdn: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: TxtRecordProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { TxtRecord as CdkTxtRecord } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
|
|
4
|
+
export class TxtRecord extends Construct {
|
|
5
|
+
record;
|
|
6
|
+
description;
|
|
7
|
+
fqdn;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
this.fqdn = resolveFqdn(props.zoneName, props.recordName);
|
|
11
|
+
this.description = props.description ?? defaultDnsComment("TXT", this.fqdn);
|
|
12
|
+
this.record = new CdkTxtRecord(this, "Record", {
|
|
13
|
+
zone: props.zone,
|
|
14
|
+
recordName: this.fqdn,
|
|
15
|
+
values: props.values,
|
|
16
|
+
ttl: resolveTtl(props.ttl),
|
|
17
|
+
comment: this.description
|
|
18
|
+
});
|
|
19
|
+
applyDnsRecordTags(this, props);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Construct } from "constructs";
|
|
2
2
|
import { type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
3
|
-
import type { DomainApexProps } from "../../../utils/domainTypes";
|
|
3
|
+
import type { DomainApexProps } from "../../../utils/domainTypes.js";
|
|
4
4
|
export declare class Domain extends Construct {
|
|
5
5
|
readonly hostedZoneId: string;
|
|
6
6
|
readonly hostedZone: IHostedZone;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CfnOutput, Fn } from "aws-cdk-lib";
|
|
3
|
+
import { toPascalCase, getSafeZoneName } from "../../../utils/capitaliseString.js";
|
|
4
|
+
import { Role } from "../iam/index.js";
|
|
5
|
+
import { OrganizationPrincipal, PolicyDocument, PolicyStatement } from "aws-cdk-lib/aws-iam";
|
|
6
|
+
import { HostedZone as AWSHostedZone } from "aws-cdk-lib/aws-route53";
|
|
7
|
+
import { getDomainExportNames, addDnsRecords } from "../../../utils/domainTypes.js";
|
|
8
|
+
import { DomainCertificate } from "./domainCertificate.js";
|
|
9
|
+
export class Domain extends Construct {
|
|
10
|
+
hostedZoneId;
|
|
11
|
+
hostedZone;
|
|
12
|
+
zoneName;
|
|
13
13
|
constructor(scope, id, props) {
|
|
14
14
|
super(scope, id);
|
|
15
15
|
this.zoneName = props.zoneName;
|
|
16
16
|
if (!props.hostedZoneId) {
|
|
17
|
-
const createdZone = new
|
|
17
|
+
const createdZone = new AWSHostedZone(this, `${getSafeZoneName(props.zoneName)}HostedZone`, {
|
|
18
18
|
zoneName: props.zoneName,
|
|
19
19
|
comment: `Hosted Zone for ${props.zoneName}`
|
|
20
20
|
});
|
|
@@ -25,14 +25,14 @@ class Domain extends constructs_1.Construct {
|
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
27
|
this.hostedZoneId = props.hostedZoneId;
|
|
28
|
-
this.hostedZone =
|
|
28
|
+
this.hostedZone = AWSHostedZone.fromHostedZoneAttributes(this, `${getSafeZoneName(props.zoneName)}ImportedHostedZone`, {
|
|
29
29
|
hostedZoneId: props.hostedZoneId,
|
|
30
30
|
zoneName: props.zoneName
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
this.addZoneIdOutput();
|
|
34
34
|
if (props.records) {
|
|
35
|
-
|
|
35
|
+
addDnsRecords(this, this.hostedZone, this.zoneName, props.records);
|
|
36
36
|
}
|
|
37
37
|
if (props.certificates) {
|
|
38
38
|
this.addCertificates(props.certificates);
|
|
@@ -40,22 +40,22 @@ class Domain extends constructs_1.Construct {
|
|
|
40
40
|
}
|
|
41
41
|
addDelegationRole(zone) {
|
|
42
42
|
const domainLabel = this.zoneName.split(".")[0] ?? "default";
|
|
43
|
-
const safeDomainLabel =
|
|
44
|
-
const role = new
|
|
45
|
-
assumedBy: new
|
|
43
|
+
const safeDomainLabel = toPascalCase(domainLabel);
|
|
44
|
+
const role = new Role(this, `${safeDomainLabel}DelegateHostedZoneRole`, {
|
|
45
|
+
assumedBy: new OrganizationPrincipal(Fn.importValue("OrganisationId")),
|
|
46
46
|
roleName: `${domainLabel}DelegateHostedZoneRole`,
|
|
47
47
|
inlinePolicies: {
|
|
48
|
-
["listHostedZones"]: new
|
|
48
|
+
["listHostedZones"]: new PolicyDocument({
|
|
49
49
|
statements: [
|
|
50
|
-
new
|
|
50
|
+
new PolicyStatement({
|
|
51
51
|
actions: ["route53:ListHostedZonesByName"],
|
|
52
52
|
resources: ["*"]
|
|
53
53
|
})
|
|
54
54
|
]
|
|
55
55
|
}),
|
|
56
|
-
["changeResourceRecordSets"]: new
|
|
56
|
+
["changeResourceRecordSets"]: new PolicyDocument({
|
|
57
57
|
statements: [
|
|
58
|
-
new
|
|
58
|
+
new PolicyStatement({
|
|
59
59
|
actions: ["route53:ChangeResourceRecordSets"],
|
|
60
60
|
resources: [`arn:aws:route53:::hostedzone/${zone.hostedZoneId}`]
|
|
61
61
|
})
|
|
@@ -64,33 +64,33 @@ class Domain extends constructs_1.Construct {
|
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
66
|
zone.grantDelegation(role);
|
|
67
|
-
new
|
|
67
|
+
new CfnOutput(this, `${safeDomainLabel}DelegateHostedZoneRoleArn`, {
|
|
68
68
|
key: `${safeDomainLabel}DelegateHostedZoneRoleArn`,
|
|
69
69
|
value: role.roleArn,
|
|
70
70
|
exportName: `${domainLabel}DelegateHostedZoneRoleArn`
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
addZoneIdOutput() {
|
|
74
|
-
const safeKey =
|
|
75
|
-
const exports =
|
|
76
|
-
new
|
|
74
|
+
const safeKey = toPascalCase(getSafeZoneName(this.zoneName));
|
|
75
|
+
const exports = getDomainExportNames(this.zoneName);
|
|
76
|
+
new CfnOutput(this, `${safeKey}HostedZoneId`, {
|
|
77
77
|
key: `${safeKey}HostedZoneId`,
|
|
78
78
|
value: this.hostedZoneId,
|
|
79
79
|
exportName: exports.hostedZoneId
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
addNameserverOutput(zone) {
|
|
83
|
-
const safeKey =
|
|
84
|
-
new
|
|
83
|
+
const safeKey = toPascalCase(getSafeZoneName(this.zoneName));
|
|
84
|
+
new CfnOutput(this, `${safeKey}Nameservers`, {
|
|
85
85
|
key: `${safeKey}Nameservers`,
|
|
86
|
-
value:
|
|
86
|
+
value: Fn.join(",", zone.hostedZoneNameServers ?? [])
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
addCertificates(certificates) {
|
|
90
|
-
const safeZone =
|
|
90
|
+
const safeZone = toPascalCase(getSafeZoneName(this.zoneName));
|
|
91
91
|
certificates.forEach((cert, index) => {
|
|
92
|
-
const safeCertName =
|
|
93
|
-
new
|
|
92
|
+
const safeCertName = toPascalCase(cert.domainName.split(".").join(""));
|
|
93
|
+
new DomainCertificate(this, `${safeZone}${safeCertName}Cert${index}`, {
|
|
94
94
|
domainName: cert.domainName,
|
|
95
95
|
subjectAlternativeNames: cert.subjectAlternativeNames,
|
|
96
96
|
hostedZone: this.hostedZone
|
|
@@ -98,5 +98,3 @@ class Domain extends constructs_1.Construct {
|
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
exports.Domain = Domain;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy9kb21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUE0QztBQUM1QyxzRUFBZ0Y7QUFDaEYsZ0NBQThCO0FBQzlCLGlEQUk2QjtBQUM3Qix5REFHaUM7QUFLakMsNERBR29DO0FBQ3BDLDJEQUF3RDtBQUV4RCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUtuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBYSxDQUNuQyxJQUFJLEVBQ0osR0FBRyxJQUFBLGtDQUFlLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQzlDO2dCQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQWEsQ0FBQyx3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QyxJQUFBLGtDQUFlLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sYUFBYSxFQUFFO1lBQzNDLEdBQUcsRUFBRSxHQUFHLE9BQU8sYUFBYTtZQUM1QixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFnQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFZLEVBQUMsSUFBQSxrQ0FBZSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxHQUFHLFlBQVksT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNyRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsSEQsd0JBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSwgZ2V0U2FmZVpvbmVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQge1xuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIEhvc3RlZFpvbmUgYXMgQVdTSG9zdGVkWm9uZSxcbiAgdHlwZSBJSG9zdGVkWm9uZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRG9tYWluQXBleFByb3BzLFxuICBDZXJ0aWZpY2F0ZUlucHV0XG59IGZyb20gXCIuLi8uLi8uLi91dGlscy9kb21haW5UeXBlc1wiO1xuaW1wb3J0IHtcbiAgZ2V0RG9tYWluRXhwb3J0TmFtZXMsXG4gIGFkZERuc1JlY29yZHNcbn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5pbXBvcnQgeyBEb21haW5DZXJ0aWZpY2F0ZSB9IGZyb20gXCIuL2RvbWFpbkNlcnRpZmljYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBEb21haW4gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBob3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5BcGV4UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy56b25lTmFtZSA9IHByb3BzLnpvbmVOYW1lO1xuXG4gICAgaWYgKCFwcm9wcy5ob3N0ZWRab25lSWQpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SG9zdGVkWm9uZWAsXG4gICAgICAgIHtcbiAgICAgICAgICB6b25lTmFtZTogcHJvcHMuem9uZU5hbWUsXG4gICAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3Byb3BzLnpvbmVOYW1lfWBcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IGNyZWF0ZWRab25lO1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSBjcmVhdGVkWm9uZS5ob3N0ZWRab25lSWQ7XG4gICAgICB0aGlzLmFkZERlbGVnYXRpb25Sb2xlKGNyZWF0ZWRab25lKTtcbiAgICAgIHRoaXMuYWRkTmFtZXNlcnZlck91dHB1dChjcmVhdGVkWm9uZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5ob3N0ZWRab25lID0gQVdTSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgICAge1xuICAgICAgICAgIGhvc3RlZFpvbmVJZDogcHJvcHMuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiBwcm9wcy56b25lTmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkWm9uZUlkT3V0cHV0KCk7XG5cbiAgICBpZiAocHJvcHMucmVjb3Jkcykge1xuICAgICAgYWRkRG5zUmVjb3Jkcyh0aGlzLCB0aGlzLmhvc3RlZFpvbmUsIHRoaXMuem9uZU5hbWUsIHByb3BzLnJlY29yZHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jZXJ0aWZpY2F0ZXMpIHtcbiAgICAgIHRoaXMuYWRkQ2VydGlmaWNhdGVzKHByb3BzLmNlcnRpZmljYXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWxlZ2F0aW9uUm9sZSh6b25lOiBBV1NIb3N0ZWRab25lKSB7XG4gICAgY29uc3QgZG9tYWluTGFiZWwgPSB0aGlzLnpvbmVOYW1lLnNwbGl0KFwiLlwiKVswXSA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBzYWZlRG9tYWluTGFiZWwgPSB0b1Bhc2NhbENhc2UoZG9tYWluTGFiZWwpO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7em9uZS5ob3N0ZWRab25lSWR9YF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgem9uZS5ncmFudERlbGVnYXRpb24ocm9sZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCwge1xuICAgICAga2V5OiBgJHtzYWZlRG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmAsXG4gICAgICB2YWx1ZTogcm9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7ZG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkWm9uZUlkT3V0cHV0KCkge1xuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2UoZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpKTtcbiAgICBjb25zdCBleHBvcnRzID0gZ2V0RG9tYWluRXhwb3J0TmFtZXModGhpcy56b25lTmFtZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsXG4gICAgICB2YWx1ZTogdGhpcy5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBleHBvcnRzLmhvc3RlZFpvbmVJZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROYW1lc2VydmVyT3V0cHV0KHpvbmU6IEFXU0hvc3RlZFpvbmUpIHtcbiAgICBjb25zdCBzYWZlS2V5ID0gdG9QYXNjYWxDYXNlKGdldFNhZmVab25lTmFtZSh0aGlzLnpvbmVOYW1lKSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLCB7XG4gICAgICBrZXk6IGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLFxuICAgICAgdmFsdWU6IEZuLmpvaW4oXCIsXCIsIHpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzID8/IFtdKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzOiBDZXJ0aWZpY2F0ZUlucHV0W10pIHtcbiAgICBjb25zdCBzYWZlWm9uZSA9IHRvUGFzY2FsQ2FzZShnZXRTYWZlWm9uZU5hbWUodGhpcy56b25lTmFtZSkpO1xuXG4gICAgY2VydGlmaWNhdGVzLmZvckVhY2goKGNlcnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzYWZlQ2VydE5hbWUgPSB0b1Bhc2NhbENhc2UoY2VydC5kb21haW5OYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpKTtcbiAgICAgIG5ldyBEb21haW5DZXJ0aWZpY2F0ZSh0aGlzLCBgJHtzYWZlWm9uZX0ke3NhZmVDZXJ0TmFtZX1DZXJ0JHtpbmRleH1gLCB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGNlcnQuZG9tYWluTmFtZSxcbiAgICAgICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IGNlcnQuc3ViamVjdEFsdGVybmF0aXZlTmFtZXMsXG4gICAgICAgIGhvc3RlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,12 +2,17 @@ import { Construct } from "constructs";
|
|
|
2
2
|
import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
3
3
|
import { type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
4
4
|
export interface DomainCertificateProps {
|
|
5
|
-
domainName: string;
|
|
6
|
-
subjectAlternativeNames?: string[];
|
|
7
|
-
hostedZone: IHostedZone;
|
|
5
|
+
readonly domainName: string;
|
|
6
|
+
readonly subjectAlternativeNames?: string[];
|
|
7
|
+
readonly hostedZone: IHostedZone;
|
|
8
|
+
readonly description?: string;
|
|
9
|
+
readonly transparencyLogging?: boolean;
|
|
10
|
+
readonly costAllocationEnvironment?: string;
|
|
11
|
+
readonly costAllocationDomain?: string;
|
|
8
12
|
}
|
|
9
13
|
export declare class DomainCertificate extends Construct {
|
|
10
14
|
readonly certificate: Certificate;
|
|
11
15
|
readonly certificateArn: string;
|
|
16
|
+
readonly description: string;
|
|
12
17
|
constructor(scope: Construct, id: string, props: DomainCertificateProps);
|
|
13
18
|
}
|