@fjall/components-infrastructure 0.89.5 → 0.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class SNSTopic extends constructs_1.Construct {
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CfnOutput } from "aws-cdk-lib";
|
|
3
|
+
import { Topic } from "aws-cdk-lib/aws-sns";
|
|
4
|
+
import { toRemovalPolicy } from "./utils.js";
|
|
5
|
+
export class SNSTopic extends Construct {
|
|
6
|
+
id;
|
|
7
|
+
topic;
|
|
9
8
|
constructor(scope, id, props) {
|
|
10
9
|
super(scope, id);
|
|
11
10
|
this.id = id;
|
|
@@ -15,7 +14,7 @@ class SNSTopic extends constructs_1.Construct {
|
|
|
15
14
|
? `${props.topicName}.fifo`
|
|
16
15
|
: props.topicName
|
|
17
16
|
: undefined;
|
|
18
|
-
this.topic = new
|
|
17
|
+
this.topic = new Topic(this, `${id}Topic`, {
|
|
19
18
|
topicName,
|
|
20
19
|
displayName: props.displayName,
|
|
21
20
|
fifo: isFifo,
|
|
@@ -23,13 +22,13 @@ class SNSTopic extends constructs_1.Construct {
|
|
|
23
22
|
? (props.contentBasedDeduplication ?? true)
|
|
24
23
|
: undefined
|
|
25
24
|
});
|
|
26
|
-
this.topic.applyRemovalPolicy(
|
|
27
|
-
new
|
|
25
|
+
this.topic.applyRemovalPolicy(toRemovalPolicy(props.removalPolicy));
|
|
26
|
+
new CfnOutput(this, `${id}TopicArn`, {
|
|
28
27
|
key: `${id}TopicArn`,
|
|
29
28
|
value: this.topic.topicArn,
|
|
30
29
|
description: `SNS topic ARN for ${id}`
|
|
31
30
|
});
|
|
32
|
-
new
|
|
31
|
+
new CfnOutput(this, `${id}TopicName`, {
|
|
33
32
|
key: `${id}TopicName`,
|
|
34
33
|
value: this.topic.topicName,
|
|
35
34
|
description: `SNS topic name for ${id}`
|
|
@@ -66,5 +65,3 @@ class SNSTopic extends constructs_1.Construct {
|
|
|
66
65
|
return this.topic.grantSubscribe(grantee);
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
|
-
exports.SNSTopic = SNSTopic;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL3Nucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQXdDO0FBQ3hDLGlEQUF5RDtBQUV6RCxtQ0FBMEM7QUFVMUMsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFJckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVM7WUFDL0IsQ0FBQyxDQUFDLE1BQU07Z0JBQ04sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsT0FBTztnQkFDM0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQ25CLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ3pDLFNBQVM7WUFDVCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsSUFBSSxFQUFFLE1BQU07WUFDWix5QkFBeUIsRUFBRSxNQUFNO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBQSx1QkFBZSxFQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRXBFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMxQixXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRTtTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7WUFDcEMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDM0IsV0FBVyxFQUFFLHNCQUFzQixFQUFFLEVBQUU7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxPQUFtQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxPQUFtQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXpFRCw0QkF5RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUb3BpYywgdHlwZSBJVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNuc1wiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHRvUmVtb3ZhbFBvbGljeSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU05TVG9waWNQcm9wcyB7XG4gIHRvcGljTmFtZT86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIGZpZm8/OiBib29sZWFuO1xuICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uPzogYm9vbGVhbjtcbiAgcmVtb3ZhbFBvbGljeT86IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcbn1cblxuZXhwb3J0IGNsYXNzIFNOU1RvcGljIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9waWM6IFRvcGljO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTTlNUb3BpY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICBjb25zdCBpc0ZpZm8gPSBwcm9wcy5maWZvID09PSB0cnVlO1xuICAgIGNvbnN0IHRvcGljTmFtZSA9IHByb3BzLnRvcGljTmFtZVxuICAgICAgPyBpc0ZpZm9cbiAgICAgICAgPyBgJHtwcm9wcy50b3BpY05hbWV9LmZpZm9gXG4gICAgICAgIDogcHJvcHMudG9waWNOYW1lXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMudG9waWMgPSBuZXcgVG9waWModGhpcywgYCR7aWR9VG9waWNgLCB7XG4gICAgICB0b3BpY05hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogcHJvcHMuZGlzcGxheU5hbWUsXG4gICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOiBpc0ZpZm9cbiAgICAgICAgPyAocHJvcHMuY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiA/PyB0cnVlKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy50b3BpYy5hcHBseVJlbW92YWxQb2xpY3kodG9SZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9VG9waWNBcm5gLCB7XG4gICAgICBrZXk6IGAke2lkfVRvcGljQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLnRvcGljLnRvcGljQXJuLFxuICAgICAgZGVzY3JpcHRpb246IGBTTlMgdG9waWMgQVJOIGZvciAke2lkfWBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9VG9waWNOYW1lYCwge1xuICAgICAga2V5OiBgJHtpZH1Ub3BpY05hbWVgLFxuICAgICAgdmFsdWU6IHRoaXMudG9waWMudG9waWNOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBTTlMgdG9waWMgbmFtZSBmb3IgJHtpZH1gXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTTlMgdG9waWMgQVJOLlxuICAgKi9cbiAgcHVibGljIGdldFRvcGljQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9waWMudG9waWNBcm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTTlMgdG9waWMgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXRUb3BpY05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b3BpYy50b3BpY05hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIENESyBUb3BpYyBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9waWMoKTogSVRvcGljIHtcbiAgICByZXR1cm4gdGhpcy50b3BpYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdWJsaXNoIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50UHVibGlzaChncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnRvcGljLmdyYW50UHVibGlzaChncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzdWJzY3JpYmUgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTdWJzY3JpYmUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy50b3BpYy5ncmFudFN1YnNjcmliZShncmFudGVlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
7
|
-
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CfnOutput, Duration } from "aws-cdk-lib";
|
|
3
|
+
import { toPascalCase } from "../../../utils/capitaliseString.js";
|
|
4
|
+
import { Queue, QueueEncryption, FifoThroughputLimit, DeduplicationScope } from "aws-cdk-lib/aws-sqs";
|
|
5
|
+
import { toRemovalPolicy } from "./utils.js";
|
|
9
6
|
/**
|
|
10
7
|
* AWS SQS service limits and defaults.
|
|
11
8
|
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-quotas.html
|
|
@@ -45,24 +42,24 @@ const SQS_LIMITS = {
|
|
|
45
42
|
MAX_SIZE: 10
|
|
46
43
|
}
|
|
47
44
|
};
|
|
48
|
-
|
|
45
|
+
export { SQS_LIMITS };
|
|
49
46
|
function toEncryption(encryption) {
|
|
50
47
|
switch (encryption) {
|
|
51
48
|
case "SSE_KMS":
|
|
52
|
-
return
|
|
49
|
+
return QueueEncryption.KMS;
|
|
53
50
|
case "NONE":
|
|
54
|
-
return
|
|
51
|
+
return QueueEncryption.UNENCRYPTED;
|
|
55
52
|
case "SSE_SQS":
|
|
56
53
|
default:
|
|
57
|
-
return
|
|
54
|
+
return QueueEncryption.SQS_MANAGED;
|
|
58
55
|
}
|
|
59
56
|
}
|
|
60
57
|
function toFifoThroughputLimit(limit) {
|
|
61
58
|
switch (limit) {
|
|
62
59
|
case "perQueue":
|
|
63
|
-
return
|
|
60
|
+
return FifoThroughputLimit.PER_QUEUE;
|
|
64
61
|
case "perMessageGroupId":
|
|
65
|
-
return
|
|
62
|
+
return FifoThroughputLimit.PER_MESSAGE_GROUP_ID;
|
|
66
63
|
default:
|
|
67
64
|
return undefined;
|
|
68
65
|
}
|
|
@@ -70,19 +67,22 @@ function toFifoThroughputLimit(limit) {
|
|
|
70
67
|
function toDeduplicationScope(scope) {
|
|
71
68
|
switch (scope) {
|
|
72
69
|
case "queue":
|
|
73
|
-
return
|
|
70
|
+
return DeduplicationScope.QUEUE;
|
|
74
71
|
case "messageGroup":
|
|
75
|
-
return
|
|
72
|
+
return DeduplicationScope.MESSAGE_GROUP;
|
|
76
73
|
default:
|
|
77
74
|
return undefined;
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
|
-
class SQSQueue extends
|
|
77
|
+
export class SQSQueue extends Construct {
|
|
78
|
+
id;
|
|
79
|
+
queue;
|
|
80
|
+
dlq;
|
|
81
81
|
constructor(scope, id, props) {
|
|
82
82
|
super(scope, id);
|
|
83
83
|
this.id = id;
|
|
84
84
|
// Sanitise id for CloudFormation output keys (must be alphanumeric)
|
|
85
|
-
const outputName =
|
|
85
|
+
const outputName = toPascalCase(id);
|
|
86
86
|
const isFifo = props.queueType === "fifo";
|
|
87
87
|
const queueName = props.queueName
|
|
88
88
|
? isFifo
|
|
@@ -105,45 +105,45 @@ class SQSQueue extends constructs_1.Construct {
|
|
|
105
105
|
? `${props.queueName}-dlq.fifo`
|
|
106
106
|
: `${props.queueName}-dlq`
|
|
107
107
|
: undefined;
|
|
108
|
-
this.dlq = new
|
|
108
|
+
this.dlq = new Queue(this, `${id}DeadLetterQueue`, {
|
|
109
109
|
queueName: dlqName,
|
|
110
110
|
fifo: isFifo,
|
|
111
111
|
encryption: toEncryption(props.encryption),
|
|
112
|
-
retentionPeriod:
|
|
113
|
-
removalPolicy:
|
|
112
|
+
retentionPeriod: Duration.days(SQS_LIMITS.DEAD_LETTER_QUEUE.DEFAULT_RETENTION_DAYS),
|
|
113
|
+
removalPolicy: toRemovalPolicy(props.removalPolicy)
|
|
114
114
|
});
|
|
115
115
|
deadLetterQueue = {
|
|
116
116
|
queue: this.dlq,
|
|
117
117
|
maxReceiveCount: props.deadLetterQueue.maxReceiveCount ??
|
|
118
118
|
SQS_LIMITS.DEAD_LETTER_QUEUE.DEFAULT_RECEIVE_COUNT
|
|
119
119
|
};
|
|
120
|
-
new
|
|
120
|
+
new CfnOutput(this, `${outputName}DeadLetterQueueUrl`, {
|
|
121
121
|
key: `${outputName}DeadLetterQueueUrl`,
|
|
122
122
|
value: this.dlq.queueUrl,
|
|
123
123
|
description: `Dead letter queue URL for ${id}`
|
|
124
124
|
});
|
|
125
|
-
new
|
|
125
|
+
new CfnOutput(this, `${outputName}DeadLetterQueueArn`, {
|
|
126
126
|
key: `${outputName}DeadLetterQueueArn`,
|
|
127
127
|
value: this.dlq.queueArn,
|
|
128
128
|
description: `Dead letter queue ARN for ${id}`
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
this.queue = new
|
|
132
|
+
this.queue = new Queue(this, `${id}Queue`, {
|
|
133
133
|
queueName,
|
|
134
134
|
fifo: isFifo,
|
|
135
135
|
visibilityTimeout: props.visibilityTimeout
|
|
136
|
-
?
|
|
136
|
+
? Duration.seconds(props.visibilityTimeout)
|
|
137
137
|
: undefined,
|
|
138
138
|
retentionPeriod: props.messageRetentionPeriod
|
|
139
|
-
?
|
|
139
|
+
? Duration.seconds(props.messageRetentionPeriod)
|
|
140
140
|
: undefined,
|
|
141
141
|
receiveMessageWaitTime: props.receiveMessageWaitTime
|
|
142
|
-
?
|
|
142
|
+
? Duration.seconds(props.receiveMessageWaitTime)
|
|
143
143
|
: undefined,
|
|
144
144
|
maxMessageSizeBytes: props.maxMessageSize,
|
|
145
145
|
deliveryDelay: props.deliveryDelay
|
|
146
|
-
?
|
|
146
|
+
? Duration.seconds(props.deliveryDelay)
|
|
147
147
|
: undefined,
|
|
148
148
|
deadLetterQueue,
|
|
149
149
|
encryption: toEncryption(props.encryption),
|
|
@@ -156,19 +156,19 @@ class SQSQueue extends constructs_1.Construct {
|
|
|
156
156
|
deduplicationScope: isFifo
|
|
157
157
|
? toDeduplicationScope(props.deduplicationScope)
|
|
158
158
|
: undefined,
|
|
159
|
-
removalPolicy:
|
|
159
|
+
removalPolicy: toRemovalPolicy(props.removalPolicy)
|
|
160
160
|
});
|
|
161
|
-
new
|
|
161
|
+
new CfnOutput(this, `${outputName}QueueUrl`, {
|
|
162
162
|
key: `${outputName}QueueUrl`,
|
|
163
163
|
value: this.queue.queueUrl,
|
|
164
164
|
description: `SQS queue URL for ${id}`
|
|
165
165
|
});
|
|
166
|
-
new
|
|
166
|
+
new CfnOutput(this, `${outputName}QueueArn`, {
|
|
167
167
|
key: `${outputName}QueueArn`,
|
|
168
168
|
value: this.queue.queueArn,
|
|
169
169
|
description: `SQS queue ARN for ${id}`
|
|
170
170
|
});
|
|
171
|
-
new
|
|
171
|
+
new CfnOutput(this, `${outputName}QueueName`, {
|
|
172
172
|
key: `${outputName}QueueName`,
|
|
173
173
|
value: this.queue.queueName,
|
|
174
174
|
description: `SQS queue name for ${id}`
|
|
@@ -230,5 +230,3 @@ class SQSQueue extends constructs_1.Construct {
|
|
|
230
230
|
return this.queue.grantConsumeMessages(grantee);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
exports.SQSQueue = SQSQueue;
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL3Nxcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQWtEO0FBQ2xELHNFQUErRDtBQUMvRCxpREFPNkI7QUFFN0IsbUNBQTBDO0FBRTFDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGtCQUFrQixFQUFFO1FBQ2xCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1FBQy9CLGVBQWUsRUFBRSxFQUFFO0tBQ3BCO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsV0FBVyxFQUFFLEVBQUUsRUFBRSxXQUFXO1FBQzVCLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVTtRQUNoQyxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVM7UUFDbEMsWUFBWSxFQUFFLENBQUM7S0FDaEI7SUFDRCxLQUFLLEVBQUU7UUFDTCxXQUFXLEVBQUUsQ0FBQztRQUNkLFdBQVcsRUFBRSxHQUFHLENBQUMsYUFBYTtLQUMvQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsV0FBVyxFQUFFLEVBQUU7S0FDaEI7SUFDRCxZQUFZLEVBQUU7UUFDWixTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztLQUM1QjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLHNCQUFzQixFQUFFLEVBQUU7S0FDM0I7SUFDRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsQ0FBQztRQUNYLFFBQVEsRUFBRSxFQUFFO0tBQ2I7Q0FDTyxDQUFDO0FBRUYsZ0NBQVU7QUF1Qm5CLFNBQVMsWUFBWSxDQUNuQixVQUEyQztJQUUz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QUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFuTEQsNEJBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jYXBpdGFsaXNlU3RyaW5nXCI7XG5pbXBvcnQge1xuICBRdWV1ZSxcbiAgdHlwZSBJUXVldWUsXG4gIHR5cGUgRGVhZExldHRlclF1ZXVlLFxuICBRdWV1ZUVuY3J5cHRpb24sXG4gIEZpZm9UaHJvdWdocHV0TGltaXQsXG4gIERlZHVwbGljYXRpb25TY29wZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHRvUmVtb3ZhbFBvbGljeSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQVdTIFNRUyBzZXJ2aWNlIGxpbWl0cyBhbmQgZGVmYXVsdHMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NTaW1wbGVRdWV1ZVNlcnZpY2UvbGF0ZXN0L1NRU0RldmVsb3Blckd1aWRlL3Nxcy1xdW90YXMuaHRtbFxuICovXG5jb25zdCBTUVNfTElNSVRTID0ge1xuICBWSVNJQklMSVRZX1RJTUVPVVQ6IHtcbiAgICBNSU5fU0VDT05EUzogMCxcbiAgICBNQVhfU0VDT05EUzogNDMyMDAsIC8vIDEyIGhvdXJzXG4gICAgREVGQVVMVF9TRUNPTkRTOiAzMFxuICB9LFxuICBNRVNTQUdFX1JFVEVOVElPTjoge1xuICAgIE1JTl9TRUNPTkRTOiA2MCwgLy8gMSBtaW51dGVcbiAgICBNQVhfU0VDT05EUzogMTIwOTYwMCwgLy8gMTQgZGF5c1xuICAgIERFRkFVTFRfU0VDT05EUzogMzQ1NjAwLCAvLyA0IGRheXNcbiAgICBERUZBVUxUX0RBWVM6IDRcbiAgfSxcbiAgREVMQVk6IHtcbiAgICBNSU5fU0VDT05EUzogMCxcbiAgICBNQVhfU0VDT05EUzogOTAwIC8vIDE1IG1pbnV0ZXNcbiAgfSxcbiAgUkVDRUlWRV9XQUlUX1RJTUU6IHtcbiAgICBNSU5fU0VDT05EUzogMCxcbiAgICBNQVhfU0VDT05EUzogMjBcbiAgfSxcbiAgTUVTU0FHRV9TSVpFOiB7XG4gICAgTUlOX0JZVEVTOiAxLFxuICAgIE1BWF9CWVRFUzogMjYyMTQ0IC8vIDI1NiBLQlxuICB9LFxuICBERUFEX0xFVFRFUl9RVUVVRToge1xuICAgIE1JTl9SRUNFSVZFX0NPVU5UOiAxLFxuICAgIE1BWF9SRUNFSVZFX0NPVU5UOiAxMDAwLFxuICAgIERFRkFVTFRfUkVDRUlWRV9DT1VOVDogMyxcbiAgICBERUZBVUxUX1JFVEVOVElPTl9EQVlTOiAxNFxuICB9LFxuICBCQVRDSDoge1xuICAgIE1JTl9TSVpFOiAxLFxuICAgIE1BWF9TSVpFOiAxMFxuICB9XG59IGFzIGNvbnN0O1xuXG5leHBvcnQgeyBTUVNfTElNSVRTIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1FTUXVldWVQcm9wcyB7XG4gIHF1ZXVlTmFtZT86IHN0cmluZztcbiAgcXVldWVUeXBlPzogXCJzdGFuZGFyZFwiIHwgXCJmaWZvXCI7XG4gIHZpc2liaWxpdHlUaW1lb3V0PzogbnVtYmVyO1xuICBtZXNzYWdlUmV0ZW50aW9uUGVyaW9kPzogbnVtYmVyO1xuICByZWNlaXZlTWVzc2FnZVdhaXRUaW1lPzogbnVtYmVyO1xuICBtYXhNZXNzYWdlU2l6ZT86IG51bWJlcjtcbiAgZGVsaXZlcnlEZWxheT86IG51bWJlcjtcbiAgZGVhZExldHRlclF1ZXVlPzoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgbWF4UmVjZWl2ZUNvdW50PzogbnVtYmVyO1xuICAgIHF1ZXVlPzogSVF1ZXVlO1xuICB9O1xuICBlbmNyeXB0aW9uPzogXCJTU0VfU1FTXCIgfCBcIlNTRV9LTVNcIiB8IFwiTk9ORVwiO1xuICBrbXNLZXlBcm4/OiBzdHJpbmc7XG4gIGNvbnRlbnRCYXNlZERlZHVwbGljYXRpb24/OiBib29sZWFuO1xuICBmaWZvVGhyb3VnaHB1dExpbWl0PzogXCJwZXJRdWV1ZVwiIHwgXCJwZXJNZXNzYWdlR3JvdXBJZFwiO1xuICBkZWR1cGxpY2F0aW9uU2NvcGU/OiBcInF1ZXVlXCIgfCBcIm1lc3NhZ2VHcm91cFwiO1xuICByZW1vdmFsUG9saWN5PzogXCJERVNUUk9ZXCIgfCBcIlJFVEFJTlwiO1xufVxuXG5mdW5jdGlvbiB0b0VuY3J5cHRpb24oXG4gIGVuY3J5cHRpb24/OiBcIlNTRV9TUVNcIiB8IFwiU1NFX0tNU1wiIHwgXCJOT05FXCJcbik6IFF1ZXVlRW5jcnlwdGlvbiB7XG4gIHN3aXRjaCAoZW5jcnlwdGlvbikge1xuICAgIGNhc2UgXCJTU0VfS01TXCI6XG4gICAgICByZXR1cm4gUXVldWVFbmNyeXB0aW9uLktNUztcbiAgICBjYXNlIFwiTk9ORVwiOlxuICAgICAgcmV0dXJuIFF1ZXVlRW5jcnlwdGlvbi5VTkVOQ1JZUFRFRDtcbiAgICBjYXNlIFwiU1NFX1NRU1wiOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUXVldWVFbmNyeXB0aW9uLlNRU19NQU5BR0VEO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvRmlmb1Rocm91Z2hwdXRMaW1pdChcbiAgbGltaXQ/OiBcInBlclF1ZXVlXCIgfCBcInBlck1lc3NhZ2VHcm91cElkXCJcbik6IEZpZm9UaHJvdWdocHV0TGltaXQgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGxpbWl0KSB7XG4gICAgY2FzZSBcInBlclF1ZXVlXCI6XG4gICAgICByZXR1cm4gRmlmb1Rocm91Z2hwdXRMaW1pdC5QRVJfUVVFVUU7XG4gICAgY2FzZSBcInBlck1lc3NhZ2VHcm91cElkXCI6XG4gICAgICByZXR1cm4gRmlmb1Rocm91Z2hwdXRMaW1pdC5QRVJfTUVTU0FHRV9HUk9VUF9JRDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0RlZHVwbGljYXRpb25TY29wZShcbiAgc2NvcGU/OiBcInF1ZXVlXCIgfCBcIm1lc3NhZ2VHcm91cFwiXG4pOiBEZWR1cGxpY2F0aW9uU2NvcGUgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKHNjb3BlKSB7XG4gICAgY2FzZSBcInF1ZXVlXCI6XG4gICAgICByZXR1cm4gRGVkdXBsaWNhdGlvblNjb3BlLlFVRVVFO1xuICAgIGNhc2UgXCJtZXNzYWdlR3JvdXBcIjpcbiAgICAgIHJldHVybiBEZWR1cGxpY2F0aW9uU2NvcGUuTUVTU0FHRV9HUk9VUDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU1FTUXVldWUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBxdWV1ZTogUXVldWU7XG4gIHByaXZhdGUgZGxxPzogUXVldWU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNRU1F1ZXVlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcblxuICAgIC8vIFNhbml0aXNlIGlkIGZvciBDbG91ZEZvcm1hdGlvbiBvdXRwdXQga2V5cyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgY29uc3Qgb3V0cHV0TmFtZSA9IHRvUGFzY2FsQ2FzZShpZCk7XG5cbiAgICBjb25zdCBpc0ZpZm8gPSBwcm9wcy5xdWV1ZVR5cGUgPT09IFwiZmlmb1wiO1xuICAgIGNvbnN0IHF1ZXVlTmFtZSA9IHByb3BzLnF1ZXVlTmFtZVxuICAgICAgPyBpc0ZpZm9cbiAgICAgICAgPyBgJHtwcm9wcy5xdWV1ZU5hbWV9LmZpZm9gXG4gICAgICAgIDogcHJvcHMucXVldWVOYW1lXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIENyZWF0ZSBEZWFkIExldHRlciBRdWV1ZSBpZiBlbmFibGVkXG4gICAgbGV0IGRlYWRMZXR0ZXJRdWV1ZTogRGVhZExldHRlclF1ZXVlIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5kZWFkTGV0dGVyUXVldWU/LmVuYWJsZWQpIHtcbiAgICAgIGlmIChwcm9wcy5kZWFkTGV0dGVyUXVldWUucXVldWUpIHtcbiAgICAgICAgZGVhZExldHRlclF1ZXVlID0ge1xuICAgICAgICAgIHF1ZXVlOiBwcm9wcy5kZWFkTGV0dGVyUXVldWUucXVldWUsXG4gICAgICAgICAgbWF4UmVjZWl2ZUNvdW50OlxuICAgICAgICAgICAgcHJvcHMuZGVhZExldHRlclF1ZXVlLm1heFJlY2VpdmVDb3VudCA/P1xuICAgICAgICAgICAgU1FTX0xJTUlUUy5ERUFEX0xFVFRFUl9RVUVVRS5ERUZBVUxUX1JFQ0VJVkVfQ09VTlRcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRscU5hbWUgPSBxdWV1ZU5hbWVcbiAgICAgICAgICA/IGlzRmlmb1xuICAgICAgICAgICAgPyBgJHtwcm9wcy5xdWV1ZU5hbWV9LWRscS5maWZvYFxuICAgICAgICAgICAgOiBgJHtwcm9wcy5xdWV1ZU5hbWV9LWRscWBcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLmRscSA9IG5ldyBRdWV1ZSh0aGlzLCBgJHtpZH1EZWFkTGV0dGVyUXVldWVgLCB7XG4gICAgICAgICAgcXVldWVOYW1lOiBkbHFOYW1lLFxuICAgICAgICAgIGZpZm86IGlzRmlmbyxcbiAgICAgICAgICBlbmNyeXB0aW9uOiB0b0VuY3J5cHRpb24ocHJvcHMuZW5jcnlwdGlvbiksXG4gICAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKFxuICAgICAgICAgICAgU1FTX0xJTUlUUy5ERUFEX0xFVFRFUl9RVUVVRS5ERUZBVUxUX1JFVEVOVElPTl9EQVlTXG4gICAgICAgICAgKSxcbiAgICAgICAgICByZW1vdmFsUG9saWN5OiB0b1JlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVhZExldHRlclF1ZXVlID0ge1xuICAgICAgICAgIHF1ZXVlOiB0aGlzLmRscSxcbiAgICAgICAgICBtYXhSZWNlaXZlQ291bnQ6XG4gICAgICAgICAgICBwcm9wcy5kZWFkTGV0dGVyUXVldWUubWF4UmVjZWl2ZUNvdW50ID8/XG4gICAgICAgICAgICBTUVNfTElNSVRTLkRFQURfTEVUVEVSX1FVRVVFLkRFRkFVTFRfUkVDRUlWRV9DT1VOVFxuICAgICAgICB9O1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7b3V0cHV0TmFtZX1EZWFkTGV0dGVyUXVldWVVcmxgLCB7XG4gICAgICAgICAga2V5OiBgJHtvdXRwdXROYW1lfURlYWRMZXR0ZXJRdWV1ZVVybGAsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZGxxLnF1ZXVlVXJsLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRGVhZCBsZXR0ZXIgcXVldWUgVVJMIGZvciAke2lkfWBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfURlYWRMZXR0ZXJRdWV1ZUFybmAsIHtcbiAgICAgICAgICBrZXk6IGAke291dHB1dE5hbWV9RGVhZExldHRlclF1ZXVlQXJuYCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5kbHEucXVldWVBcm4sXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBEZWFkIGxldHRlciBxdWV1ZSBBUk4gZm9yICR7aWR9YFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsIGAke2lkfVF1ZXVlYCwge1xuICAgICAgcXVldWVOYW1lLFxuICAgICAgZmlmbzogaXNGaWZvLFxuICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IHByb3BzLnZpc2liaWxpdHlUaW1lb3V0XG4gICAgICAgID8gRHVyYXRpb24uc2Vjb25kcyhwcm9wcy52aXNpYmlsaXR5VGltZW91dClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZXRlbnRpb25QZXJpb2Q6IHByb3BzLm1lc3NhZ2VSZXRlbnRpb25QZXJpb2RcbiAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3BzLm1lc3NhZ2VSZXRlbnRpb25QZXJpb2QpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgcmVjZWl2ZU1lc3NhZ2VXYWl0VGltZTogcHJvcHMucmVjZWl2ZU1lc3NhZ2VXYWl0VGltZVxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMucmVjZWl2ZU1lc3NhZ2VXYWl0VGltZSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBtYXhNZXNzYWdlU2l6ZUJ5dGVzOiBwcm9wcy5tYXhNZXNzYWdlU2l6ZSxcbiAgICAgIGRlbGl2ZXJ5RGVsYXk6IHByb3BzLmRlbGl2ZXJ5RGVsYXlcbiAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3BzLmRlbGl2ZXJ5RGVsYXkpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVhZExldHRlclF1ZXVlLFxuICAgICAgZW5jcnlwdGlvbjogdG9FbmNyeXB0aW9uKHByb3BzLmVuY3J5cHRpb24pLFxuICAgICAgY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbjogaXNGaWZvXG4gICAgICAgID8gKHByb3BzLmNvbnRlbnRCYXNlZERlZHVwbGljYXRpb24gPz8gdHJ1ZSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBmaWZvVGhyb3VnaHB1dExpbWl0OiBpc0ZpZm9cbiAgICAgICAgPyB0b0ZpZm9UaHJvdWdocHV0TGltaXQocHJvcHMuZmlmb1Rocm91Z2hwdXRMaW1pdClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWR1cGxpY2F0aW9uU2NvcGU6IGlzRmlmb1xuICAgICAgICA/IHRvRGVkdXBsaWNhdGlvblNjb3BlKHByb3BzLmRlZHVwbGljYXRpb25TY29wZSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZW1vdmFsUG9saWN5OiB0b1JlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSlcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7b3V0cHV0TmFtZX1RdWV1ZVVybGAsIHtcbiAgICAgIGtleTogYCR7b3V0cHV0TmFtZX1RdWV1ZVVybGAsXG4gICAgICB2YWx1ZTogdGhpcy5xdWV1ZS5xdWV1ZVVybCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU1FTIHF1ZXVlIFVSTCBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9UXVldWVBcm5gLCB7XG4gICAgICBrZXk6IGAke291dHB1dE5hbWV9UXVldWVBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBBUk4gZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfVF1ZXVlTmFtZWAsIHtcbiAgICAgIGtleTogYCR7b3V0cHV0TmFtZX1RdWV1ZU5hbWVgLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBTUVMgcXVldWUgbmFtZSBmb3IgJHtpZH1gXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTUVMgcXVldWUgVVJMLlxuICAgKi9cbiAgcHVibGljIGdldFF1ZXVlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUucXVldWVVcmw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTUVMgcXVldWUgQVJOLlxuICAgKi9cbiAgcHVibGljIGdldFF1ZXVlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUucXVldWVBcm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTUVMgcXVldWUgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXRRdWV1ZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZU5hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIENESyBRdWV1ZSBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVldWUoKTogSVF1ZXVlIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlYWQgbGV0dGVyIHF1ZXVlIGlmIGNvbmZpZ3VyZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGVhZExldHRlclF1ZXVlKCk6IElRdWV1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGxxO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHNlbmQgbWVzc2FnZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlbmQoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBjb25zdW1lIChyZWNlaXZlIGFuZCBkZWxldGUpIG1lc3NhZ2UgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRDb25zdW1lKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHVyZ2UgcXVldWUgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRQdXJnZShncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdyYW50UHVyZ2UoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgc2VuZCBhbmQgY29uc3VtZSBtZXNzYWdlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50U2VuZEFuZENvbnN1bWUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICB0aGlzLnF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKGdyYW50ZWUpO1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKGdyYW50ZWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { toRemovalPolicy } from "../../../utils/removalPolicy";
|
|
1
|
+
export { toRemovalPolicy } from "../../../utils/removalPolicy.js";
|
|
2
2
|
export type RemovalPolicyString = "DESTROY" | "RETAIN";
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toRemovalPolicy = void 0;
|
|
4
|
-
var removalPolicy_1 = require("../../../utils/removalPolicy");
|
|
5
|
-
Object.defineProperty(exports, "toRemovalPolicy", { enumerable: true, get: function () { return removalPolicy_1.toRemovalPolicy; } });
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOERBQStEO0FBQXRELGdIQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHRvUmVtb3ZhbFBvbGljeSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZW1vdmFsUG9saWN5XCI7XG5cbmV4cG9ydCB0eXBlIFJlbW92YWxQb2xpY3lTdHJpbmcgPSBcIkRFU1RST1lcIiB8IFwiUkVUQUlOXCI7XG4iXX0=
|
|
1
|
+
export { toRemovalPolicy } from "../../../utils/removalPolicy.js";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import type { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
3
|
+
import type { SnsAction } from "aws-cdk-lib/aws-cloudwatch-actions";
|
|
4
|
+
/**
|
|
5
|
+
* Tag key for mapping CloudWatch alarms to Fjall applications.
|
|
6
|
+
* Cross-system contract: the webhook at webapp/app/routes/api/internal/alarm-webhook.ts
|
|
7
|
+
* extracts this tag from alarm descriptions and dimensions.
|
|
8
|
+
*/
|
|
9
|
+
export declare const APPLICATION_ID_TAG_KEY = "fjall:applicationId";
|
|
10
|
+
export declare const ALARM_DEFAULTS: {
|
|
11
|
+
readonly EVALUATION_PERIOD: Duration;
|
|
12
|
+
readonly ECS: {
|
|
13
|
+
readonly CPU: 80;
|
|
14
|
+
readonly MEMORY: 80;
|
|
15
|
+
readonly RUNNING_TASKS_MIN: 1;
|
|
16
|
+
};
|
|
17
|
+
readonly ALB: {
|
|
18
|
+
readonly HTTP_5XX_PERCENT: 5;
|
|
19
|
+
readonly P99_RESPONSE_TIME_MS: 3000;
|
|
20
|
+
};
|
|
21
|
+
readonly RDS: {
|
|
22
|
+
readonly CPU: 80;
|
|
23
|
+
readonly FREE_STORAGE_GIB: 5;
|
|
24
|
+
readonly CONNECTIONS: 50;
|
|
25
|
+
};
|
|
26
|
+
readonly LAMBDA: {
|
|
27
|
+
readonly ERROR_RATE: 5;
|
|
28
|
+
readonly DURATION_PERCENT: 80;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/** Build alarm description, appending the application ID tag for webhook extraction. */
|
|
32
|
+
export declare function buildAlarmDescription(baseDescription: string, applicationId: string | undefined): string;
|
|
33
|
+
/** Wire an alarm to the SNS topic (both ALARM and OK transitions) and collect it. */
|
|
34
|
+
export declare function registerAlarm(alarm: Alarm, snsAction: SnsAction, alarms: Alarm[]): void;
|
|
35
|
+
/** Tag all alarms with the application ID for webhook-to-application mapping. */
|
|
36
|
+
export declare function tagAlarmsWithApplicationId(alarms: Alarm[], applicationId: string | undefined): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Duration, Tags } from "aws-cdk-lib";
|
|
2
|
+
/**
|
|
3
|
+
* Tag key for mapping CloudWatch alarms to Fjall applications.
|
|
4
|
+
* Cross-system contract: the webhook at webapp/app/routes/api/internal/alarm-webhook.ts
|
|
5
|
+
* extracts this tag from alarm descriptions and dimensions.
|
|
6
|
+
*/
|
|
7
|
+
export const APPLICATION_ID_TAG_KEY = "fjall:applicationId";
|
|
8
|
+
export const ALARM_DEFAULTS = {
|
|
9
|
+
EVALUATION_PERIOD: Duration.minutes(5),
|
|
10
|
+
ECS: { CPU: 80, MEMORY: 80, RUNNING_TASKS_MIN: 1 },
|
|
11
|
+
ALB: { HTTP_5XX_PERCENT: 5, P99_RESPONSE_TIME_MS: 3000 },
|
|
12
|
+
RDS: { CPU: 80, FREE_STORAGE_GIB: 5, CONNECTIONS: 50 },
|
|
13
|
+
LAMBDA: { ERROR_RATE: 5, DURATION_PERCENT: 80 }
|
|
14
|
+
};
|
|
15
|
+
/** Build alarm description, appending the application ID tag for webhook extraction. */
|
|
16
|
+
export function buildAlarmDescription(baseDescription, applicationId) {
|
|
17
|
+
if (!applicationId)
|
|
18
|
+
return baseDescription;
|
|
19
|
+
return `${baseDescription} ${APPLICATION_ID_TAG_KEY}=${applicationId}`;
|
|
20
|
+
}
|
|
21
|
+
/** Wire an alarm to the SNS topic (both ALARM and OK transitions) and collect it. */
|
|
22
|
+
export function registerAlarm(alarm, snsAction, alarms) {
|
|
23
|
+
alarm.addAlarmAction(snsAction);
|
|
24
|
+
alarm.addOkAction(snsAction);
|
|
25
|
+
alarms.push(alarm);
|
|
26
|
+
}
|
|
27
|
+
/** Tag all alarms with the application ID for webhook-to-application mapping. */
|
|
28
|
+
export function tagAlarmsWithApplicationId(alarms, applicationId) {
|
|
29
|
+
if (!applicationId)
|
|
30
|
+
return;
|
|
31
|
+
for (const alarm of alarms) {
|
|
32
|
+
Tags.of(alarm).add(APPLICATION_ID_TAG_KEY, applicationId);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import type { FargateService, Ec2Service } from "aws-cdk-lib/aws-ecs";
|
|
3
|
+
import { type IApplicationTargetGroup } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
4
|
+
import type { ITopic } from "aws-cdk-lib/aws-sns";
|
|
5
|
+
import type { Construct } from "constructs";
|
|
6
|
+
export interface EcsServiceAlarmThresholds {
|
|
7
|
+
cpuThreshold?: number;
|
|
8
|
+
memoryThreshold?: number;
|
|
9
|
+
runningTasksMinimum?: number;
|
|
10
|
+
http5xxThreshold?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface EcsServiceAlarmsProps {
|
|
13
|
+
scope: Construct;
|
|
14
|
+
serviceName: string;
|
|
15
|
+
service: FargateService | Ec2Service;
|
|
16
|
+
targetGroup?: IApplicationTargetGroup;
|
|
17
|
+
config: EcsServiceAlarmThresholds;
|
|
18
|
+
alarmTopic: ITopic;
|
|
19
|
+
applicationId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function createEcsServiceAlarms(props: EcsServiceAlarmsProps): Alarm[];
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import { Alarm, ComparisonOperator, MathExpression, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
|
|
3
|
+
import { SnsAction } from "aws-cdk-lib/aws-cloudwatch-actions";
|
|
4
|
+
import { HttpCodeTarget } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
5
|
+
import { ALARM_DEFAULTS, registerAlarm, tagAlarmsWithApplicationId, buildAlarmDescription } from "./alarmDefaults.js";
|
|
6
|
+
export function createEcsServiceAlarms(props) {
|
|
7
|
+
const { scope, serviceName, service, targetGroup, config, alarmTopic, applicationId } = props;
|
|
8
|
+
const alarms = [];
|
|
9
|
+
const snsAction = new SnsAction(alarmTopic);
|
|
10
|
+
const cpuAlarm = new Alarm(scope, `${serviceName}CpuAlarm`, {
|
|
11
|
+
alarmDescription: buildAlarmDescription(`ECS service ${serviceName} CPU utilisation exceeds threshold`, applicationId),
|
|
12
|
+
metric: service.metricCpuUtilization({
|
|
13
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD
|
|
14
|
+
}),
|
|
15
|
+
threshold: config.cpuThreshold ?? ALARM_DEFAULTS.ECS.CPU,
|
|
16
|
+
evaluationPeriods: 3,
|
|
17
|
+
datapointsToAlarm: 2,
|
|
18
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
19
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
20
|
+
});
|
|
21
|
+
registerAlarm(cpuAlarm, snsAction, alarms);
|
|
22
|
+
const memoryAlarm = new Alarm(scope, `${serviceName}MemoryAlarm`, {
|
|
23
|
+
alarmDescription: buildAlarmDescription(`ECS service ${serviceName} memory utilisation exceeds threshold`, applicationId),
|
|
24
|
+
metric: service.metricMemoryUtilization({
|
|
25
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD
|
|
26
|
+
}),
|
|
27
|
+
threshold: config.memoryThreshold ?? ALARM_DEFAULTS.ECS.MEMORY,
|
|
28
|
+
evaluationPeriods: 3,
|
|
29
|
+
datapointsToAlarm: 2,
|
|
30
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
31
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
32
|
+
});
|
|
33
|
+
registerAlarm(memoryAlarm, snsAction, alarms);
|
|
34
|
+
const runningMin = config.runningTasksMinimum ?? ALARM_DEFAULTS.ECS.RUNNING_TASKS_MIN;
|
|
35
|
+
if (runningMin > 0) {
|
|
36
|
+
const runningTasksAlarm = new Alarm(scope, `${serviceName}RunningTasksAlarm`, {
|
|
37
|
+
alarmDescription: buildAlarmDescription(`ECS service ${serviceName} running tasks below minimum`, applicationId),
|
|
38
|
+
metric: service.metric("RunningTaskCount", {
|
|
39
|
+
period: Duration.minutes(1),
|
|
40
|
+
statistic: "Average"
|
|
41
|
+
}),
|
|
42
|
+
threshold: runningMin,
|
|
43
|
+
evaluationPeriods: 2,
|
|
44
|
+
datapointsToAlarm: 2,
|
|
45
|
+
comparisonOperator: ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
46
|
+
treatMissingData: TreatMissingData.BREACHING
|
|
47
|
+
});
|
|
48
|
+
registerAlarm(runningTasksAlarm, snsAction, alarms);
|
|
49
|
+
}
|
|
50
|
+
// ALB-based alarms only when a target group is provided
|
|
51
|
+
if (targetGroup) {
|
|
52
|
+
const http5xxThreshold = config.http5xxThreshold ?? ALARM_DEFAULTS.ALB.HTTP_5XX_PERCENT;
|
|
53
|
+
const http5xxAlarm = new Alarm(scope, `${serviceName}Http5xxAlarm`, {
|
|
54
|
+
alarmDescription: buildAlarmDescription(`ECS service ${serviceName} 5xx error rate exceeds ${http5xxThreshold}%`, applicationId),
|
|
55
|
+
metric: new MathExpression({
|
|
56
|
+
expression: "(errors / requests) * 100",
|
|
57
|
+
label: "5xx Error Rate %",
|
|
58
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD,
|
|
59
|
+
usingMetrics: {
|
|
60
|
+
errors: targetGroup.metrics.httpCodeTarget(HttpCodeTarget.TARGET_5XX_COUNT, { statistic: "Sum" }),
|
|
61
|
+
requests: targetGroup.metrics.requestCount({ statistic: "Sum" })
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
threshold: http5xxThreshold,
|
|
65
|
+
evaluationPeriods: 2,
|
|
66
|
+
datapointsToAlarm: 2,
|
|
67
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
68
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
69
|
+
});
|
|
70
|
+
registerAlarm(http5xxAlarm, snsAction, alarms);
|
|
71
|
+
const p99Alarm = new Alarm(scope, `${serviceName}P99ResponseTimeAlarm`, {
|
|
72
|
+
alarmDescription: buildAlarmDescription(`ECS service ${serviceName} p99 response time exceeds threshold`, applicationId),
|
|
73
|
+
metric: targetGroup.metrics.targetResponseTime({
|
|
74
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD,
|
|
75
|
+
statistic: "p99"
|
|
76
|
+
}),
|
|
77
|
+
// Response time metric is in seconds
|
|
78
|
+
threshold: ALARM_DEFAULTS.ALB.P99_RESPONSE_TIME_MS / 1000,
|
|
79
|
+
evaluationPeriods: 2,
|
|
80
|
+
datapointsToAlarm: 2,
|
|
81
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
82
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
83
|
+
});
|
|
84
|
+
registerAlarm(p99Alarm, snsAction, alarms);
|
|
85
|
+
}
|
|
86
|
+
tagAlarmsWithApplicationId(alarms, applicationId);
|
|
87
|
+
return alarms;
|
|
88
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ALARM_DEFAULTS, APPLICATION_ID_TAG_KEY, registerAlarm, tagAlarmsWithApplicationId, buildAlarmDescription } from "./alarmDefaults.js";
|
|
2
|
+
export { createEcsServiceAlarms, type EcsServiceAlarmThresholds, type EcsServiceAlarmsProps } from "./ecsAlarms.js";
|
|
3
|
+
export { createRdsAlarms, type RdsAlarmThresholds, type RdsAlarmsProps } from "./rdsAlarms.js";
|
|
4
|
+
export { createLambdaAlarms, type LambdaAlarmThresholds, type LambdaAlarmsProps } from "./lambdaAlarms.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4Q0FBOEM7QUFDOUMscUVBQXFFO0FBQ3JFLG9EQUFvRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBlci1hcHAgbW9uaXRvcmluZyByb2xlcyBoYXZlIGJlZW4gcmVtb3ZlZC5cbi8vIE1vbml0b3JpbmcgaXMgbm93IGhhbmRsZWQgYnkgdGhlIHBlci1hY2NvdW50IEFjY291bnRNb25pdG9yaW5nUm9sZVxuLy8gY29uc3RydWN0IGluIGNvbmZpZy9hd3MvYWNjb3VudE1vbml0b3JpbmdSb2xlLnRzLlxuIl19
|
|
1
|
+
export { ALARM_DEFAULTS, APPLICATION_ID_TAG_KEY, registerAlarm, tagAlarmsWithApplicationId, buildAlarmDescription } from "./alarmDefaults.js";
|
|
2
|
+
export { createEcsServiceAlarms } from "./ecsAlarms.js";
|
|
3
|
+
export { createRdsAlarms } from "./rdsAlarms.js";
|
|
4
|
+
export { createLambdaAlarms } from "./lambdaAlarms.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import type { IFunction } from "aws-cdk-lib/aws-lambda";
|
|
3
|
+
import type { ITopic } from "aws-cdk-lib/aws-sns";
|
|
4
|
+
import type { Construct } from "constructs";
|
|
5
|
+
export interface LambdaAlarmThresholds {
|
|
6
|
+
errorRateThreshold?: number;
|
|
7
|
+
durationThresholdPercent?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface LambdaAlarmsProps {
|
|
10
|
+
scope: Construct;
|
|
11
|
+
functionName: string;
|
|
12
|
+
lambdaFunction: IFunction;
|
|
13
|
+
timeoutSeconds: number;
|
|
14
|
+
config: LambdaAlarmThresholds;
|
|
15
|
+
alarmTopic: ITopic;
|
|
16
|
+
applicationId?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function createLambdaAlarms(props: LambdaAlarmsProps): Alarm[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Alarm, ComparisonOperator, MathExpression, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import { SnsAction } from "aws-cdk-lib/aws-cloudwatch-actions";
|
|
3
|
+
import { ALARM_DEFAULTS, registerAlarm, tagAlarmsWithApplicationId, buildAlarmDescription } from "./alarmDefaults.js";
|
|
4
|
+
export function createLambdaAlarms(props) {
|
|
5
|
+
const { scope, functionName, lambdaFunction, timeoutSeconds, config, alarmTopic, applicationId } = props;
|
|
6
|
+
const alarms = [];
|
|
7
|
+
const snsAction = new SnsAction(alarmTopic);
|
|
8
|
+
const errorRateThreshold = config.errorRateThreshold ?? ALARM_DEFAULTS.LAMBDA.ERROR_RATE;
|
|
9
|
+
const errorsAlarm = new Alarm(scope, `${functionName}ErrorsAlarm`, {
|
|
10
|
+
alarmDescription: buildAlarmDescription(`Lambda ${functionName} error rate exceeds ${errorRateThreshold}%`, applicationId),
|
|
11
|
+
metric: new MathExpression({
|
|
12
|
+
expression: "(errors / invocations) * 100",
|
|
13
|
+
label: "Error Rate %",
|
|
14
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD,
|
|
15
|
+
usingMetrics: {
|
|
16
|
+
errors: lambdaFunction.metricErrors({ statistic: "Sum" }),
|
|
17
|
+
invocations: lambdaFunction.metricInvocations({ statistic: "Sum" })
|
|
18
|
+
}
|
|
19
|
+
}),
|
|
20
|
+
threshold: errorRateThreshold,
|
|
21
|
+
evaluationPeriods: 2,
|
|
22
|
+
datapointsToAlarm: 2,
|
|
23
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
24
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
25
|
+
});
|
|
26
|
+
registerAlarm(errorsAlarm, snsAction, alarms);
|
|
27
|
+
const durationPercent = config.durationThresholdPercent ?? ALARM_DEFAULTS.LAMBDA.DURATION_PERCENT;
|
|
28
|
+
const durationThresholdMs = (timeoutSeconds * 1000 * durationPercent) / 100;
|
|
29
|
+
const durationAlarm = new Alarm(scope, `${functionName}DurationAlarm`, {
|
|
30
|
+
alarmDescription: buildAlarmDescription(`Lambda ${functionName} p99 duration exceeds ${durationPercent}% of timeout`, applicationId),
|
|
31
|
+
metric: lambdaFunction.metricDuration({
|
|
32
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD,
|
|
33
|
+
statistic: "p99"
|
|
34
|
+
}),
|
|
35
|
+
threshold: durationThresholdMs,
|
|
36
|
+
evaluationPeriods: 2,
|
|
37
|
+
datapointsToAlarm: 2,
|
|
38
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
39
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
40
|
+
});
|
|
41
|
+
registerAlarm(durationAlarm, snsAction, alarms);
|
|
42
|
+
tagAlarmsWithApplicationId(alarms, applicationId);
|
|
43
|
+
return alarms;
|
|
44
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import type { IDatabaseCluster, IDatabaseInstance } from "aws-cdk-lib/aws-rds";
|
|
3
|
+
import type { ITopic } from "aws-cdk-lib/aws-sns";
|
|
4
|
+
import type { Construct } from "constructs";
|
|
5
|
+
export interface RdsAlarmThresholds {
|
|
6
|
+
cpuThreshold?: number;
|
|
7
|
+
freeStorageThresholdGiB?: number;
|
|
8
|
+
connectionsThreshold?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface RdsAlarmsProps {
|
|
11
|
+
scope: Construct;
|
|
12
|
+
databaseName: string;
|
|
13
|
+
database: IDatabaseInstance | IDatabaseCluster;
|
|
14
|
+
config: RdsAlarmThresholds;
|
|
15
|
+
alarmTopic: ITopic;
|
|
16
|
+
applicationId?: string;
|
|
17
|
+
/** Metric name for free storage — "FreeStorageSpace" for instances, "FreeLocalStorage" for Aurora clusters. */
|
|
18
|
+
freeStorageMetricName?: "FreeStorageSpace" | "FreeLocalStorage";
|
|
19
|
+
}
|
|
20
|
+
export declare function createRdsAlarms(props: RdsAlarmsProps): Alarm[];
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Alarm, ComparisonOperator, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import { SnsAction } from "aws-cdk-lib/aws-cloudwatch-actions";
|
|
3
|
+
import { ALARM_DEFAULTS, registerAlarm, tagAlarmsWithApplicationId, buildAlarmDescription } from "./alarmDefaults.js";
|
|
4
|
+
export function createRdsAlarms(props) {
|
|
5
|
+
const { scope, databaseName, database, config, alarmTopic, applicationId, freeStorageMetricName = "FreeStorageSpace" } = props;
|
|
6
|
+
const alarms = [];
|
|
7
|
+
const snsAction = new SnsAction(alarmTopic);
|
|
8
|
+
const cpuAlarm = new Alarm(scope, `${databaseName}CpuAlarm`, {
|
|
9
|
+
alarmDescription: buildAlarmDescription(`RDS ${databaseName} CPU utilisation exceeds threshold`, applicationId),
|
|
10
|
+
metric: database.metricCPUUtilization({
|
|
11
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD
|
|
12
|
+
}),
|
|
13
|
+
threshold: config.cpuThreshold ?? ALARM_DEFAULTS.RDS.CPU,
|
|
14
|
+
evaluationPeriods: 3,
|
|
15
|
+
datapointsToAlarm: 2,
|
|
16
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
17
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
18
|
+
});
|
|
19
|
+
registerAlarm(cpuAlarm, snsAction, alarms);
|
|
20
|
+
const freeStorageThresholdBytes = (config.freeStorageThresholdGiB ?? ALARM_DEFAULTS.RDS.FREE_STORAGE_GIB) *
|
|
21
|
+
1024 *
|
|
22
|
+
1024 *
|
|
23
|
+
1024;
|
|
24
|
+
const freeStorageAlarm = new Alarm(scope, `${databaseName}FreeStorageAlarm`, {
|
|
25
|
+
alarmDescription: buildAlarmDescription(`RDS ${databaseName} free storage below threshold`, applicationId),
|
|
26
|
+
metric: database.metric(freeStorageMetricName, {
|
|
27
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD,
|
|
28
|
+
statistic: "Average"
|
|
29
|
+
}),
|
|
30
|
+
threshold: freeStorageThresholdBytes,
|
|
31
|
+
evaluationPeriods: 2,
|
|
32
|
+
datapointsToAlarm: 2,
|
|
33
|
+
comparisonOperator: ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
34
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
35
|
+
});
|
|
36
|
+
registerAlarm(freeStorageAlarm, snsAction, alarms);
|
|
37
|
+
const connectionsAlarm = new Alarm(scope, `${databaseName}ConnectionsAlarm`, {
|
|
38
|
+
alarmDescription: buildAlarmDescription(`RDS ${databaseName} connections exceed threshold`, applicationId),
|
|
39
|
+
metric: database.metricDatabaseConnections({
|
|
40
|
+
period: ALARM_DEFAULTS.EVALUATION_PERIOD
|
|
41
|
+
}),
|
|
42
|
+
// Absolute number, not a percentage
|
|
43
|
+
threshold: config.connectionsThreshold ?? ALARM_DEFAULTS.RDS.CONNECTIONS,
|
|
44
|
+
evaluationPeriods: 2,
|
|
45
|
+
datapointsToAlarm: 2,
|
|
46
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
47
|
+
treatMissingData: TreatMissingData.NOT_BREACHING
|
|
48
|
+
});
|
|
49
|
+
registerAlarm(connectionsAlarm, snsAction, alarms);
|
|
50
|
+
tagAlarmsWithApplicationId(alarms, applicationId);
|
|
51
|
+
return alarms;
|
|
52
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { CrossAccountZoneDelegationRecord as CdkCrossAccountZoneDelegationRecord, type IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import type { IRole } from "aws-cdk-lib/aws-iam";
|
|
4
|
+
export interface CrossAccountDelegationRecordProps {
|
|
5
|
+
readonly delegationRole: IRole;
|
|
6
|
+
readonly delegatedZone: IHostedZone;
|
|
7
|
+
readonly delegatedZoneName: string;
|
|
8
|
+
readonly parentHostedZoneName: string;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly costAllocationEnvironment?: string;
|
|
11
|
+
readonly costAllocationDomain?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class CrossAccountDelegationRecord extends Construct {
|
|
14
|
+
readonly record: CdkCrossAccountZoneDelegationRecord;
|
|
15
|
+
readonly description: string;
|
|
16
|
+
constructor(scope: Construct, id: string, props: CrossAccountDelegationRecordProps);
|
|
17
|
+
}
|