@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
|
@@ -1,44 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { CfnOutput, Stack } from "aws-cdk-lib";
|
|
2
|
+
import { EcrDefaultImage, DefaultEventBus, SharedAlarmTopic } from "../../config/aws/index.js";
|
|
3
|
+
import { ManagementEventsTrail } from "../../config/aws/cloudTrail.js";
|
|
4
|
+
import { OidcConnector } from "../../config/aws/oidcConnector.js";
|
|
5
|
+
import { AccountMonitoringRole } from "../../config/aws/accountMonitoringRole.js";
|
|
6
|
+
import { AccountAuditRole } from "../../config/aws/accountAuditRole.js";
|
|
7
|
+
import { getConfig } from "../../utils/getConfig.js";
|
|
8
|
+
import { DisasterRecovery } from "../../config/aws/disasterRecovery.js";
|
|
9
|
+
import { S3BlockPublicAccess } from "../../config/aws/s3BlockPublicAccess.js";
|
|
10
|
+
import { EbsDefaultEncryption } from "../../config/aws/ebsDefaultEncryption.js";
|
|
11
|
+
import { ConfigRulePreset } from "../../config/aws/configRulePreset.js";
|
|
12
|
+
import { GuardDutyDetector } from "../../config/aws/guardDutyDetector.js";
|
|
13
|
+
import { SecurityHubHub } from "../../config/aws/securityHubHub.js";
|
|
14
|
+
import { ConfigRecorder } from "../../config/aws/configRecorder.js";
|
|
15
|
+
import { AccountAccessAnalyser } from "../../config/aws/accessAnalyser.js";
|
|
16
|
+
import { InspectorEnablement } from "../../config/aws/inspectorEnablement.js";
|
|
17
|
+
export class Account extends Stack {
|
|
18
|
+
organisationType = "account";
|
|
19
|
+
resolvedRegion;
|
|
13
20
|
constructor(scope, id, props) {
|
|
14
|
-
const config =
|
|
21
|
+
const config = getConfig();
|
|
15
22
|
const accountId = props.accountId ?? config.accountId;
|
|
16
23
|
const region = props.region ?? config.region;
|
|
17
24
|
if (!accountId) {
|
|
18
25
|
throw new Error("Account requires an account ID. Provide it via accountId or ensure CDK context includes accountId.");
|
|
19
26
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.resolvedRegion = region;
|
|
27
|
+
const env = props.env ?? { region, account: accountId };
|
|
28
|
+
super(scope, id, { ...props, env });
|
|
29
|
+
this.resolvedRegion = region ?? this.region;
|
|
23
30
|
const orgId = this.node.tryGetContext("orgId");
|
|
24
31
|
if (orgId) {
|
|
25
|
-
new
|
|
32
|
+
new CfnOutput(this, "OrganisationIdOutput", {
|
|
26
33
|
key: "OrganisationId",
|
|
27
34
|
value: orgId,
|
|
28
35
|
exportName: "OrganisationId"
|
|
29
36
|
});
|
|
30
37
|
}
|
|
31
|
-
new
|
|
38
|
+
new CfnOutput(this, "AccountIdOutput", {
|
|
32
39
|
key: "AccountId",
|
|
33
40
|
value: this.account,
|
|
34
41
|
exportName: "AccountId",
|
|
35
42
|
description: "AWS Account ID for this account"
|
|
36
43
|
});
|
|
37
|
-
const eventBus = new
|
|
44
|
+
const eventBus = new DefaultEventBus(this, "EventBus");
|
|
45
|
+
new SharedAlarmTopic(this, "AlarmTopic");
|
|
46
|
+
const isStandaloneAccount = this.constructor === Account;
|
|
38
47
|
const ipamPoolId = this.node.tryGetContext("ipamPoolId");
|
|
39
|
-
if (
|
|
40
|
-
const regionSuffix =
|
|
41
|
-
new
|
|
48
|
+
if (isStandaloneAccount && ipamPoolId && this.resolvedRegion) {
|
|
49
|
+
const regionSuffix = this.resolvedRegion.replace(/-/g, "");
|
|
50
|
+
new CfnOutput(this, "IpamPoolIdOutput", {
|
|
42
51
|
key: `IpamPoolId${accountId}${regionSuffix}`,
|
|
43
52
|
value: ipamPoolId,
|
|
44
53
|
exportName: `IpamPoolId${accountId}${regionSuffix}`
|
|
@@ -46,41 +55,59 @@ class Account extends aws_cdk_lib_1.Stack {
|
|
|
46
55
|
}
|
|
47
56
|
const fjallOrgId = this.node.tryGetContext("fjallOrgId");
|
|
48
57
|
const oidcAlreadyConfigured = this.node.tryGetContext("fjallOidcConfigured") === "true";
|
|
49
|
-
if (
|
|
50
|
-
new
|
|
58
|
+
if (isStandaloneAccount && fjallOrgId && !oidcAlreadyConfigured) {
|
|
59
|
+
new OidcConnector(this, "OidcConnector", { fjallOrgId });
|
|
51
60
|
}
|
|
52
61
|
// Per-account monitoring role (unconditional; ExternalId added when orgId known)
|
|
53
|
-
new
|
|
62
|
+
new AccountMonitoringRole(this, "MonitoringRole", fjallOrgId ? { fjallOrgId } : undefined);
|
|
54
63
|
// Per-account audit role (conditional on fjallOrgId)
|
|
55
64
|
if (fjallOrgId) {
|
|
56
|
-
new
|
|
65
|
+
new AccountAuditRole(this, "AuditRole", { fjallOrgId });
|
|
57
66
|
}
|
|
58
|
-
new
|
|
67
|
+
new ManagementEventsTrail(this, "CloudTrail", {
|
|
59
68
|
accountId: this.account,
|
|
60
69
|
region
|
|
61
70
|
});
|
|
62
|
-
new
|
|
71
|
+
new EcrDefaultImage(this, "EcrDefaultImage", {
|
|
63
72
|
region,
|
|
64
73
|
accountId: this.account,
|
|
65
74
|
eventBusArn: eventBus.defaultEventBusArn.value
|
|
66
75
|
});
|
|
67
|
-
const environment = config.environment
|
|
76
|
+
const environment = config.environment ?? "unknown";
|
|
68
77
|
if (config.disasterRecoveryRegion) {
|
|
69
78
|
const isComplianceAccount = environment === "compliance";
|
|
70
79
|
if (environment === "production" || isComplianceAccount) {
|
|
71
|
-
new
|
|
80
|
+
new DisasterRecovery(this, "DisasterRecovery", {
|
|
72
81
|
region,
|
|
73
82
|
accountId
|
|
74
83
|
});
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
|
-
new
|
|
86
|
+
new CfnOutput(this, "Environment", {
|
|
78
87
|
key: "Environment",
|
|
79
88
|
value: environment,
|
|
80
89
|
exportName: "Environment",
|
|
81
90
|
description: "Environment type for this account (e.g., production, staging, development)"
|
|
82
91
|
});
|
|
92
|
+
new S3BlockPublicAccess(this, "S3BlockPublicAccess");
|
|
93
|
+
new EbsDefaultEncryption(this, "EbsDefaultEncryption");
|
|
94
|
+
}
|
|
95
|
+
enableGuardDuty(props) {
|
|
96
|
+
return new GuardDutyDetector(this, "GuardDuty", props);
|
|
97
|
+
}
|
|
98
|
+
enableSecurityHub(props) {
|
|
99
|
+
return new SecurityHubHub(this, "SecurityHub", props);
|
|
100
|
+
}
|
|
101
|
+
enableConfigRecorder(props) {
|
|
102
|
+
return new ConfigRecorder(this, "ConfigRecorder", props);
|
|
103
|
+
}
|
|
104
|
+
enableAccessAnalyser() {
|
|
105
|
+
return new AccountAccessAnalyser(this, "AccessAnalyser");
|
|
106
|
+
}
|
|
107
|
+
enableInspector() {
|
|
108
|
+
return new InspectorEnablement(this, "Inspector");
|
|
109
|
+
}
|
|
110
|
+
enableConfigRules(props) {
|
|
111
|
+
return new ConfigRulePreset(this, "ConfigRules", props);
|
|
83
112
|
}
|
|
84
113
|
}
|
|
85
|
-
exports.Account = Account;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0U7QUFDaEUsMENBQW9FO0FBRXBFLDREQUFvRTtBQUNwRSxrRUFBK0Q7QUFDL0Qsa0ZBQStFO0FBQy9FLHdFQUFxRTtBQUNyRSxxREFBa0Q7QUFDbEQsd0VBQXFFO0FBUXJFLE1BQWEsT0FBUSxTQUFRLG1CQUFLO0lBSWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBUyxHQUFFLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBZFYscUJBQWdCLEdBQXFCLFNBQVMsQ0FBQztRQWdCN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQzFDLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUks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dCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEVjckRlZmF1bHRJbWFnZSwgRGVmYXVsdEV2ZW50QnVzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3NcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1hbmFnZW1lbnRFdmVudHNUcmFpbCB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2Nsb3VkVHJhaWxcIjtcbmltcG9ydCB7IE9pZGNDb25uZWN0b3IgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9vaWRjQ29ubmVjdG9yXCI7XG5pbXBvcnQgeyBBY2NvdW50TW9uaXRvcmluZ1JvbGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9hY2NvdW50TW9uaXRvcmluZ1JvbGVcIjtcbmltcG9ydCB7IEFjY291bnRBdWRpdFJvbGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9hY2NvdW50QXVkaXRSb2xlXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5pbXBvcnQgeyBEaXNhc3RlclJlY292ZXJ5IH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvZGlzYXN0ZXJSZWNvdmVyeVwiO1xuaW1wb3J0IHR5cGUgeyBPcmdhbmlzYXRpb25UeXBlIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9vcmdhbmlzYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50UHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50IGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgb3JnYW5pc2F0aW9uVHlwZTogT3JnYW5pc2F0aW9uVHlwZSA9IFwiYWNjb3VudFwiO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb2x2ZWRSZWdpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWNjb3VudFByb3BzKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgYWNjb3VudElkID0gcHJvcHMuYWNjb3VudElkID8/IGNvbmZpZy5hY2NvdW50SWQ7XG4gICAgY29uc3QgcmVnaW9uID0gcHJvcHMucmVnaW9uID8/IGNvbmZpZy5yZWdpb247XG5cbiAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkFjY291bnQgcmVxdWlyZXMgYW4gYWNjb3VudCBJRC4gUHJvdmlkZSBpdCB2aWEgYWNjb3VudElkIG9yIGVuc3VyZSBDREsgY29udGV4dCBpbmNsdWRlcyBhY2NvdW50SWQuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJlc29sdmVkUmVnaW9uID0gcmVnaW9uO1xuXG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcIm9yZ0lkXCIpO1xuICAgIGlmIChvcmdJZCkge1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIk9yZ2FuaXNhdGlvbklkT3V0cHV0XCIsIHtcbiAgICAgICAga2V5OiBcIk9yZ2FuaXNhdGlvbklkXCIsXG4gICAgICAgIHZhbHVlOiBvcmdJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogXCJPcmdhbmlzYXRpb25JZFwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQWNjb3VudElkT3V0cHV0XCIsIHtcbiAgICAgIGtleTogXCJBY2NvdW50SWRcIixcbiAgICAgIHZhbHVlOiB0aGlzLmFjY291bnQsXG4gICAgICBleHBvcnROYW1lOiBcIkFjY291bnRJZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQVdTIEFjY291bnQgSUQgZm9yIHRoaXMgYWNjb3VudFwiXG4gICAgfSk7XG5cbiAgICBjb25zdCBldmVudEJ1cyA9IG5ldyBEZWZhdWx0RXZlbnRCdXModGhpcywgXCJFdmVudEJ1c1wiKTtcblxuICAgIGNvbnN0IGlwYW1Qb29sSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImlwYW1Qb29sSWRcIik7XG4gICAgaWYgKGlkID09PSBcIkFjY291bnRcIiAmJiBpcGFtUG9vbElkKSB7XG4gICAgICBjb25zdCByZWdpb25TdWZmaXggPSByZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKTtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJJcGFtUG9vbElkT3V0cHV0XCIsIHtcbiAgICAgICAga2V5OiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgIHZhbHVlOiBpcGFtUG9vbElkLFxuICAgICAgICBleHBvcnROYW1lOiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWBcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZqYWxsT3JnSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImZqYWxsT3JnSWRcIik7XG4gICAgY29uc3Qgb2lkY0FscmVhZHlDb25maWd1cmVkID1cbiAgICAgIHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwiZmphbGxPaWRjQ29uZmlndXJlZFwiKSA9PT0gXCJ0cnVlXCI7XG4gICAgaWYgKGlkID09PSBcIkFjY291bnRcIiAmJiBmamFsbE9yZ0lkICYmICFvaWRjQWxyZWFkeUNvbmZpZ3VyZWQpIHtcbiAgICAgIG5ldyBPaWRjQ29ubmVjdG9yKHRoaXMsIFwiT2lkY0Nvbm5lY3RvclwiLCB7IGZqYWxsT3JnSWQgfSk7XG4gICAgfVxuXG4gICAgLy8gUGVyLWFjY291bnQgbW9uaXRvcmluZyByb2xlICh1bmNvbmRpdGlvbmFsOyBFeHRlcm5hbElkIGFkZGVkIHdoZW4gb3JnSWQga25vd24pXG4gICAgbmV3IEFjY291bnRNb25pdG9yaW5nUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICBcIk1vbml0b3JpbmdSb2xlXCIsXG4gICAgICBmamFsbE9yZ0lkID8geyBmamFsbE9yZ0lkIH0gOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgLy8gUGVyLWFjY291bnQgYXVkaXQgcm9sZSAoY29uZGl0aW9uYWwgb24gZmphbGxPcmdJZClcbiAgICBpZiAoZmphbGxPcmdJZCkge1xuICAgICAgbmV3IEFjY291bnRBdWRpdFJvbGUodGhpcywgXCJBdWRpdFJvbGVcIiwgeyBmamFsbE9yZ0lkIH0pO1xuICAgIH1cblxuICAgIG5ldyBNYW5hZ2VtZW50RXZlbnRzVHJhaWwodGhpcywgXCJDbG91ZFRyYWlsXCIsIHtcbiAgICAgIGFjY291bnRJZDogdGhpcy5hY2NvdW50LFxuICAgICAgcmVnaW9uXG4gICAgfSk7XG5cbiAgICBuZXcgRWNyRGVmYXVsdEltYWdlKHRoaXMsIFwiRWNyRGVmYXVsdEltYWdlXCIsIHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIGFjY291bnRJZDogdGhpcy5hY2NvdW50LFxuICAgICAgZXZlbnRCdXNBcm46IGV2ZW50QnVzLmRlZmF1bHRFdmVudEJ1c0Fybi52YWx1ZVxuICAgIH0pO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBjb25maWcuZW52aXJvbm1lbnQgfHwgXCJ1bmtub3duXCI7XG5cbiAgICBpZiAoY29uZmlnLmRpc2FzdGVyUmVjb3ZlcnlSZWdpb24pIHtcbiAgICAgIGNvbnN0IGlzQ29tcGxpYW5jZUFjY291bnQgPSBlbnZpcm9ubWVudCA9PT0gXCJjb21wbGlhbmNlXCI7XG5cbiAgICAgIGlmIChlbnZpcm9ubWVudCA9PT0gXCJwcm9kdWN0aW9uXCIgfHwgaXNDb21wbGlhbmNlQWNjb3VudCkge1xuICAgICAgICBuZXcgRGlzYXN0ZXJSZWNvdmVyeSh0aGlzLCBcIkRpc2FzdGVyUmVjb3ZlcnlcIiwge1xuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBhY2NvdW50SWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkVudmlyb25tZW50XCIsIHtcbiAgICAgIGtleTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgdmFsdWU6IGVudmlyb25tZW50LFxuICAgICAgZXhwb3J0TmFtZTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRW52aXJvbm1lbnQgdHlwZSBmb3IgdGhpcyBhY2NvdW50IChlLmcuLCBwcm9kdWN0aW9uLCBzdGFnaW5nLCBkZXZlbG9wbWVudClcIlxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Construct } from "constructs";
|
|
2
|
+
import type { IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import type { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
+
import type { ManualRecord, Route53ApexProps, SubdomainDelegation } from "./interfaces/domain.js";
|
|
5
|
+
export interface ApexDomainPatternResult {
|
|
6
|
+
readonly hostedZone: IHostedZone;
|
|
7
|
+
readonly certificates: Map<string, ICertificate>;
|
|
8
|
+
readonly nameServers: string[] | undefined;
|
|
9
|
+
readonly manualRecords: ManualRecord[];
|
|
10
|
+
readonly delegations: SubdomainDelegation[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Composition for `registrar: "route53"`. Creates (or imports) the apex
|
|
14
|
+
* `HostedZone`, wires child-account delegations via `NsRecord` (pointing at
|
|
15
|
+
* each child's nameservers published as exports), and composes all user
|
|
16
|
+
* records + certificates.
|
|
17
|
+
*
|
|
18
|
+
* Delegation mechanism: the child Fjall account scaffolds its own
|
|
19
|
+
* `HostedZone`, and the parent simply writes NS records pointing at the
|
|
20
|
+
* child's nameservers (Fn.importValue of the child stack's nameservers
|
|
21
|
+
* output). This differs from the legacy `DomainDelegation` pattern, which
|
|
22
|
+
* uses `CrossAccountZoneDelegationRecord` to create the child HZ from the
|
|
23
|
+
* parent via IAM assume-role. Both patterns are valid for their respective
|
|
24
|
+
* semantics — see R10 in the Phase 1 plan.
|
|
25
|
+
*/
|
|
26
|
+
export declare function composeApexDomain(scope: Construct, props: Route53ApexProps): ApexDomainPatternResult;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Fn } from "aws-cdk-lib";
|
|
2
|
+
import { getDomainExportNames } from "@fjall/util";
|
|
3
|
+
import { HostedZone } from "../../resources/aws/networking/hostedZone.js";
|
|
4
|
+
import { DomainCertificate } from "../../resources/aws/networking/domainCertificate.js";
|
|
5
|
+
import { NsRecord } from "../../resources/aws/networking/dnsRecord/index.js";
|
|
6
|
+
import { composeTypedDnsRecords } from "./dnsRecordComposer.js";
|
|
7
|
+
import { toPascalCase, getSafeZoneName } from "../../utils/capitaliseString.js";
|
|
8
|
+
/**
|
|
9
|
+
* Composition for `registrar: "route53"`. Creates (or imports) the apex
|
|
10
|
+
* `HostedZone`, wires child-account delegations via `NsRecord` (pointing at
|
|
11
|
+
* each child's nameservers published as exports), and composes all user
|
|
12
|
+
* records + certificates.
|
|
13
|
+
*
|
|
14
|
+
* Delegation mechanism: the child Fjall account scaffolds its own
|
|
15
|
+
* `HostedZone`, and the parent simply writes NS records pointing at the
|
|
16
|
+
* child's nameservers (Fn.importValue of the child stack's nameservers
|
|
17
|
+
* output). This differs from the legacy `DomainDelegation` pattern, which
|
|
18
|
+
* uses `CrossAccountZoneDelegationRecord` to create the child HZ from the
|
|
19
|
+
* parent via IAM assume-role. Both patterns are valid for their respective
|
|
20
|
+
* semantics — see R10 in the Phase 1 plan.
|
|
21
|
+
*/
|
|
22
|
+
export function composeApexDomain(scope, props) {
|
|
23
|
+
const safeZone = toPascalCase(getSafeZoneName(props.zoneName));
|
|
24
|
+
const hostedZoneConstruct = new HostedZone(scope, `${safeZone}HostedZone`, {
|
|
25
|
+
zoneName: props.zoneName,
|
|
26
|
+
hostedZoneId: props.hostedZoneId,
|
|
27
|
+
// Only create the delegation role on the create path; imported zones do
|
|
28
|
+
// not manage IAM themselves.
|
|
29
|
+
createDelegationRole: props.hostedZoneId === undefined,
|
|
30
|
+
costAllocationEnvironment: props.costAllocationEnvironment,
|
|
31
|
+
costAllocationDomain: props.zoneName
|
|
32
|
+
});
|
|
33
|
+
const certificates = new Map();
|
|
34
|
+
(props.certificates ?? []).forEach((cert, index) => {
|
|
35
|
+
const normalised = normaliseCertificate(cert);
|
|
36
|
+
const safeCertName = toPascalCase(normalised.domainName.split(".").join(""));
|
|
37
|
+
const dc = new DomainCertificate(scope, `${safeZone}${safeCertName}Cert${index}`, {
|
|
38
|
+
domainName: normalised.domainName,
|
|
39
|
+
subjectAlternativeNames: normalised.subjectAlternativeNames,
|
|
40
|
+
transparencyLogging: normalised.transparencyLogging,
|
|
41
|
+
hostedZone: hostedZoneConstruct.hostedZone,
|
|
42
|
+
costAllocationEnvironment: props.costAllocationEnvironment,
|
|
43
|
+
costAllocationDomain: props.zoneName
|
|
44
|
+
});
|
|
45
|
+
certificates.set(normalised.domainName, dc.certificate);
|
|
46
|
+
});
|
|
47
|
+
if (props.records && props.records.length > 0) {
|
|
48
|
+
composeTypedDnsRecords(scope, hostedZoneConstruct.hostedZone, props.zoneName, props.records);
|
|
49
|
+
}
|
|
50
|
+
const delegations = props.delegations ?? [];
|
|
51
|
+
delegations.forEach((delegation, index) => {
|
|
52
|
+
const childZoneName = `${delegation.subdomain}.${props.zoneName}`;
|
|
53
|
+
const safeChild = toPascalCase(getSafeZoneName(childZoneName));
|
|
54
|
+
const childExports = getDomainExportNames(childZoneName);
|
|
55
|
+
// The child account's stack publishes the hosted-zone nameservers under a
|
|
56
|
+
// predictable output key (Phase 0 HostedZone emits `{safeZone}Nameservers`
|
|
57
|
+
// as a joined comma-separated string — we split it back at deploy time
|
|
58
|
+
// via Fn.split). The child HZ id import is declared as a cross-phase
|
|
59
|
+
// dependency — if the child stack has not deployed, CFN fails at deploy.
|
|
60
|
+
const nameserversExportName = childExports.hostedZoneId.replace(/-hosted-zone-id$/, "-nameservers");
|
|
61
|
+
const nameserversToken = Fn.importValue(nameserversExportName);
|
|
62
|
+
new NsRecord(scope, `${safeZone}Delegation${safeChild}${index}`, {
|
|
63
|
+
zone: hostedZoneConstruct.hostedZone,
|
|
64
|
+
zoneName: props.zoneName,
|
|
65
|
+
recordName: delegation.subdomain,
|
|
66
|
+
// Fn.split returns a list token suitable for a multi-value NS record.
|
|
67
|
+
values: Fn.split(",", nameserversToken)
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
hostedZone: hostedZoneConstruct.hostedZone,
|
|
72
|
+
certificates,
|
|
73
|
+
// Name servers are only available on the create path — imported zones
|
|
74
|
+
// were pre-provisioned and CDK has no view of their NS set at synth.
|
|
75
|
+
nameServers: hostedZoneConstruct.isImported
|
|
76
|
+
? undefined
|
|
77
|
+
: (hostedZoneConstruct.nameServers ?? undefined),
|
|
78
|
+
manualRecords: [],
|
|
79
|
+
delegations
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function normaliseCertificate(cert) {
|
|
83
|
+
if (typeof cert === "string") {
|
|
84
|
+
return { domainName: cert };
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
domainName: cert.domainName,
|
|
88
|
+
subjectAlternativeNames: cert.subjectAlternativeNames,
|
|
89
|
+
transparencyLogging: cert.transparencyLogging
|
|
90
|
+
};
|
|
91
|
+
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const app_1 = require("../../app");
|
|
6
|
-
const auditRole_1 = require("../../resources/aws/audit/auditRole");
|
|
7
|
-
const audit_1 = require("../../config/audit");
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import App from "../../app.js";
|
|
3
|
+
import AuditRoleFactory from "../../resources/aws/audit/auditRole.js";
|
|
4
|
+
import { FJALL_AUDIT_CONFIG } from "../../config/audit.js";
|
|
8
5
|
/**
|
|
9
6
|
* High-level pattern for adding CloudQuery audit capabilities to an application.
|
|
10
7
|
*
|
|
@@ -24,21 +21,23 @@ const audit_1 = require("../../config/audit");
|
|
|
24
21
|
* app.addCompute(/* ... *\/);
|
|
25
22
|
* ```
|
|
26
23
|
*/
|
|
27
|
-
class AuditRole extends
|
|
24
|
+
export class AuditRole extends Construct {
|
|
25
|
+
role;
|
|
26
|
+
externalId;
|
|
28
27
|
constructor(scope, id, props) {
|
|
29
28
|
super(scope, id);
|
|
30
29
|
// Get the App instance to access the network stack
|
|
31
|
-
const app = scope instanceof
|
|
30
|
+
const app = scope instanceof App ? scope : App.getInstance();
|
|
32
31
|
const networkStack = app.getDefaultNetworkStack();
|
|
33
32
|
// Generate or use provided external ID
|
|
34
33
|
this.externalId = props?.externalId || this.generateExternalId(app);
|
|
35
34
|
// Create the audit role using the factory
|
|
36
|
-
this.role =
|
|
37
|
-
webappAccountId: props?.webappAccountId ||
|
|
35
|
+
this.role = AuditRoleFactory.build(`${app["name"]}AuditRole`, {
|
|
36
|
+
webappAccountId: props?.webappAccountId || FJALL_AUDIT_CONFIG.webappAwsAccountId,
|
|
38
37
|
appName: app["name"],
|
|
39
38
|
externalId: this.externalId,
|
|
40
|
-
roleNamePrefix:
|
|
41
|
-
rolePath:
|
|
39
|
+
roleNamePrefix: FJALL_AUDIT_CONFIG.roleNamePrefix,
|
|
40
|
+
rolePath: FJALL_AUDIT_CONFIG.rolePath
|
|
42
41
|
})(app, networkStack.getStack());
|
|
43
42
|
// Register the role with the network stack
|
|
44
43
|
networkStack.addConstruct(this.role);
|
|
@@ -53,6 +52,4 @@ class AuditRole extends constructs_1.Construct {
|
|
|
53
52
|
return `fjall-audit-${appName.toLowerCase()}-${timestamp}`;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
|
|
57
|
-
exports.default = AuditRole;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9hdWRpdFJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLG1DQUE0QjtBQUM1QixtRUFBbUU7QUFDbkUsOENBQXdEO0FBZ0J4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFJdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1EQUFtRDtRQUNuRCxNQUFNLEdBQUcsR0FBRyxLQUFLLFlBQVksYUFBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVsRCx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRSwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUM1RCxlQUFlLEVBQ2IsS0FBSyxFQUFFLGVBQWUsSUFBSSwwQkFBa0IsQ0FBQyxrQkFBa0I7WUFDakUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGNBQWMsRUFBRSwwQkFBa0IsQ0FBQyxjQUFjO1lBQ2pELFFBQVEsRUFBRSwwQkFBa0IsQ0FBQyxRQUFRO1NBQ3RDLENBQUMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFakMsMkNBQTJDO1FBQzNDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxHQUFRO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsT0FBTyxlQUFlLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyQ0QsOEJBcUNDO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgUm9sZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcbmltcG9ydCBBdWRpdFJvbGVGYWN0b3J5IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2F1ZGl0L2F1ZGl0Um9sZVwiO1xuaW1wb3J0IHsgRkpBTExfQVVESVRfQ09ORklHIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hdWRpdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0Um9sZVByb3BzIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IEZqYWxsIHdlYmFwcCBhY2NvdW50IElEXG4gICAqIERlZmF1bHRzIHRvIHRoZSBhY2NvdW50IElEIHNwZWNpZmllZCBpbiBGSkFMTF9BVURJVF9DT05GSUdcbiAgICovXG4gIHdlYmFwcEFjY291bnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkgd2hlbiBhc3N1bWluZyB0aGUgcm9sZVxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgdW5pcXVlIGV4dGVybmFsIElEIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhpZ2gtbGV2ZWwgcGF0dGVybiBmb3IgYWRkaW5nIENsb3VkUXVlcnkgYXVkaXQgY2FwYWJpbGl0aWVzIHRvIGFuIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIGNyb3NzLWFjY291bnQgSUFNIHJvbGUgdGhhdCBncmFudHMgdGhlIEZqYWxsIHBsYXRmb3JtIHJlYWQtb25seVxuICogYWNjZXNzIHRvIGFsbCBBV1MgcmVzb3VyY2VzIGZvciBzZWN1cml0eSBhdWRpdGluZyB2aWEgQ2xvdWRRdWVyeS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQXBwLCBBdWRpdFJvbGUgfSBmcm9tIFwiQGZqYWxsL2NvbXBvbmVudHMtaW5mcmFzdHJ1Y3R1cmVcIjtcbiAqXG4gKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKFwiTXlBcHBcIik7XG4gKlxuICogLy8gRXhwbGljaXQgb3B0LWluIHRvIGF1ZGl0IGNhcGFiaWxpdGllc1xuICogY29uc3QgYXVkaXRSb2xlID0gbmV3IEF1ZGl0Um9sZShhcHAsIFwiQXVkaXRSb2xlXCIpO1xuICpcbiAqIC8vIENvbnRpbnVlIHdpdGggbm9ybWFsIGFwcGxpY2F0aW9uIHNldHVwXG4gKiBhcHAuYWRkQ29tcHV0ZSgvKiAuLi4gKlxcLyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGl0Um9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZXJuYWxJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQXVkaXRSb2xlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gR2V0IHRoZSBBcHAgaW5zdGFuY2UgdG8gYWNjZXNzIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgY29uc3QgYXBwID0gc2NvcGUgaW5zdGFuY2VvZiBBcHAgPyBzY29wZSA6IEFwcC5nZXRJbnN0YW5jZSgpO1xuICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGFwcC5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG5cbiAgICAvLyBHZW5lcmF0ZSBvciB1c2UgcHJvdmlkZWQgZXh0ZXJuYWwgSURcbiAgICB0aGlzLmV4dGVybmFsSWQgPSBwcm9wcz8uZXh0ZXJuYWxJZCB8fCB0aGlzLmdlbmVyYXRlRXh0ZXJuYWxJZChhcHApO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBhdWRpdCByb2xlIHVzaW5nIHRoZSBmYWN0b3J5XG4gICAgdGhpcy5yb2xlID0gQXVkaXRSb2xlRmFjdG9yeS5idWlsZChgJHthcHBbXCJuYW1lXCJdfUF1ZGl0Um9sZWAsIHtcbiAgICAgIHdlYmFwcEFjY291bnRJZDpcbiAgICAgICAgcHJvcHM/LndlYmFwcEFjY291bnRJZCB8fCBGSkFMTF9BVURJVF9DT05GSUcud2ViYXBwQXdzQWNjb3VudElkLFxuICAgICAgYXBwTmFtZTogYXBwW1wibmFtZVwiXSxcbiAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZXh0ZXJuYWxJZCxcbiAgICAgIHJvbGVOYW1lUHJlZml4OiBGSkFMTF9BVURJVF9DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICByb2xlUGF0aDogRkpBTExfQVVESVRfQ09ORklHLnJvbGVQYXRoXG4gICAgfSkoYXBwLCBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKSk7XG5cbiAgICAvLyBSZWdpc3RlciB0aGUgcm9sZSB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgbmV0d29ya1N0YWNrLmFkZENvbnN0cnVjdCh0aGlzLnJvbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgdW5pcXVlIGV4dGVybmFsIElEIGZvciB0aGlzIGFwcGxpY2F0aW9uXG4gICAqIEZvcm1hdDogZmphbGwtYXVkaXQte2FwcE5hbWV9LXt0aW1lc3RhbXB9XG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlRXh0ZXJuYWxJZChhcHA6IEFwcCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwTmFtZSA9IGFwcFtcIm5hbWVcIl07XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gYGZqYWxsLWF1ZGl0LSR7YXBwTmFtZS50b0xvd2VyQ2FzZSgpfS0ke3RpbWVzdGFtcH1gO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEF1ZGl0Um9sZTtcbiJdfQ==
|
|
55
|
+
export default AuditRole;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type StackProps, Stack } from "aws-cdk-lib";
|
|
2
2
|
import { InstanceType } from "aws-cdk-lib/aws-ec2";
|
|
3
3
|
import { type Construct } from "constructs";
|
|
4
|
-
import { type KeyValue } from "../../types";
|
|
4
|
+
import { type KeyValue } from "../../types.js";
|
|
5
5
|
declare enum agentRelease {
|
|
6
6
|
STABLE = "stable",
|
|
7
7
|
BETA = "beta",
|