@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,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ManagedPlatform = void 0;
|
|
4
|
-
const ipam_1 = require("../../config/aws/ipam");
|
|
5
|
-
const ipamPool_1 = require("../../resources/aws/networking/ipamPool");
|
|
6
|
-
const managedAccount_1 = require("./managedAccount");
|
|
7
|
-
const getConfig_1 = require("../../utils/getConfig");
|
|
8
|
-
class ManagedPlatform extends managedAccount_1.ManagedAccount {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id, props);
|
|
11
|
-
// Get all configured regions
|
|
12
|
-
const config = (0, getConfig_1.getConfig)();
|
|
13
|
-
const allRegions = config.allRegions.length > 0 ? config.allRegions : [props.region]; // Fallback to at least the deployment region
|
|
14
|
-
// Create IPAM with all regions configured
|
|
15
|
-
const ipam = new ipam_1.Ipam(this, "Ipam", {
|
|
16
|
-
regions: allRegions
|
|
17
|
-
});
|
|
18
|
-
// Convert accounts to flat array for IpamPool
|
|
19
|
-
const orgAccounts = Object.values(props.accounts).flatMap((account) => Array.isArray(account) ? account : [account]);
|
|
20
|
-
// Create IPAM pool hierarchy for all regions
|
|
21
|
-
new ipamPool_1.IpamPool(this, "IpamPool", {
|
|
22
|
-
orgAccounts,
|
|
23
|
-
regions: allRegions,
|
|
24
|
-
ipamScope: ipam.privateDefaultScopeId
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.ManagedPlatform = ManagedPlatform;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9tYW5hZ2VkUGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTZDO0FBQzdDLHNFQUFtRTtBQUVuRSxxREFBNEU7QUFDNUUscURBQWtEO0FBVWxELE1BQWEsZUFBZ0IsU0FBUSwrQkFBYztJQUNqRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDZCQUE2QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFTLEdBQUUsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1FBRWxILDBDQUEwQztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUMsQ0FBQztRQUVILDhDQUE4QztRQUM5QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQzdDLENBQUM7UUFFRiw2Q0FBNkM7UUFDN0MsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVztZQUNYLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMscUJBQXFCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFCRCwwQ0EwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJcGFtIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaXBhbVwiO1xuaW1wb3J0IHsgSXBhbVBvb2wgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkQWNjb3VudCwgdHlwZSBNYW5hZ2VkQWNjb3VudFByb3BzIH0gZnJvbSBcIi4vbWFuYWdlZEFjY291bnRcIjtcbmltcG9ydCB7IGdldENvbmZpZyB9IGZyb20gXCIuLi8uLi91dGlscy9nZXRDb25maWdcIjtcblxudHlwZSBBY2NvdW50c0NvbmZpZyA9IHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgTWFuYWdlZFBsYXRmb3JtUHJvcHMgZXh0ZW5kcyBNYW5hZ2VkQWNjb3VudFByb3BzIHtcbiAgYWNjb3VudHM6IEFjY291bnRzQ29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgTWFuYWdlZFBsYXRmb3JtIGV4dGVuZHMgTWFuYWdlZEFjY291bnQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWFuYWdlZFBsYXRmb3JtUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIEdldCBhbGwgY29uZmlndXJlZCByZWdpb25zXG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgYWxsUmVnaW9ucyA9XG4gICAgICBjb25maWcuYWxsUmVnaW9ucy5sZW5ndGggPiAwID8gY29uZmlnLmFsbFJlZ2lvbnMgOiBbcHJvcHMucmVnaW9uXTsgLy8gRmFsbGJhY2sgdG8gYXQgbGVhc3QgdGhlIGRlcGxveW1lbnQgcmVnaW9uXG5cbiAgICAvLyBDcmVhdGUgSVBBTSB3aXRoIGFsbCByZWdpb25zIGNvbmZpZ3VyZWRcbiAgICBjb25zdCBpcGFtID0gbmV3IElwYW0odGhpcywgXCJJcGFtXCIsIHtcbiAgICAgIHJlZ2lvbnM6IGFsbFJlZ2lvbnNcbiAgICB9KTtcblxuICAgIC8vIENvbnZlcnQgYWNjb3VudHMgdG8gZmxhdCBhcnJheSBmb3IgSXBhbVBvb2xcbiAgICBjb25zdCBvcmdBY2NvdW50cyA9IE9iamVjdC52YWx1ZXMocHJvcHMuYWNjb3VudHMpLmZsYXRNYXAoKGFjY291bnQpID0+XG4gICAgICBBcnJheS5pc0FycmF5KGFjY291bnQpID8gYWNjb3VudCA6IFthY2NvdW50XVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgSVBBTSBwb29sIGhpZXJhcmNoeSBmb3IgYWxsIHJlZ2lvbnNcbiAgICBuZXcgSXBhbVBvb2wodGhpcywgXCJJcGFtUG9vbFwiLCB7XG4gICAgICBvcmdBY2NvdW50cyxcbiAgICAgIHJlZ2lvbnM6IGFsbFJlZ2lvbnMsXG4gICAgICBpcGFtU2NvcGU6IGlwYW0ucHJpdmF0ZURlZmF1bHRTY29wZUlkXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type Connections, type IConnectable, type Vpc } from "aws-cdk-lib/aws-ec2";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { type StackBuilder } from "../base/awsStack";
|
|
4
|
-
interface DatabaseProps {
|
|
5
|
-
vpc: Vpc;
|
|
6
|
-
}
|
|
7
|
-
export default class Database extends Construct implements IConnectable {
|
|
8
|
-
private readonly resource;
|
|
9
|
-
connections: Connections;
|
|
10
|
-
databaseSecretName: string;
|
|
11
|
-
constructor(scope: Construct, id: string, props: DatabaseProps);
|
|
12
|
-
static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constructs_1 = require("constructs");
|
|
4
|
-
const _1 = require("./");
|
|
5
|
-
class Database extends constructs_1.Construct {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id);
|
|
8
|
-
this.resource = new _1.RdsAurora(scope, `${id}Rds`, {
|
|
9
|
-
vpc: props.vpc,
|
|
10
|
-
databaseName: id.replace("Database", "")
|
|
11
|
-
});
|
|
12
|
-
this.connections = this.resource.connections;
|
|
13
|
-
}
|
|
14
|
-
//todo: move to generic 'resource' class
|
|
15
|
-
static build(id, props) {
|
|
16
|
-
return (sb) => {
|
|
17
|
-
const newProps = {
|
|
18
|
-
...props,
|
|
19
|
-
...{
|
|
20
|
-
vpc: sb.getNetwork() || props?.vpc
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
return new this(sb.getStack(), id, newProps);
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.default = Database;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLDJDQUF1QztBQUd2Qyx5QkFBK0I7QUFNL0IsTUFBcUIsUUFBUyxTQUFRLHNCQUFTO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksWUFBUyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQy9DLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsRUFBVSxFQUNWLEtBQThCO1FBRTlCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQWtCO2dCQUM5QixHQUFHLEtBQUs7Z0JBQ1IsR0FBRztvQkFDRCxHQUFHLEVBQUcsRUFBRSxDQUFDLFVBQVUsRUFBVSxJQUFJLEtBQUssRUFBRSxHQUFHO2lCQUM1QzthQUNGLENBQUM7WUFFRixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBaENELDJCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlLFxuICB0eXBlIFZwY1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgUmRzQXVyb3JhIH0gZnJvbSBcIi4vXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdnBjOiBWcGM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogUmRzQXVyb3JhO1xuICBwdWJsaWMgY29ubmVjdGlvbnMhOiBDb25uZWN0aW9ucztcbiAgcHVibGljIGRhdGFiYXNlU2VjcmV0TmFtZSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IFJkc0F1cm9yYShzY29wZSwgYCR7aWR9UmRzYCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkYXRhYmFzZU5hbWU6IGlkLnJlcGxhY2UoXCJEYXRhYmFzZVwiLCBcIlwiKVxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMucmVzb3VyY2UuY29ubmVjdGlvbnM7XG4gIH1cblxuICAvL3RvZG86IG1vdmUgdG8gZ2VuZXJpYyAncmVzb3VyY2UnIGNsYXNzXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogUGFydGlhbDxEYXRhYmFzZVByb3BzPlxuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBEYXRhYmFzZVByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBWcGMpIHx8IHByb3BzPy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type Connections, type IConnectable, type SecurityGroup, type Vpc } from "aws-cdk-lib/aws-ec2";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { type StackBuilder } from "../base/awsStack";
|
|
4
|
-
interface DatabaseProps {
|
|
5
|
-
vpc: Vpc;
|
|
6
|
-
}
|
|
7
|
-
export default class Database extends Construct implements IConnectable {
|
|
8
|
-
private readonly resource;
|
|
9
|
-
connections: Connections;
|
|
10
|
-
databaseSecurityGroup: SecurityGroup;
|
|
11
|
-
databaseSecretName: string;
|
|
12
|
-
constructor(scope: Construct, id: string, props: DatabaseProps);
|
|
13
|
-
static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constructs_1 = require("constructs");
|
|
4
|
-
const _1 = require("./");
|
|
5
|
-
class Database extends constructs_1.Construct {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id);
|
|
8
|
-
this.resource = new _1.RdsInstance(scope, `${id}Rds`, {
|
|
9
|
-
vpc: props.vpc,
|
|
10
|
-
databaseName: id.replace("Database", ""),
|
|
11
|
-
readReplica: {}
|
|
12
|
-
});
|
|
13
|
-
this.connections = this.resource.connections;
|
|
14
|
-
this.databaseSecurityGroup = this.resource.databaseSecurityGroup;
|
|
15
|
-
}
|
|
16
|
-
//todo: move to generic 'resource' class
|
|
17
|
-
static build(id, props) {
|
|
18
|
-
return (sb) => {
|
|
19
|
-
const newProps = {
|
|
20
|
-
...props,
|
|
21
|
-
...{
|
|
22
|
-
vpc: sb.getNetwork() || props?.vpc
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
return new this(sb.getStack(), id, newProps);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.default = Database;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2VJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlSW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSwyQ0FBdUM7QUFHdkMseUJBQWlDO0FBTWpDLE1BQXFCLFFBQVMsU0FBUSxzQkFBUztJQU03QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNqRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxZQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7SUFDbkUsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUE4QjtRQUU5QixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFrQjtnQkFDOUIsR0FBRyxLQUFLO2dCQUNSLEdBQUc7b0JBQ0QsR0FBRyxFQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQVUsSUFBSSxLQUFLLEVBQUUsR0FBRztpQkFDNUM7YUFDRixDQUFDO1lBRUYsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQW5DRCwyQkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgdHlwZSBTZWN1cml0eUdyb3VwLFxuICB0eXBlIFZwY1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgUmRzSW5zdGFuY2UgfSBmcm9tIFwiLi9cIjtcblxuaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICB2cGM6IFZwYztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBSZHNJbnN0YW5jZTtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIGRhdGFiYXNlU2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIGRhdGFiYXNlU2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgUmRzSW5zdGFuY2Uoc2NvcGUsIGAke2lkfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBpZC5yZXBsYWNlKFwiRGF0YWJhc2VcIiwgXCJcIiksXG4gICAgICByZWFkUmVwbGljYToge31cbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlc291cmNlLmNvbm5lY3Rpb25zO1xuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwID0gdGhpcy5yZXNvdXJjZS5kYXRhYmFzZVNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICAvL3RvZG86IG1vdmUgdG8gZ2VuZXJpYyAncmVzb3VyY2UnIGNsYXNzXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogUGFydGlhbDxEYXRhYmFzZVByb3BzPlxuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBEYXRhYmFzZVByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBWcGMpIHx8IHByb3BzPy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Function } from "aws-cdk-lib/aws-lambda";
|
|
3
|
-
import { type IVpc, type IConnectable } from "aws-cdk-lib/aws-ec2";
|
|
4
|
-
/**
|
|
5
|
-
* Props for creating a Migration Lambda
|
|
6
|
-
*/
|
|
7
|
-
export interface MigrationLambdaProps {
|
|
8
|
-
/**
|
|
9
|
-
* VPC where the Lambda will be deployed.
|
|
10
|
-
* Must be the same VPC as the database.
|
|
11
|
-
*/
|
|
12
|
-
vpc: IVpc;
|
|
13
|
-
/**
|
|
14
|
-
* Database construct to connect to.
|
|
15
|
-
* Used for security group configuration.
|
|
16
|
-
*/
|
|
17
|
-
database: IConnectable;
|
|
18
|
-
/**
|
|
19
|
-
* Database credentials secret ARN.
|
|
20
|
-
* Lambda will fetch credentials from this secret.
|
|
21
|
-
*/
|
|
22
|
-
secretArn: string;
|
|
23
|
-
/**
|
|
24
|
-
* Database endpoint hostname.
|
|
25
|
-
*/
|
|
26
|
-
databaseEndpoint: string;
|
|
27
|
-
/**
|
|
28
|
-
* Database port.
|
|
29
|
-
*/
|
|
30
|
-
databasePort: string;
|
|
31
|
-
/**
|
|
32
|
-
* Database name.
|
|
33
|
-
*/
|
|
34
|
-
databaseName: string;
|
|
35
|
-
/**
|
|
36
|
-
* Database engine type.
|
|
37
|
-
* Currently only PostgreSQL is supported.
|
|
38
|
-
*/
|
|
39
|
-
databaseEngine: "postgresql";
|
|
40
|
-
/**
|
|
41
|
-
* Optional timeout in seconds.
|
|
42
|
-
* Default: 300 (5 minutes)
|
|
43
|
-
*/
|
|
44
|
-
timeout?: number;
|
|
45
|
-
/**
|
|
46
|
-
* Optional memory size in MB.
|
|
47
|
-
* Default: 256
|
|
48
|
-
*/
|
|
49
|
-
memorySize?: number;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Migration Lambda construct for executing database migrations inside a VPC.
|
|
53
|
-
*
|
|
54
|
-
* This Lambda can be invoked by the Fjall CLI to run migrations against databases
|
|
55
|
-
* that are not accessible from the deployment machine (e.g., private VPC databases).
|
|
56
|
-
*
|
|
57
|
-
* The Lambda:
|
|
58
|
-
* 1. Fetches database credentials from Secrets Manager
|
|
59
|
-
* 2. Connects to the database using the bundled pg driver
|
|
60
|
-
* 3. Executes provided SQL statements
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```typescript
|
|
64
|
-
* const migrationLambda = new MigrationLambda(this, "Migration", {
|
|
65
|
-
* vpc: network.getVpc(),
|
|
66
|
-
* database: databaseConstruct,
|
|
67
|
-
* secretArn: credentials.secret.secretArn,
|
|
68
|
-
* databaseEndpoint: cluster.clusterEndpoint.hostname,
|
|
69
|
-
* databasePort: "5432",
|
|
70
|
-
* databaseName: "payload",
|
|
71
|
-
* databaseEngine: "postgresql"
|
|
72
|
-
* });
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
export declare class MigrationLambda extends Construct {
|
|
76
|
-
readonly function: Function;
|
|
77
|
-
readonly functionArn: string;
|
|
78
|
-
readonly functionName: string;
|
|
79
|
-
constructor(scope: Construct, id: string, props: MigrationLambdaProps);
|
|
80
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MigrationLambda = void 0;
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
-
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
7
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
8
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
9
|
-
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
10
|
-
const path = require("path");
|
|
11
|
-
/**
|
|
12
|
-
* Migration Lambda construct for executing database migrations inside a VPC.
|
|
13
|
-
*
|
|
14
|
-
* This Lambda can be invoked by the Fjall CLI to run migrations against databases
|
|
15
|
-
* that are not accessible from the deployment machine (e.g., private VPC databases).
|
|
16
|
-
*
|
|
17
|
-
* The Lambda:
|
|
18
|
-
* 1. Fetches database credentials from Secrets Manager
|
|
19
|
-
* 2. Connects to the database using the bundled pg driver
|
|
20
|
-
* 3. Executes provided SQL statements
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const migrationLambda = new MigrationLambda(this, "Migration", {
|
|
25
|
-
* vpc: network.getVpc(),
|
|
26
|
-
* database: databaseConstruct,
|
|
27
|
-
* secretArn: credentials.secret.secretArn,
|
|
28
|
-
* databaseEndpoint: cluster.clusterEndpoint.hostname,
|
|
29
|
-
* databasePort: "5432",
|
|
30
|
-
* databaseName: "payload",
|
|
31
|
-
* databaseEngine: "postgresql"
|
|
32
|
-
* });
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
class MigrationLambda extends constructs_1.Construct {
|
|
36
|
-
constructor(scope, id, props) {
|
|
37
|
-
super(scope, id);
|
|
38
|
-
const stackName = aws_cdk_lib_1.Stack.of(this).stackName;
|
|
39
|
-
// Create security group for the Lambda
|
|
40
|
-
const securityGroup = new aws_ec2_1.SecurityGroup(this, `${id}SecurityGroup`, {
|
|
41
|
-
vpc: props.vpc,
|
|
42
|
-
description: `Security group for ${id} migration Lambda`,
|
|
43
|
-
allowAllOutbound: true
|
|
44
|
-
});
|
|
45
|
-
// Allow Lambda to connect to the database
|
|
46
|
-
props.database.connections.allowFrom(securityGroup, aws_ec2_1.Port.tcp(parseInt(props.databasePort, 10)), `Allow ${id} migration Lambda to connect to database`);
|
|
47
|
-
// Create execution role with necessary permissions
|
|
48
|
-
const executionRole = new aws_iam_1.Role(this, `${id}ExecutionRole`, {
|
|
49
|
-
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
|
50
|
-
description: `Execution role for ${id} migration Lambda`,
|
|
51
|
-
managedPolicies: [
|
|
52
|
-
aws_iam_1.ManagedPolicy.fromManagedPolicyArn(scope, `${id}VpcExecutionPolicy`, "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole")
|
|
53
|
-
]
|
|
54
|
-
});
|
|
55
|
-
// Add Secrets Manager permissions
|
|
56
|
-
executionRole.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
57
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
58
|
-
actions: ["secretsmanager:GetSecretValue"],
|
|
59
|
-
resources: [props.secretArn]
|
|
60
|
-
}));
|
|
61
|
-
// Create log group with retention
|
|
62
|
-
const logGroup = new aws_logs_1.LogGroup(this, `${id}LogGroup`, {
|
|
63
|
-
logGroupName: `/aws/lambda/${stackName}-${id}`,
|
|
64
|
-
retention: aws_logs_1.RetentionDays.ONE_WEEK
|
|
65
|
-
});
|
|
66
|
-
// Path to the Lambda handler code
|
|
67
|
-
// This directory contains index.mjs and package.json with pg dependency
|
|
68
|
-
const handlerPath = path.join(__dirname, "migration-lambda-handler");
|
|
69
|
-
// Create the Lambda function with bundled dependencies
|
|
70
|
-
// The handler directory must have node_modules installed during CDK synth
|
|
71
|
-
// or use CDK's bundling feature
|
|
72
|
-
this.function = new aws_lambda_1.Function(this, `${id}Function`, {
|
|
73
|
-
functionName: `${stackName}-${id}`,
|
|
74
|
-
runtime: aws_lambda_1.Runtime.NODEJS_20_X,
|
|
75
|
-
handler: "index.handler",
|
|
76
|
-
code: aws_lambda_1.Code.fromAsset(handlerPath, {
|
|
77
|
-
bundling: {
|
|
78
|
-
image: aws_lambda_1.Runtime.NODEJS_20_X.bundlingImage,
|
|
79
|
-
command: [
|
|
80
|
-
"bash",
|
|
81
|
-
"-c",
|
|
82
|
-
["npm install --omit=dev", "cp -r . /asset-output/"].join(" && ")
|
|
83
|
-
]
|
|
84
|
-
}
|
|
85
|
-
}),
|
|
86
|
-
vpc: props.vpc,
|
|
87
|
-
vpcSubnets: { subnetType: aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS },
|
|
88
|
-
securityGroups: [securityGroup],
|
|
89
|
-
role: executionRole,
|
|
90
|
-
timeout: aws_cdk_lib_1.Duration.seconds(props.timeout ?? 300),
|
|
91
|
-
memorySize: props.memorySize ?? 256,
|
|
92
|
-
environment: {
|
|
93
|
-
SECRET_ARN: props.secretArn,
|
|
94
|
-
DATABASE_ENDPOINT: props.databaseEndpoint,
|
|
95
|
-
DATABASE_PORT: props.databasePort,
|
|
96
|
-
DATABASE_NAME: props.databaseName,
|
|
97
|
-
DATABASE_ENGINE: props.databaseEngine
|
|
98
|
-
},
|
|
99
|
-
logGroup
|
|
100
|
-
});
|
|
101
|
-
this.functionArn = this.function.functionArn;
|
|
102
|
-
this.functionName = this.function.functionName;
|
|
103
|
-
// Export function ARN for CLI use
|
|
104
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}FunctionArn`, {
|
|
105
|
-
key: `${stackName}${id}FunctionArn`,
|
|
106
|
-
exportName: `${stackName}${id}FunctionArn`,
|
|
107
|
-
value: this.functionArn,
|
|
108
|
-
description: `ARN of the ${id} migration Lambda function`
|
|
109
|
-
});
|
|
110
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}FunctionName`, {
|
|
111
|
-
key: `${stackName}${id}FunctionName`,
|
|
112
|
-
exportName: `${stackName}${id}FunctionName`,
|
|
113
|
-
value: this.functionName,
|
|
114
|
-
description: `Name of the ${id} migration Lambda function`
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.MigrationLambda = MigrationLambda;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvbWlncmF0aW9uTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyw2Q0FBeUQ7QUFDekQsdURBQWlFO0FBQ2pFLGlEQU02QjtBQUM3QixpREFNNkI7QUFDN0IsbURBQStEO0FBQy9ELDZCQUE2QjtBQTBEN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBSzVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFNBQVMsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFM0MsdUNBQXVDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRTtZQUNsRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CO1lBQ3hELGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDbEMsYUFBYSxFQUNiLGNBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDMUMsU0FBUyxFQUFFLDBDQUEwQyxDQUN0RCxDQUFDO1FBRUYsbURBQW1EO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFO1lBQ3pELFNBQVMsRUFB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QixXQUFXLEVBQUUsY0FBYyxFQUFFLDRCQUE0QjtTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsY0FBYztZQUNwQyxVQUFVLEVBQUUsR0FBRyxTQUFTLEdBQUcsRUFBRSxjQUFjO1lBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN4QixXQUFXLEVBQUUsZUFBZSxFQUFFLDRCQUE0QjtTQUMzRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEzR0QsMENBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBDZm5PdXRwdXQsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb2RlLCBSdW50aW1lLCBGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1xuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIEVmZmVjdCxcbiAgUm9sZSxcbiAgU2VydmljZVByaW5jaXBhbCxcbiAgTWFuYWdlZFBvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJVnBjLFxuICBTdWJuZXRUeXBlLFxuICBTZWN1cml0eUdyb3VwLFxuICBQb3J0LFxuICB0eXBlIElDb25uZWN0YWJsZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgY3JlYXRpbmcgYSBNaWdyYXRpb24gTGFtYmRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uTGFtYmRhUHJvcHMge1xuICAvKipcbiAgICogVlBDIHdoZXJlIHRoZSBMYW1iZGEgd2lsbCBiZSBkZXBsb3llZC5cbiAgICogTXVzdCBiZSB0aGUgc2FtZSBWUEMgYXMgdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgdnBjOiBJVnBjO1xuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSBjb25zdHJ1Y3QgdG8gY29ubmVjdCB0by5cbiAgICogVXNlZCBmb3Igc2VjdXJpdHkgZ3JvdXAgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGRhdGFiYXNlOiBJQ29ubmVjdGFibGU7XG5cbiAgLyoqXG4gICAqIERhdGFiYXNlIGNyZWRlbnRpYWxzIHNlY3JldCBBUk4uXG4gICAqIExhbWJkYSB3aWxsIGZldGNoIGNyZWRlbnRpYWxzIGZyb20gdGhpcyBzZWNyZXQuXG4gICAqL1xuICBzZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWJhc2UgZW5kcG9pbnQgaG9zdG5hbWUuXG4gICAqL1xuICBkYXRhYmFzZUVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFiYXNlIHBvcnQuXG4gICAqL1xuICBkYXRhYmFzZVBvcnQ6IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWJhc2UgbmFtZS5cbiAgICovXG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSBlbmdpbmUgdHlwZS5cbiAgICogQ3VycmVudGx5IG9ubHkgUG9zdGdyZVNRTCBpcyBzdXBwb3J0ZWQuXG4gICAqL1xuICBkYXRhYmFzZUVuZ2luZTogXCJwb3N0Z3Jlc3FsXCI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRpbWVvdXQgaW4gc2Vjb25kcy5cbiAgICogRGVmYXVsdDogMzAwICg1IG1pbnV0ZXMpXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZW1vcnkgc2l6ZSBpbiBNQi5cbiAgICogRGVmYXVsdDogMjU2XG4gICAqL1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1pZ3JhdGlvbiBMYW1iZGEgY29uc3RydWN0IGZvciBleGVjdXRpbmcgZGF0YWJhc2UgbWlncmF0aW9ucyBpbnNpZGUgYSBWUEMuXG4gKlxuICogVGhpcyBMYW1iZGEgY2FuIGJlIGludm9rZWQgYnkgdGhlIEZqYWxsIENMSSB0byBydW4gbWlncmF0aW9ucyBhZ2FpbnN0IGRhdGFiYXNlc1xuICogdGhhdCBhcmUgbm90IGFjY2Vzc2libGUgZnJvbSB0aGUgZGVwbG95bWVudCBtYWNoaW5lIChlLmcuLCBwcml2YXRlIFZQQyBkYXRhYmFzZXMpLlxuICpcbiAqIFRoZSBMYW1iZGE6XG4gKiAxLiBGZXRjaGVzIGRhdGFiYXNlIGNyZWRlbnRpYWxzIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gKiAyLiBDb25uZWN0cyB0byB0aGUgZGF0YWJhc2UgdXNpbmcgdGhlIGJ1bmRsZWQgcGcgZHJpdmVyXG4gKiAzLiBFeGVjdXRlcyBwcm92aWRlZCBTUUwgc3RhdGVtZW50c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtaWdyYXRpb25MYW1iZGEgPSBuZXcgTWlncmF0aW9uTGFtYmRhKHRoaXMsIFwiTWlncmF0aW9uXCIsIHtcbiAqICAgdnBjOiBuZXR3b3JrLmdldFZwYygpLFxuICogICBkYXRhYmFzZTogZGF0YWJhc2VDb25zdHJ1Y3QsXG4gKiAgIHNlY3JldEFybjogY3JlZGVudGlhbHMuc2VjcmV0LnNlY3JldEFybixcbiAqICAgZGF0YWJhc2VFbmRwb2ludDogY2x1c3Rlci5jbHVzdGVyRW5kcG9pbnQuaG9zdG5hbWUsXG4gKiAgIGRhdGFiYXNlUG9ydDogXCI1NDMyXCIsXG4gKiAgIGRhdGFiYXNlTmFtZTogXCJwYXlsb2FkXCIsXG4gKiAgIGRhdGFiYXNlRW5naW5lOiBcInBvc3RncmVzcWxcIlxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbkxhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbjogRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1pZ3JhdGlvbkxhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN0YWNrTmFtZSA9IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcblxuICAgIC8vIENyZWF0ZSBzZWN1cml0eSBncm91cCBmb3IgdGhlIExhbWJkYVxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgJHtpZH1TZWN1cml0eUdyb3VwYCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciAke2lkfSBtaWdyYXRpb24gTGFtYmRhYCxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWVcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IExhbWJkYSB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZVxuICAgIHByb3BzLmRhdGFiYXNlLmNvbm5lY3Rpb25zLmFsbG93RnJvbShcbiAgICAgIHNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcChwYXJzZUludChwcm9wcy5kYXRhYmFzZVBvcnQsIDEwKSksXG4gICAgICBgQWxsb3cgJHtpZH0gbWlncmF0aW9uIExhbWJkYSB0byBjb25uZWN0IHRvIGRhdGFiYXNlYFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgZXhlY3V0aW9uIHJvbGUgd2l0aCBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbiAgICBjb25zdCBleGVjdXRpb25Sb2xlID0gbmV3IFJvbGUodGhpcywgYCR7aWR9RXhlY3V0aW9uUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgRXhlY3V0aW9uIHJvbGUgZm9yICR7aWR9IG1pZ3JhdGlvbiBMYW1iZGFgLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIE1hbmFnZWRQb2xpY3kuZnJvbU1hbmFnZWRQb2xpY3lBcm4oXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYCR7aWR9VnBjRXhlY3V0aW9uUG9saWN5YCxcbiAgICAgICAgICBcImFybjphd3M6aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFWUENBY2Nlc3NFeGVjdXRpb25Sb2xlXCJcbiAgICAgICAgKVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFNlY3JldHMgTWFuYWdlciBwZXJtaXNzaW9uc1xuICAgIGV4ZWN1dGlvblJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcInNlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5zZWNyZXRBcm5dXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgbG9nIGdyb3VwIHdpdGggcmV0ZW50aW9uXG4gICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgYCR7aWR9TG9nR3JvdXBgLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3N0YWNrTmFtZX0tJHtpZH1gLFxuICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9XRUVLXG4gICAgfSk7XG5cbiAgICAvLyBQYXRoIHRvIHRoZSBMYW1iZGEgaGFuZGxlciBjb2RlXG4gICAgLy8gVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgaW5kZXgubWpzIGFuZCBwYWNrYWdlLmpzb24gd2l0aCBwZyBkZXBlbmRlbmN5XG4gICAgY29uc3QgaGFuZGxlclBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIm1pZ3JhdGlvbi1sYW1iZGEtaGFuZGxlclwiKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIHdpdGggYnVuZGxlZCBkZXBlbmRlbmNpZXNcbiAgICAvLyBUaGUgaGFuZGxlciBkaXJlY3RvcnkgbXVzdCBoYXZlIG5vZGVfbW9kdWxlcyBpbnN0YWxsZWQgZHVyaW5nIENESyBzeW50aFxuICAgIC8vIG9yIHVzZSBDREsncyBidW5kbGluZyBmZWF0dXJlXG4gICAgdGhpcy5mdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCBgJHtpZH1GdW5jdGlvbmAsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogYCR7c3RhY2tOYW1lfS0ke2lkfWAsXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChoYW5kbGVyUGF0aCwge1xuICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgIGltYWdlOiBSdW50aW1lLk5PREVKU18yMF9YLmJ1bmRsaW5nSW1hZ2UsXG4gICAgICAgICAgY29tbWFuZDogW1xuICAgICAgICAgICAgXCJiYXNoXCIsXG4gICAgICAgICAgICBcIi1jXCIsXG4gICAgICAgICAgICBbXCJucG0gaW5zdGFsbCAtLW9taXQ9ZGV2XCIsIFwiY3AgLXIgLiAvYXNzZXQtb3V0cHV0L1wiXS5qb2luKFwiICYmIFwiKVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0sXG4gICAgICBzZWN1cml0eUdyb3VwczogW3NlY3VyaXR5R3JvdXBdLFxuICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMocHJvcHMudGltZW91dCA/PyAzMDApLFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSA/PyAyNTYsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTRUNSRVRfQVJOOiBwcm9wcy5zZWNyZXRBcm4sXG4gICAgICAgIERBVEFCQVNFX0VORFBPSU5UOiBwcm9wcy5kYXRhYmFzZUVuZHBvaW50LFxuICAgICAgICBEQVRBQkFTRV9QT1JUOiBwcm9wcy5kYXRhYmFzZVBvcnQsXG4gICAgICAgIERBVEFCQVNFX05BTUU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgREFUQUJBU0VfRU5HSU5FOiBwcm9wcy5kYXRhYmFzZUVuZ2luZVxuICAgICAgfSxcbiAgICAgIGxvZ0dyb3VwXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5mdW5jdGlvbi5mdW5jdGlvbkFybjtcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IHRoaXMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lO1xuXG4gICAgLy8gRXhwb3J0IGZ1bmN0aW9uIEFSTiBmb3IgQ0xJIHVzZVxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9RnVuY3Rpb25Bcm5gLCB7XG4gICAgICBrZXk6IGAke3N0YWNrTmFtZX0ke2lkfUZ1bmN0aW9uQXJuYCxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3N0YWNrTmFtZX0ke2lkfUZ1bmN0aW9uQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmZ1bmN0aW9uQXJuLFxuICAgICAgZGVzY3JpcHRpb246IGBBUk4gb2YgdGhlICR7aWR9IG1pZ3JhdGlvbiBMYW1iZGEgZnVuY3Rpb25gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUZ1bmN0aW9uTmFtZWAsIHtcbiAgICAgIGtleTogYCR7c3RhY2tOYW1lfSR7aWR9RnVuY3Rpb25OYW1lYCxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3N0YWNrTmFtZX0ke2lkfUZ1bmN0aW9uTmFtZWAsXG4gICAgICB2YWx1ZTogdGhpcy5mdW5jdGlvbk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYE5hbWUgb2YgdGhlICR7aWR9IG1pZ3JhdGlvbiBMYW1iZGEgZnVuY3Rpb25gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { type Role } from "..";
|
|
3
|
-
interface AttachManagedPolicyProps {
|
|
4
|
-
instanceArn: string;
|
|
5
|
-
permissionSet: string;
|
|
6
|
-
permissionSetArn: string;
|
|
7
|
-
managedPolicyArn: string;
|
|
8
|
-
role: Role;
|
|
9
|
-
}
|
|
10
|
-
export declare class AttachManagedPolicy extends Construct {
|
|
11
|
-
constructor(scope: Construct, id: string, props: AttachManagedPolicyProps);
|
|
12
|
-
}
|
|
13
|
-
export {};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AttachManagedPolicy = void 0;
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const awsCustomResource_1 = require("../../utilities/awsCustomResource");
|
|
7
|
-
class AttachManagedPolicy extends constructs_1.Construct {
|
|
8
|
-
constructor(scope, id, props) {
|
|
9
|
-
super(scope, id);
|
|
10
|
-
new awsCustomResource_1.AwsCustomResource(this, "attachManagedPolicy", {
|
|
11
|
-
onCreate: {
|
|
12
|
-
service: "sso-admin",
|
|
13
|
-
action: "AttachManagedPolicyToPermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/AttachManagedPolicyToPermissionSetCommand
|
|
14
|
-
parameters: {
|
|
15
|
-
InstanceArn: props.instanceArn,
|
|
16
|
-
PermissionSetArn: props.permissionSetArn,
|
|
17
|
-
ManagedPolicyArn: props.managedPolicyArn
|
|
18
|
-
},
|
|
19
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`attachManagedPolicyToPermissionSet${props.permissionSet}`)
|
|
20
|
-
},
|
|
21
|
-
onDelete: {
|
|
22
|
-
service: "sso-admin",
|
|
23
|
-
action: "DetachManagedPolicyFromPermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/DetachManagedPolicyFromPermissionSetCommand/
|
|
24
|
-
parameters: {
|
|
25
|
-
InstanceArn: props.instanceArn,
|
|
26
|
-
PermissionSetArn: props.permissionSetArn,
|
|
27
|
-
ManagedPolicyArn: props.managedPolicyArn
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
policy: customResources.AwsCustomResourcePolicy.fromSdkCalls({
|
|
31
|
-
resources: ["*"]
|
|
32
|
-
}),
|
|
33
|
-
// TODO: Lock down permissions, when we're ready to troubleshoot intermittent policy errors
|
|
34
|
-
// role: props.role,
|
|
35
|
-
// policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
36
|
-
// new PolicyStatement({
|
|
37
|
-
// actions: [
|
|
38
|
-
// "sso:ProvisionPermissionSet",
|
|
39
|
-
// "sso:AttachManagedPolicyToPermissionSet",
|
|
40
|
-
// "sso:DetachManagedPolicyFromPermissionSet",
|
|
41
|
-
// "sso:TagResource"
|
|
42
|
-
// ],
|
|
43
|
-
// resources: ["*"]
|
|
44
|
-
// })
|
|
45
|
-
// ]),
|
|
46
|
-
resourceType: "Custom::PermissionSet"
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.AttachManagedPolicy = AttachManagedPolicy;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoTWFuYWdlZFBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hdHRhY2hNYW5hZ2VkUG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBV3RFLE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2pELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLG9DQUFvQyxFQUFFLDRIQUE0SDtnQkFDMUssVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDekM7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQscUNBQXFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FDM0Q7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLHNDQUFzQyxFQUFFLCtIQUErSDtnQkFDL0ssVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDekM7YUFDRjtZQUNELE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQztZQUNGLDJGQUEyRjtZQUMzRixvQkFBb0I7WUFDcEIsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsc0NBQXNDO1lBQ3RDLGtEQUFrRDtZQUNsRCxvREFBb0Q7WUFDcEQsMEJBQTBCO1lBQzFCLFNBQVM7WUFDVCx1QkFBdUI7WUFDdkIsT0FBTztZQUNQLE1BQU07WUFDTixZQUFZLEVBQUUsdUJBQXVCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdDRCxrREE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgUm9sZSB9IGZyb20gXCIuLlwiO1xuXG5pbnRlcmZhY2UgQXR0YWNoTWFuYWdlZFBvbGljeVByb3BzIHtcbiAgaW5zdGFuY2VBcm46IHN0cmluZztcbiAgcGVybWlzc2lvblNldDogc3RyaW5nO1xuICBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmc7XG4gIG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZztcbiAgcm9sZTogUm9sZTtcbn1cblxuZXhwb3J0IGNsYXNzIEF0dGFjaE1hbmFnZWRQb2xpY3kgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXR0YWNoTWFuYWdlZFBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcImF0dGFjaE1hbmFnZWRQb2xpY3lcIiwge1xuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9zc28tYWRtaW4vY29tbWFuZC9BdHRhY2hNYW5hZ2VkUG9saWN5VG9QZXJtaXNzaW9uU2V0Q29tbWFuZFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgIFBlcm1pc3Npb25TZXRBcm46IHByb3BzLnBlcm1pc3Npb25TZXRBcm4sXG4gICAgICAgICAgTWFuYWdlZFBvbGljeUFybjogcHJvcHMubWFuYWdlZFBvbGljeUFyblxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYGF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXQke3Byb3BzLnBlcm1pc3Npb25TZXR9YFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkRldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL0RldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldENvbW1hbmQvXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgUGVybWlzc2lvblNldEFybjogcHJvcHMucGVybWlzc2lvblNldEFybixcbiAgICAgICAgICBNYW5hZ2VkUG9saWN5QXJuOiBwcm9wcy5tYW5hZ2VkUG9saWN5QXJuXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pLFxuICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgLy8gcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyAgICAgYWN0aW9uczogW1xuICAgICAgLy8gICAgICAgXCJzc286UHJvdmlzaW9uUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286QXR0YWNoTWFuYWdlZFBvbGljeVRvUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286RGV0YWNoTWFuYWdlZFBvbGljeUZyb21QZXJtaXNzaW9uU2V0XCIsXG4gICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAvLyAgICAgXSxcbiAgICAgIC8vICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIC8vICAgfSlcbiAgICAgIC8vIF0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UGVybWlzc2lvblNldFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SecurityGroup = void 0;
|
|
4
|
-
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
5
|
-
class SecurityGroup extends ec2.SecurityGroup {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id, {
|
|
8
|
-
...props,
|
|
9
|
-
description: props.description || `${id} Security Group`
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.SecurityGroup = SecurityGroup;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlHcm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9zZWN1cml0eUdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUczQyxNQUFhLGFBQWMsU0FBUSxHQUFHLENBQUMsYUFBYTtJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGlCQUFpQjtTQUN6RCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxzQ0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cCBleHRlbmRzIGVjMi5TZWN1cml0eUdyb3VwIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGVjMi5TZWN1cml0eUdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBTZWN1cml0eSBHcm91cGBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Role } from "aws-cdk-lib/aws-iam";
|
|
2
|
-
import { type Construct } from "constructs";
|
|
3
|
-
export interface MonitoringRoleConfig {
|
|
4
|
-
/**
|
|
5
|
-
* The AWS account ID of the Fjall webapp that will assume this role
|
|
6
|
-
*/
|
|
7
|
-
webappAccountId: string;
|
|
8
|
-
/**
|
|
9
|
-
* The application name to scope the role's permissions to
|
|
10
|
-
*/
|
|
11
|
-
appName: string;
|
|
12
|
-
/**
|
|
13
|
-
* Optional role name prefix. Defaults to "FjallMonitoring"
|
|
14
|
-
*/
|
|
15
|
-
roleNamePrefix?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Optional IAM path for the role. Defaults to "/"
|
|
18
|
-
*/
|
|
19
|
-
rolePath?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Factory to build a cross-account monitoring IAM role that allows the Fjall webapp
|
|
23
|
-
* to query CloudWatch metrics, ECS service status, and logs for this application.
|
|
24
|
-
*
|
|
25
|
-
*/
|
|
26
|
-
export declare class MonitoringRoleFactory {
|
|
27
|
-
static build(id: string, config: MonitoringRoleConfig): (_app: Construct, scope: Construct) => Role;
|
|
28
|
-
}
|
|
29
|
-
export default MonitoringRoleFactory;
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MonitoringRoleFactory = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
/**
|
|
7
|
-
* Factory to build a cross-account monitoring IAM role that allows the Fjall webapp
|
|
8
|
-
* to query CloudWatch metrics, ECS service status, and logs for this application.
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
class MonitoringRoleFactory {
|
|
12
|
-
static build(id, config) {
|
|
13
|
-
return (_app, scope) => {
|
|
14
|
-
const stack = aws_cdk_lib_1.Stack.of(scope);
|
|
15
|
-
const role = new aws_iam_1.Role(scope, id, {
|
|
16
|
-
roleName: `${config.roleNamePrefix || "FjallMonitoring"}-${config.appName}`,
|
|
17
|
-
path: config.rolePath || "/",
|
|
18
|
-
assumedBy: new aws_iam_1.AccountPrincipal(config.webappAccountId),
|
|
19
|
-
description: `Cross-account monitoring role for Fjall application: ${config.appName}`
|
|
20
|
-
});
|
|
21
|
-
// CloudWatch Metrics - all resources
|
|
22
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
23
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
24
|
-
actions: [
|
|
25
|
-
"cloudwatch:GetMetricData",
|
|
26
|
-
"cloudwatch:GetMetricStatistics",
|
|
27
|
-
"cloudwatch:ListMetrics"
|
|
28
|
-
],
|
|
29
|
-
resources: ["*"]
|
|
30
|
-
}));
|
|
31
|
-
// ECS - scoped to app resources
|
|
32
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
33
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
34
|
-
actions: [
|
|
35
|
-
"ecs:DescribeServices",
|
|
36
|
-
"ecs:DescribeTasks",
|
|
37
|
-
"ecs:ListTasks",
|
|
38
|
-
"ecs:DescribeClusters",
|
|
39
|
-
"ecs:ListServices"
|
|
40
|
-
],
|
|
41
|
-
resources: ["*"],
|
|
42
|
-
conditions: {
|
|
43
|
-
StringEquals: {
|
|
44
|
-
"aws:ResourceTag/fjall:costAllocation:service": config.appName
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}));
|
|
48
|
-
// RDS - describe and monitoring
|
|
49
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
50
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
51
|
-
actions: [
|
|
52
|
-
"rds:DescribeDBInstances",
|
|
53
|
-
"rds:DescribeDBClusters",
|
|
54
|
-
"rds:DescribeDBProxies",
|
|
55
|
-
"rds:ListTagsForResource"
|
|
56
|
-
],
|
|
57
|
-
resources: ["*"]
|
|
58
|
-
}));
|
|
59
|
-
// S3 - bucket metrics and listing
|
|
60
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
61
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
62
|
-
actions: [
|
|
63
|
-
"s3:GetBucketLocation",
|
|
64
|
-
"s3:GetBucketMetricsConfiguration",
|
|
65
|
-
"s3:GetBucketTagging",
|
|
66
|
-
"s3:ListBucket",
|
|
67
|
-
"s3:ListAllMyBuckets"
|
|
68
|
-
],
|
|
69
|
-
resources: ["*"]
|
|
70
|
-
}));
|
|
71
|
-
// Lambda - function metrics and status
|
|
72
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
73
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
74
|
-
actions: [
|
|
75
|
-
"lambda:GetFunction",
|
|
76
|
-
"lambda:GetFunctionConfiguration",
|
|
77
|
-
"lambda:ListFunctions",
|
|
78
|
-
"lambda:ListTags"
|
|
79
|
-
],
|
|
80
|
-
resources: ["*"]
|
|
81
|
-
}));
|
|
82
|
-
// Application Load Balancer - metrics and health
|
|
83
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
84
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
85
|
-
actions: [
|
|
86
|
-
"elasticloadbalancing:DescribeLoadBalancers",
|
|
87
|
-
"elasticloadbalancing:DescribeTargetGroups",
|
|
88
|
-
"elasticloadbalancing:DescribeTargetHealth",
|
|
89
|
-
"elasticloadbalancing:DescribeTags"
|
|
90
|
-
],
|
|
91
|
-
resources: ["*"]
|
|
92
|
-
}));
|
|
93
|
-
// CloudWatch Logs - read logs for all app resources
|
|
94
|
-
role.addToPolicy(new aws_iam_1.PolicyStatement({
|
|
95
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
96
|
-
actions: [
|
|
97
|
-
"logs:FilterLogEvents",
|
|
98
|
-
"logs:GetLogEvents",
|
|
99
|
-
"logs:DescribeLogGroups",
|
|
100
|
-
"logs:DescribeLogStreams"
|
|
101
|
-
],
|
|
102
|
-
resources: [
|
|
103
|
-
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/ecs/${config.appName}*:*`,
|
|
104
|
-
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/lambda/${config.appName}*:*`,
|
|
105
|
-
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/rds/${config.appName}*:*`
|
|
106
|
-
]
|
|
107
|
-
}));
|
|
108
|
-
// Export the role ARN so it can be retrieved after deployment
|
|
109
|
-
new aws_cdk_lib_1.CfnOutput(scope, `${id}Arn`, {
|
|
110
|
-
value: role.roleArn,
|
|
111
|
-
description: `ARN of the monitoring role for ${config.appName}`,
|
|
112
|
-
exportName: `${config.appName}-MonitoringRoleArn`
|
|
113
|
-
});
|
|
114
|
-
return role;
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.MonitoringRoleFactory = MonitoringRoleFactory;
|
|
119
|
-
exports.default = MonitoringRoleFactory;
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZ1JvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL21vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFLNkI7QUF5QjdCOzs7O0dBSUc7QUFDSCxNQUFhLHFCQUFxQjtJQUN6QixNQUFNLENBQUMsS0FBSyxDQUNqQixFQUFVLEVBQ1YsTUFBNEI7UUFFNUIsT0FBTyxDQUFDLElBQWUsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDM0MsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDL0IsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLGNBQWMsSUFBSSxpQkFBaUIsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUMzRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxHQUFHO2dCQUM1QixTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2dCQUN2RCxXQUFXLEVBQUUsd0RBQXdELE1BQU0sQ0FBQyxPQUFPLEVBQUU7YUFDdEYsQ0FBQyxDQUFDO1lBRUgscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSx5QkFBZSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2dCQUNwQixPQUFPLEVBQUU7b0JBQ1AsMEJBQTBCO29CQUMxQixnQ0FBZ0M7b0JBQ2hDLHdCQUF3QjtpQkFDekI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ2pCLENBQUMsQ0FDSCxDQUFDO1lBRUYsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSx5QkFBZSxDQUFD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QUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJJRCxzREFxSUM7QUFFRCxrQkFBZSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFJvbGUsXG4gIEFjY291bnRQcmluY2lwYWwsXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgRWZmZWN0XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZ1JvbGVDb25maWcge1xuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEIG9mIHRoZSBGamFsbCB3ZWJhcHAgdGhhdCB3aWxsIGFzc3VtZSB0aGlzIHJvbGVcbiAgICovXG4gIHdlYmFwcEFjY291bnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXBwbGljYXRpb24gbmFtZSB0byBzY29wZSB0aGUgcm9sZSdzIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBhcHBOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJvbGUgbmFtZSBwcmVmaXguIERlZmF1bHRzIHRvIFwiRmphbGxNb25pdG9yaW5nXCJcbiAgICovXG4gIHJvbGVOYW1lUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBJQU0gcGF0aCBmb3IgdGhlIHJvbGUuIERlZmF1bHRzIHRvIFwiL1wiXG4gICAqL1xuICByb2xlUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRvIGJ1aWxkIGEgY3Jvc3MtYWNjb3VudCBtb25pdG9yaW5nIElBTSByb2xlIHRoYXQgYWxsb3dzIHRoZSBGamFsbCB3ZWJhcHBcbiAqIHRvIHF1ZXJ5IENsb3VkV2F0Y2ggbWV0cmljcywgRUNTIHNlcnZpY2Ugc3RhdHVzLCBhbmQgbG9ncyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nUm9sZUZhY3Rvcnkge1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiBNb25pdG9yaW5nUm9sZUNvbmZpZ1xuICApOiAoX2FwcDogQ29uc3RydWN0LCBzY29wZTogQ29uc3RydWN0KSA9PiBSb2xlIHtcbiAgICByZXR1cm4gKF9hcHA6IENvbnN0cnVjdCwgc2NvcGU6IENvbnN0cnVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZShzY29wZSwgaWQsIHtcbiAgICAgICAgcm9sZU5hbWU6IGAke2NvbmZpZy5yb2xlTmFtZVByZWZpeCB8fCBcIkZqYWxsTW9uaXRvcmluZ1wifS0ke2NvbmZpZy5hcHBOYW1lfWAsXG4gICAgICAgIHBhdGg6IGNvbmZpZy5yb2xlUGF0aCB8fCBcIi9cIixcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgQWNjb3VudFByaW5jaXBhbChjb25maWcud2ViYXBwQWNjb3VudElkKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBDcm9zcy1hY2NvdW50IG1vbml0b3Jpbmcgcm9sZSBmb3IgRmphbGwgYXBwbGljYXRpb246ICR7Y29uZmlnLmFwcE5hbWV9YFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENsb3VkV2F0Y2ggTWV0cmljcyAtIGFsbCByZXNvdXJjZXNcbiAgICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpHZXRNZXRyaWNEYXRhXCIsXG4gICAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljc1wiLFxuICAgICAgICAgICAgXCJjbG91ZHdhdGNoOkxpc3RNZXRyaWNzXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gRUNTIC0gc2NvcGVkIHRvIGFwcCByZXNvdXJjZXNcbiAgICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVDbHVzdGVyc1wiLFxuICAgICAgICAgICAgXCJlY3M6TGlzdFNlcnZpY2VzXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgXCJhd3M6UmVzb3VyY2VUYWcvZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOiBjb25maWcuYXBwTmFtZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFJEUyAtIGRlc2NyaWJlIGFuZCBtb25pdG9yaW5nXG4gICAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcInJkczpEZXNjcmliZURCSW5zdGFuY2VzXCIsXG4gICAgICAgICAgICBcInJkczpEZXNjcmliZURCQ2x1c3RlcnNcIixcbiAgICAgICAgICAgIFwicmRzOkRlc2NyaWJlREJQcm94aWVzXCIsXG4gICAgICAgICAgICBcInJkczpMaXN0VGFnc0ZvclJlc291cmNlXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gUzMgLSBidWNrZXQgbWV0cmljcyBhbmQgbGlzdGluZ1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRMb2NhdGlvblwiLFxuICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvblwiLFxuICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRUYWdnaW5nXCIsXG4gICAgICAgICAgICBcInMzOkxpc3RCdWNrZXRcIixcbiAgICAgICAgICAgIFwiczM6TGlzdEFsbE15QnVja2V0c1wiXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIExhbWJkYSAtIGZ1bmN0aW9uIG1ldHJpY3MgYW5kIHN0YXR1c1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJsYW1iZGE6R2V0RnVuY3Rpb25cIixcbiAgICAgICAgICAgIFwibGFtYmRhOkdldEZ1bmN0aW9uQ29uZmlndXJhdGlvblwiLFxuICAgICAgICAgICAgXCJsYW1iZGE6TGlzdEZ1bmN0aW9uc1wiLFxuICAgICAgICAgICAgXCJsYW1iZGE6TGlzdFRhZ3NcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIC0gbWV0cmljcyBhbmQgaGVhbHRoXG4gICAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVsYXN0aWNsb2FkYmFsYW5jaW5nOkRlc2NyaWJlTG9hZEJhbGFuY2Vyc1wiLFxuICAgICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZVRhcmdldEdyb3Vwc1wiLFxuICAgICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZVRhcmdldEhlYWx0aFwiLFxuICAgICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZVRhZ3NcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyBDbG91ZFdhdGNoIExvZ3MgLSByZWFkIGxvZ3MgZm9yIGFsbCBhcHAgcmVzb3VyY2VzXG4gICAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImxvZ3M6RmlsdGVyTG9nRXZlbnRzXCIsXG4gICAgICAgICAgICBcImxvZ3M6R2V0TG9nRXZlbnRzXCIsXG4gICAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbXNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2Vjcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2xhbWJkYS8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL3Jkcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmBcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyBFeHBvcnQgdGhlIHJvbGUgQVJOIHNvIGl0IGNhbiBiZSByZXRyaWV2ZWQgYWZ0ZXIgZGVwbG95bWVudFxuICAgICAgbmV3IENmbk91dHB1dChzY29wZSwgYCR7aWR9QXJuYCwge1xuICAgICAgICB2YWx1ZTogcm9sZS5yb2xlQXJuLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEFSTiBvZiB0aGUgbW9uaXRvcmluZyByb2xlIGZvciAke2NvbmZpZy5hcHBOYW1lfWAsXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2NvbmZpZy5hcHBOYW1lfS1Nb25pdG9yaW5nUm9sZUFybmBcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcm9sZTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1vbml0b3JpbmdSb2xlRmFjdG9yeTtcbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare function capitalizeString(string: string): string;
|
|
2
|
-
/**
|
|
3
|
-
* Convert a kebab-case or snake_case name to PascalCase.
|
|
4
|
-
* e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
|
|
5
|
-
*/
|
|
6
|
-
export declare function toPascalCase(name: string): string;
|
|
7
|
-
/**
|
|
8
|
-
* Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
|
|
9
|
-
* Three-pass regex: split acronyms, split camel boundaries, replace separators.
|
|
10
|
-
* e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
|
|
11
|
-
*/
|
|
12
|
-
export declare function toKebab(str: string): string;
|