@fjall/components-infrastructure 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app.d.ts +2 -1
- package/dist/lib/app.js +4 -2
- package/dist/lib/config/aws/accountId.d.ts +6 -0
- package/dist/lib/config/aws/accountId.js +33 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +10 -0
- package/dist/lib/config/aws/cloudTrail.js +22 -0
- package/dist/lib/config/aws/costAllocationTags.d.ts +4 -0
- package/dist/lib/config/aws/costAllocationTags.js +59 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
- package/dist/lib/config/aws/ecrDefaultImage.d.ts +11 -0
- package/dist/lib/config/aws/ecrDefaultImage.js +127 -0
- package/dist/lib/config/aws/eventBus.d.ts +7 -0
- package/dist/lib/config/aws/eventBus.js +24 -0
- package/dist/lib/config/aws/identityCenter.d.ts +13 -0
- package/dist/lib/config/aws/identityCenter.js +102 -0
- package/dist/lib/config/aws/identityCenterUser.d.ts +16 -0
- package/dist/lib/config/aws/identityCenterUser.js +125 -0
- package/dist/lib/config/aws/index.d.ts +12 -0
- package/dist/lib/config/aws/index.js +29 -0
- package/dist/lib/config/aws/ipam.d.ts +5 -0
- package/dist/lib/config/aws/ipam.js +48 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +8 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.js +58 -0
- package/dist/lib/config/aws/ipamPool.d.ts +5 -0
- package/dist/lib/config/aws/ipamPool.js +56 -0
- package/dist/lib/config/aws/ipamPoolId.d.ts +9 -0
- package/dist/lib/config/aws/ipamPoolId.js +36 -0
- package/dist/lib/config/aws/{base/identityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
- package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
- package/dist/lib/config/aws/organisation.d.ts +28 -0
- package/dist/lib/config/aws/organisation.js +142 -0
- package/dist/lib/config/aws/organisationId.d.ts +7 -0
- package/dist/lib/config/aws/organisationId.js +46 -0
- package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
- package/dist/lib/config/aws/ramEnableSharing.js +35 -0
- package/dist/lib/config/aws/ramSharing.d.ts +4 -0
- package/dist/lib/config/aws/ramSharing.js +35 -0
- package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
- package/dist/lib/config/aws/users.js +126 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +4 -1
- package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
- package/dist/lib/patterns/aws/basicApp.js +90 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
- package/dist/lib/patterns/aws/buildkite.js +346 -0
- package/dist/lib/patterns/aws/freeTierApp.d.ts +46 -0
- package/dist/lib/patterns/aws/freeTierApp.js +95 -0
- package/dist/lib/patterns/aws/hostedZone.d.ts +11 -0
- package/dist/lib/patterns/aws/hostedZone.js +73 -0
- package/dist/lib/patterns/aws/index.d.ts +5 -2
- package/dist/lib/patterns/aws/index.js +6 -3
- package/dist/lib/patterns/aws/managedAccount.d.ts +13 -0
- package/dist/lib/patterns/aws/managedAccount.js +39 -0
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +19 -0
- package/dist/lib/patterns/aws/managedOrganisation.js +45 -0
- package/dist/lib/patterns/aws/managedPlatform.d.ts +13 -0
- package/dist/lib/patterns/aws/managedPlatform.js +22 -0
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +46 -0
- package/dist/lib/patterns/aws/spotInstanceApp.js +95 -0
- package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +9 -0
- package/dist/lib/patterns/aws/subdomainHostedZone.js +39 -0
- package/dist/lib/resources/aws/awsStack.d.ts +5 -0
- package/dist/lib/resources/aws/awsStack.js +11 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +74 -0
- package/dist/lib/resources/aws/compute/ecs.js +269 -0
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +352 -0
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecsSpot.js +334 -0
- package/dist/lib/resources/aws/compute/index.d.ts +2 -0
- package/dist/lib/resources/aws/compute/index.js +19 -0
- package/dist/lib/resources/aws/compute/lambda.d.ts +13 -6
- package/dist/lib/resources/aws/compute/lambda.js +23 -4
- package/dist/lib/resources/aws/constant/ecr.js +4 -3
- package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
- package/dist/lib/resources/aws/constant/vpc.js +18 -8
- package/dist/lib/resources/aws/database/database.d.ts +16 -0
- package/dist/lib/resources/aws/database/database.js +30 -0
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +17 -0
- package/dist/lib/resources/aws/database/databaseFreeTier.js +31 -0
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +17 -0
- package/dist/lib/resources/aws/database/databaseInstance.js +32 -0
- package/dist/lib/resources/aws/database/index.d.ts +2 -0
- package/dist/lib/resources/aws/database/index.js +19 -0
- package/dist/lib/resources/aws/database/rds.d.ts +23 -0
- package/dist/lib/resources/aws/database/rds.js +130 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +36 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.js +80 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +42 -0
- package/dist/lib/resources/aws/database/rdsInstance.js +173 -0
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
- package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
- package/dist/lib/resources/aws/iam/index.d.ts +5 -0
- package/dist/lib/resources/aws/iam/index.js +22 -0
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
- package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
- package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/policy.js +13 -0
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +18 -0
- package/dist/lib/resources/aws/logging/cloudTrail.d.ts +18 -0
- package/dist/lib/resources/aws/logging/cloudTrail.js +46 -0
- package/dist/lib/resources/aws/logging/logGroup.d.ts +8 -4
- package/dist/lib/resources/aws/logging/logGroup.js +6 -7
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
- package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
- package/dist/lib/resources/aws/networking/index.d.ts +3 -0
- package/dist/lib/resources/aws/networking/index.js +20 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
- package/dist/lib/resources/aws/networking/ipam.js +3 -3
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +14 -5
- package/dist/lib/resources/aws/networking/ipamPool.js +69 -22
- package/dist/lib/resources/aws/networking/vpc.d.ts +29 -0
- package/dist/lib/resources/aws/networking/vpc.js +64 -0
- package/dist/lib/resources/aws/secrets/alias.d.ts +5 -0
- package/dist/lib/resources/aws/secrets/alias.js +13 -0
- package/dist/lib/resources/aws/secrets/index.d.ts +5 -0
- package/dist/lib/resources/aws/secrets/index.js +22 -0
- package/dist/lib/resources/aws/secrets/kms.d.ts +14 -0
- package/dist/lib/resources/aws/secrets/kms.js +34 -0
- package/dist/lib/resources/aws/secrets/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/secrets/parameter.js +100 -0
- package/dist/lib/resources/aws/secrets/secret.d.ts +24 -0
- package/dist/lib/resources/aws/secrets/secret.js +53 -0
- package/dist/lib/resources/aws/storage/ecr.d.ts +12 -0
- package/dist/lib/resources/aws/storage/ecr.js +31 -0
- package/dist/lib/resources/aws/storage/index.d.ts +2 -0
- package/dist/lib/resources/aws/storage/index.js +19 -0
- package/dist/lib/resources/aws/storage/s3.d.ts +11 -0
- package/dist/lib/resources/aws/storage/s3.js +44 -0
- package/dist/lib/resources/aws/store/alias.d.ts +5 -0
- package/dist/lib/resources/aws/store/alias.js +13 -0
- package/dist/lib/resources/aws/store/database.d.ts +7 -2
- package/dist/lib/resources/aws/store/database.js +9 -5
- package/dist/lib/resources/aws/store/index.d.ts +7 -0
- package/dist/lib/resources/aws/store/index.js +24 -0
- package/dist/lib/resources/aws/store/kms.d.ts +14 -0
- package/dist/lib/resources/aws/store/kms.js +34 -0
- package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/store/parameter.js +100 -0
- package/dist/lib/resources/aws/store/rds.d.ts +15 -15
- package/dist/lib/resources/aws/store/rds.js +110 -68
- package/dist/lib/resources/aws/store/s3.d.ts +11 -0
- package/dist/lib/resources/aws/store/s3.js +43 -0
- package/dist/lib/resources/aws/store/secret.d.ts +26 -0
- package/dist/lib/resources/aws/store/secret.js +55 -0
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
- package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +15 -0
- package/dist/lib/resources/aws/utilities/codeBuild.js +28 -0
- package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
- package/dist/lib/resources/aws/utilities/customResource.js +24 -5
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
- package/dist/lib/resources/index.d.ts +1 -0
- package/dist/lib/resources/index.js +18 -0
- package/dist/lib/types.d.ts +3 -0
- package/dist/lib/types.js +3 -0
- package/dist/lib/utils/capitalizeString.d.ts +1 -0
- package/dist/lib/utils/capitalizeString.js +8 -0
- package/dist/lib/utils/getAccountId.d.ts +1 -0
- package/dist/lib/utils/getAccountId.js +12 -0
- package/dist/lib/utils/getCidr.d.ts +8 -0
- package/dist/lib/utils/getCidr.js +42 -0
- package/dist/lib/utils/getConfig.d.ts +7 -5
- package/dist/lib/utils/getConfig.js +39 -11
- package/dist/lib/utils/getStackOutput.d.ts +1 -0
- package/dist/lib/utils/getStackOutput.js +20 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +18 -0
- package/dist/lib/utils/stripAndCamelCase.d.ts +1 -0
- package/dist/lib/utils/stripAndCamelCase.js +17 -0
- package/dist/lib/utils/tagResource.d.ts +4 -0
- package/dist/lib/utils/tagResource.js +10 -0
- package/dist/lib/utils/usersConfig.d.ts +7 -0
- package/dist/lib/utils/usersConfig.js +18 -0
- package/package.json +23 -18
- package/dist/lib/config/aws/base/costAllocationTags.d.ts +0 -5
- package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
- package/dist/lib/config/aws/base/iamIdentityCenter.d.ts +0 -5
- package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
- package/dist/lib/config/aws/base/identityCenter.js +0 -90
- package/dist/lib/config/aws/base/ipam.js +0 -29
- package/dist/lib/config/aws/base/ipamPool.js +0 -46
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
- package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
- package/dist/lib/examples/cutomResourceExample.js +0 -45
- package/dist/lib/patterns/aws/customResource.d.ts +0 -7
- package/dist/lib/patterns/aws/customResource.js +0 -28
- package/dist/lib/patterns/aws/multiEnvironmentOrganisation.d.ts +0 -33
- package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
- package/dist/lib/patterns/aws/webApp.d.ts +0 -17
- package/dist/lib/patterns/aws/webApp.js +0 -36
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
- package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
- package/dist/lib/resources/aws/compute/fargate.js +0 -50
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
- package/dist/lib/resources/aws/iam/assignment.js +0 -13
- package/dist/lib/resources/aws/iam/group.js +0 -15
- package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
- package/dist/lib/resources/aws/iam/iamRole.js +0 -18
- package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
- /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
|
@@ -1,20 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HostedZone = void 0;
|
|
3
|
+
exports.ImportedHostedZone = exports.SubdomainHostedZone = exports.HostedZone = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
4
5
|
const route53 = require("aws-cdk-lib/aws-route53");
|
|
5
|
-
const logGroup_1 = require("../logging/logGroup");
|
|
6
6
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
-
|
|
7
|
+
const iam_1 = require("../iam");
|
|
8
|
+
const getAccountId_1 = require("../../../utils/getAccountId");
|
|
9
|
+
class HostedZone extends constructs_1.Construct {
|
|
8
10
|
constructor(scope, id, props) {
|
|
9
|
-
super(scope, id
|
|
10
|
-
|
|
11
|
-
zoneName: props.zoneName
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
super(scope, id);
|
|
12
|
+
const hostedZone = new route53.HostedZone(this, "FjallHostedZone", {
|
|
13
|
+
zoneName: props.zoneName
|
|
14
|
+
});
|
|
15
|
+
const role = iam_1.Role.fromRoleArn(this, "delegateHostedZoneRole", aws_cdk_lib_1.Fn.importValue("DelegateHostedZoneRoleArn"));
|
|
16
|
+
hostedZone.grantDelegation(role);
|
|
17
|
+
new aws_cdk_lib_1.CfnOutput(this, `${props.zoneName.split(".").join("")}HostedZoneId`, {
|
|
18
|
+
key: "HostedZoneId",
|
|
19
|
+
value: hostedZone.hostedZoneId,
|
|
20
|
+
exportName: `${props.zoneName.split(".").join("")}HostedZoneId`
|
|
16
21
|
});
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
exports.HostedZone = HostedZone;
|
|
20
|
-
|
|
25
|
+
class SubdomainHostedZone extends constructs_1.Construct {
|
|
26
|
+
constructor(scope, id, props) {
|
|
27
|
+
super(scope, id);
|
|
28
|
+
// DelegationRoleArn
|
|
29
|
+
const delegationRoleArn = aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
30
|
+
account: (0, getAccountId_1.default)("production") || "TODO: Fail Gracefully",
|
|
31
|
+
region: "",
|
|
32
|
+
resource: "role",
|
|
33
|
+
resourceName: "DelegateHostedZoneRole",
|
|
34
|
+
service: "iam"
|
|
35
|
+
});
|
|
36
|
+
// Delegate Hosted Zone Role
|
|
37
|
+
const hostedZoneDelegationRole = iam_1.Role.fromRoleArn(this, "hostedZoneDelegationRole", delegationRoleArn);
|
|
38
|
+
// Subdomains
|
|
39
|
+
const delegatedHostedZone = new route53.HostedZone(this, `${props.delegatedZone}HostedZone`, {
|
|
40
|
+
zoneName: props.delegatedZone
|
|
41
|
+
});
|
|
42
|
+
new route53.CrossAccountZoneDelegationRecord(this, `${props.delegatedZone}DelegationRole`, {
|
|
43
|
+
delegationRole: hostedZoneDelegationRole,
|
|
44
|
+
delegatedZone: delegatedHostedZone,
|
|
45
|
+
parentHostedZoneName: props.parentHostedZoneName
|
|
46
|
+
});
|
|
47
|
+
new aws_cdk_lib_1.CfnOutput(this, `${props.delegatedZone.split(".").join("")}HostedZoneId`, {
|
|
48
|
+
key: "HostedZoneId",
|
|
49
|
+
value: delegatedHostedZone.hostedZoneId,
|
|
50
|
+
exportName: `${props.delegatedZone.split(".").join("")}HostedZoneId`
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.SubdomainHostedZone = SubdomainHostedZone;
|
|
55
|
+
class ImportedHostedZone extends constructs_1.Construct {
|
|
56
|
+
constructor(scope, id, props) {
|
|
57
|
+
super(scope, id);
|
|
58
|
+
const importedHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, "importedHostedZone", {
|
|
59
|
+
hostedZoneId: props.hostedZoneId,
|
|
60
|
+
zoneName: props.hostedZoneName
|
|
61
|
+
});
|
|
62
|
+
// Delegate Hosted Zone Role
|
|
63
|
+
const role = iam_1.Role.fromRoleArn(this, "delegateHostedZoneRole", aws_cdk_lib_1.Fn.importValue("DelegateHostedZoneRoleArn"));
|
|
64
|
+
importedHostedZone.grantDelegation(role);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.ImportedHostedZone = ImportedHostedZone;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsbURBQW1EO0FBQ25ELDZDQUFtRDtBQUNuRCxnQ0FBOEI7QUFDOUIsOERBQXVEO0FBY3ZELE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxVQUFJLENBQUMsV0FBVyxDQUMzQixJQUFJLEVBQ0osd0JBQXdCLEVBQ3hCLGdCQUFFLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLENBQzVDLENBQUM7UUFFRixVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUN2RSxHQUFHLEVBQUUsY0FBYztZQUNuQixLQUFLLEVBQUUsVUFBVSxDQUFDLFlBQVk7WUFDOUIsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjO1NBQ2hFLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRCRCxnQ0FzQkM7QUFFRCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBQ2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixvQkFBb0I7UUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsT0FBTyxFQUFFLElBQUEsc0JBQVksRUFBQyxZQUFZLENBQUMsSUFBSSx1QkFBdUI7WUFDOUQsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsd0JBQXdCO1lBQ3RDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE1BQU0sd0JBQXdCLEdBQUcsVUFBSSxDQUFDLFdBQVcsQ0FDL0MsSUFBSSxFQUNKLDBCQUEwQixFQUMxQixpQkFBaUIsQ0FDbEIsQ0FBQztRQUVGLGFBQWE7UUFDYixNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FDaEQsSUFBSSxFQUNKLEdBQUcsS0FBSyxDQUFDLGFBQWEsWUFBWSxFQUNsQztZQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYTtTQUM5QixDQUNGLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FDMUMsSUFBSSxFQUNKLEdBQUcsS0FBSyxDQUFDLGFBQWEsZ0JBQWdCLEVBQ3RDO1lBQ0UsY0FBYyxFQUFFLHdCQUF3QjtZQUN4QyxhQUFhLEVBQUUsbUJBQW1CO1lBQ2xDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDakQsQ0FDRixDQUFDO1FBRUYsSUFBSSx1QkFBUyxDQUNYLElBQUksRUFDSixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUN4RDtZQUNFLEdBQUcsRUFBRSxjQUFjO1lBQ25CLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxZQUFZO1lBQ3ZDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYztTQUNyRSxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqREQsa0RBaURDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUMvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUNwRSxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCO1lBQ0UsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYztTQUMvQixDQUNGLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsTUFBTSxJQUFJLEdBQUcsVUFBSSxDQUFDLFdBQVcsQ0FDM0IsSUFBSSxFQUNKLHdCQUF3QixFQUN4QixnQkFBRSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4sIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0IGdldEFjY291bnRJZCBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZ2V0QWNjb3VudElkXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgaG9zdGVkWm9uZVByb3BzIHtcbiAgem9uZU5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2Ugc3ViZG9tYWluSG9zdGVkWm9uZVByb3BzIHtcbiAgZGVsZWdhdGVkWm9uZTogc3RyaW5nO1xuICBwYXJlbnRIb3N0ZWRab25lTmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBpbXBvcnRlZEhvc3RlZFpvbmVQcm9wcyB7XG4gIGhvc3RlZFpvbmVJZDogc3RyaW5nO1xuICBob3N0ZWRab25lTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBob3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9IG5ldyByb3V0ZTUzLkhvc3RlZFpvbmUodGhpcywgXCJGamFsbEhvc3RlZFpvbmVcIiwge1xuICAgICAgem9uZU5hbWU6IHByb3BzLnpvbmVOYW1lXG4gICAgfSk7XG5cbiAgICBjb25zdCByb2xlID0gUm9sZS5mcm9tUm9sZUFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImRlbGVnYXRlSG9zdGVkWm9uZVJvbGVcIixcbiAgICAgIEZuLmltcG9ydFZhbHVlKFwiRGVsZWdhdGVIb3N0ZWRab25lUm9sZUFyblwiKVxuICAgICk7XG5cbiAgICBob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBcIkhvc3RlZFpvbmVJZFwiLFxuICAgICAgdmFsdWU6IGhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7cHJvcHMuem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJkb21haW5Ib3N0ZWRab25lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHN1YmRvbWFpbkhvc3RlZFpvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBEZWxlZ2F0aW9uUm9sZUFyblxuICAgIGNvbnN0IGRlbGVnYXRpb25Sb2xlQXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIGFjY291bnQ6IGdldEFjY291bnRJZChcInByb2R1Y3Rpb25cIikgfHwgXCJUT0RPOiBGYWlsIEdyYWNlZnVsbHlcIixcbiAgICAgIHJlZ2lvbjogXCJcIixcbiAgICAgIHJlc291cmNlOiBcInJvbGVcIixcbiAgICAgIHJlc291cmNlTmFtZTogXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlXCIsXG4gICAgICBzZXJ2aWNlOiBcImlhbVwiXG4gICAgfSk7XG5cbiAgICAvLyBEZWxlZ2F0ZSBIb3N0ZWQgWm9uZSBSb2xlXG4gICAgY29uc3QgaG9zdGVkWm9uZURlbGVnYXRpb25Sb2xlID0gUm9sZS5mcm9tUm9sZUFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImhvc3RlZFpvbmVEZWxlZ2F0aW9uUm9sZVwiLFxuICAgICAgZGVsZWdhdGlvblJvbGVBcm5cbiAgICApO1xuXG4gICAgLy8gU3ViZG9tYWluc1xuICAgIGNvbnN0IGRlbGVnYXRlZEhvc3RlZFpvbmUgPSBuZXcgcm91dGU1My5Ib3N0ZWRab25lKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlbGVnYXRlZFpvbmV9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiBwcm9wcy5kZWxlZ2F0ZWRab25lXG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyByb3V0ZTUzLkNyb3NzQWNjb3VudFpvbmVEZWxlZ2F0aW9uUmVjb3JkKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlbGVnYXRlZFpvbmV9RGVsZWdhdGlvblJvbGVgLFxuICAgICAge1xuICAgICAgICBkZWxlZ2F0aW9uUm9sZTogaG9zdGVkWm9uZURlbGVnYXRpb25Sb2xlLFxuICAgICAgICBkZWxlZ2F0ZWRab25lOiBkZWxlZ2F0ZWRIb3N0ZWRab25lLFxuICAgICAgICBwYXJlbnRIb3N0ZWRab25lTmFtZTogcHJvcHMucGFyZW50SG9zdGVkWm9uZU5hbWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbmV3IENmbk91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kZWxlZ2F0ZWRab25lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGAsXG4gICAgICB7XG4gICAgICAgIGtleTogXCJIb3N0ZWRab25lSWRcIixcbiAgICAgICAgdmFsdWU6IGRlbGVnYXRlZEhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5kZWxlZ2F0ZWRab25lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGBcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRlZEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogaW1wb3J0ZWRIb3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGltcG9ydGVkSG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLFxuICAgICAgXCJpbXBvcnRlZEhvc3RlZFpvbmVcIixcbiAgICAgIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lSWQsXG4gICAgICAgIHpvbmVOYW1lOiBwcm9wcy5ob3N0ZWRab25lTmFtZVxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBEZWxlZ2F0ZSBIb3N0ZWQgWm9uZSBSb2xlXG4gICAgY29uc3Qgcm9sZSA9IFJvbGUuZnJvbVJvbGVBcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlXCIsXG4gICAgICBGbi5pbXBvcnRWYWx1ZShcIkRlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5cIilcbiAgICApO1xuXG4gICAgaW1wb3J0ZWRIb3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("../../../patterns/aws/hostedZone"), exports);
|
|
18
|
+
__exportStar(require("./ipam"), exports);
|
|
19
|
+
__exportStar(require("./ipamPool"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRUFBaUQ7QUFDakQseUNBQXVCO0FBQ3ZCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVBvb2xcIjtcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Construct } from
|
|
2
|
-
import * as ec2 from
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
3
3
|
export declare class Ipam extends ec2.CfnIPAM {
|
|
4
4
|
constructor(scope: Construct, id: string, props?: ec2.CfnIPAMProps);
|
|
5
5
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Ipam = void 0;
|
|
4
4
|
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
5
|
-
//
|
|
5
|
+
// Enable IPAM
|
|
6
6
|
class Ipam extends ec2.CfnIPAM {
|
|
7
7
|
constructor(scope, id, props) {
|
|
8
8
|
super(scope, id, {
|
|
9
9
|
...props,
|
|
10
|
-
description: `
|
|
10
|
+
description: `Enable IPAM`
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.Ipam = Ipam;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBMkM7QUFFM0MsY0FBYztBQUNkLE1BQWEsSUFBSyxTQUFRLEdBQUcsQ0FBQyxPQUFPO0lBQ25DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsYUFBYTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxvQkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcblxuLy8gRW5hYmxlIElQQU1cbmV4cG9ydCBjbGFzcyBJcGFtIGV4dGVuZHMgZWMyLkNmbklQQU0ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGVjMi5DZm5JUEFNUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuQ2ZuSVBBTS5odG1sXG4gICAgICBkZXNjcmlwdGlvbjogYEVuYWJsZSBJUEFNYFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StackProps, Stack } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface IpamPoolProps extends StackProps {
|
|
4
|
+
orgAccounts: string[];
|
|
5
|
+
ipamScope?: string;
|
|
6
|
+
region: string;
|
|
7
|
+
}
|
|
8
|
+
interface IpamPoolStackProps extends StackProps {
|
|
9
|
+
orgAccounts: string[];
|
|
10
|
+
region: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class IpamPool extends Construct {
|
|
13
|
+
constructor(scope: Construct, id: string, props: IpamPoolProps);
|
|
6
14
|
}
|
|
7
15
|
export declare class IpamPoolStack extends Stack {
|
|
8
|
-
constructor(scope: Construct, id: string,
|
|
16
|
+
constructor(scope: Construct, id: string, props: IpamPoolStackProps);
|
|
9
17
|
}
|
|
18
|
+
export {};
|
|
@@ -2,34 +2,81 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IpamPoolStack = exports.IpamPool = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
7
|
+
const getCidr_1 = require("../../../utils/getCidr");
|
|
8
|
+
const resourceShare_1 = require("../utilities/resourceShare");
|
|
9
|
+
const getAccountId_1 = require("../../../utils/getAccountId");
|
|
10
|
+
class IpamPool extends constructs_1.Construct {
|
|
7
11
|
constructor(scope, id, props) {
|
|
8
|
-
super(scope, id
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
super(scope, id);
|
|
13
|
+
// Get the default IPAM scope ID from props, or CFN import
|
|
14
|
+
const IpamPrivateDefaultScopeId = props.ipamScope || aws_cdk_lib_1.Fn.importValue("IpamPrivateDefaultScopeId");
|
|
15
|
+
// Prioritise region from props, then from env
|
|
16
|
+
const region = props.region;
|
|
17
|
+
const organisationAccounts = props.orgAccounts.map((account) => account.toLowerCase());
|
|
18
|
+
for (const environment of organisationAccounts) {
|
|
19
|
+
const cidrBlock = new getCidr_1.default();
|
|
20
|
+
const freeCidrBlock = cidrBlock.getCidrBlock();
|
|
21
|
+
cidrBlock.updateState(freeCidrBlock, false);
|
|
22
|
+
const ipamPool = new aws_ec2_1.CfnIPAMPool(this, `${environment}IpamPool${freeCidrBlock}`, {
|
|
23
|
+
description: `${environment} - IPAM pool - ${region} - ${freeCidrBlock}`,
|
|
24
|
+
addressFamily: "ipv4",
|
|
25
|
+
ipamScopeId: IpamPrivateDefaultScopeId,
|
|
26
|
+
locale: region,
|
|
27
|
+
allocationResourceTags: [
|
|
28
|
+
{
|
|
29
|
+
key: "fjall:operations:pool",
|
|
30
|
+
value: `${environment}`
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
autoImport: true,
|
|
34
|
+
provisionedCidrs: [{ cidr: freeCidrBlock }],
|
|
35
|
+
tags: [
|
|
36
|
+
{
|
|
37
|
+
key: "fjall:operations:pool",
|
|
38
|
+
value: "top-level"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "fjall:costAllocation:environment",
|
|
42
|
+
value: `${environment}`
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
new resourceShare_1.ResourceShare(this, `${environment}${region}IpamResourceShare`, {
|
|
47
|
+
name: `${environment}IpamResourceShare.${region}`,
|
|
48
|
+
allowExternalPrincipals: false,
|
|
49
|
+
principals: [(0, getAccountId_1.default)(environment)],
|
|
50
|
+
resourceArns: [ipamPool.attrArn],
|
|
51
|
+
tags: [
|
|
52
|
+
{
|
|
53
|
+
key: "fjall:costAllocation:environment",
|
|
54
|
+
value: `${environment}`
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolId`, {
|
|
59
|
+
key: `${environment}IpamPoolId`,
|
|
60
|
+
value: ipamPool.attrIpamPoolId,
|
|
61
|
+
exportName: `${environment}IpamPoolId`
|
|
62
|
+
});
|
|
63
|
+
new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolArn`, {
|
|
64
|
+
key: `${environment}IpamPoolArn`,
|
|
65
|
+
value: ipamPool.attrArn,
|
|
66
|
+
exportName: `${environment}IpamPoolArn`
|
|
67
|
+
});
|
|
68
|
+
}
|
|
19
69
|
}
|
|
20
70
|
}
|
|
21
71
|
exports.IpamPool = IpamPool;
|
|
22
72
|
class IpamPoolStack extends aws_cdk_lib_1.Stack {
|
|
23
|
-
constructor(scope, id,
|
|
24
|
-
super(scope, id
|
|
25
|
-
new IpamPool(this,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
ipamScopeId: params.ipamScopeId,
|
|
29
|
-
allocationResourceTags: params.allocationResourceTags,
|
|
30
|
-
locale: params.locale
|
|
73
|
+
constructor(scope, id, props) {
|
|
74
|
+
super(scope, id);
|
|
75
|
+
new IpamPool(this, "IpamPool", {
|
|
76
|
+
orgAccounts: props.orgAccounts,
|
|
77
|
+
region: props.region
|
|
31
78
|
});
|
|
32
79
|
}
|
|
33
80
|
}
|
|
34
81
|
exports.IpamPoolStack = IpamPoolStack;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErRDtBQUMvRCwyQ0FBdUM7QUFDdkMsaURBQW1FO0FBQ25FLG9EQUErQztBQUMvQyw4REFBMkQ7QUFDM0QsOERBQXVEO0FBYXZELE1BQWEsUUFBUyxTQUFRLHNCQUFTO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwwREFBMEQ7UUFDMUQsTUFBTSx5QkFBeUIsR0FDN0IsS0FBSyxDQUFDLFNBQVMsSUFBSSxnQkFBRSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2pFLDhDQUE4QztRQUM5QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRTVCLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3RCxPQUFPLENBQUMsV0FBVyxFQUFFLENBQ3RCLENBQUM7UUFFRixLQUFLLE1BQU0sV0FBVyxJQUFJLG9CQUFvQixFQUFFO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksaUJBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLHFCQUFhLENBQ2hDLElBQUksRUFDSixHQUFHLFdBQVcsV0FBVyxhQUFhLEVBQUUsRUFDeEM7Z0JBQ0UsV0FBVyxFQUFFLEdBQUcsV0FBVyxrQkFBa0IsTUFBTSxNQUFNLGFBQWEsRUFBRTtnQkFDeEUsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLHNCQUFzQixFQUFFO29CQUN0Qjt3QkFDRSxHQUFHLEVBQUUsdUJBQXVCO3dCQUM1QixLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxJQUFJO2dCQUNoQixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsR0FBRyxFQUFFLHVCQUF1Qjt3QkFDNUIsS0FBSyxFQUFFLFdBQVc7cUJBQ25CO29CQUNEO3dCQUNFLEdBQUcsRUFBRSxrQ0FBa0M7d0JBQ3ZDLEtBQUssRUFBRSxHQUFHLFdBQVcsRUFBRTtxQkFDeEI7aUJBQ0Y7YUFDRixDQUNGLENBQUM7WUFFRixJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxHQUFHLE1BQU0sbUJBQW1CLEVBQUU7Z0JBQ2xFLElBQUksRUFBRSxHQUFHLFdBQVcscUJBQXFCLE1BQU0sRUFBRTtnQkFDakQsdUJBQXVCLEVBQUUsS0FBSztnQkFDOUIsVUFBVSxFQUFFLENBQUMsSUFBQSxzQkFBWSxFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsR0FBRyxFQUFFLGtDQUFrQzt3QkFDdkMsS0FBSyxFQUFFLEdBQUcsV0FBVyxFQUFFO3FCQUN4QjtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLFlBQVksRUFBRTtnQkFDOUMsR0FBRyxFQUFFLEdBQUcsV0FBVyxZQUFZO2dCQUMvQixLQUFLLEVBQUUsUUFBUSxDQUFDLGNBQWM7Z0JBQzlCLFVBQVUsRUFBRSxHQUFHLFdBQVcsWUFBWTthQUN2QyxDQUFDLENBQUM7WUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsV0FBVyxhQUFhLEVBQUU7Z0JBQy9DLEdBQUcsRUFBRSxHQUFHLFdBQVcsYUFBYTtnQkFDaEMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN2QixVQUFVLEVBQUUsR0FBRyxXQUFXLGFBQWE7YUFDeEMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUExRUQsNEJBMEVDO0FBRUQsTUFBYSxhQUFjLFNBQVEsbUJBQUs7SUFDdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFURCxzQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZuLCBDZm5PdXRwdXQsIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuSVBBTVBvb2wgYXMgSXBhbVBvb2xDbGFzcyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgQ2lkckJsb2NrIGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRDaWRyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNoYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJcGFtUG9vbFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgaXBhbVNjb3BlPzogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElwYW1Qb29sU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2wgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBHZXQgdGhlIGRlZmF1bHQgSVBBTSBzY29wZSBJRCBmcm9tIHByb3BzLCBvciBDRk4gaW1wb3J0XG4gICAgY29uc3QgSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCA9XG4gICAgICBwcm9wcy5pcGFtU2NvcGUgfHwgRm4uaW1wb3J0VmFsdWUoXCJJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCIpO1xuICAgIC8vIFByaW9yaXRpc2UgcmVnaW9uIGZyb20gcHJvcHMsIHRoZW4gZnJvbSBlbnZcbiAgICBjb25zdCByZWdpb24gPSBwcm9wcy5yZWdpb247XG5cbiAgICBjb25zdCBvcmdhbmlzYXRpb25BY2NvdW50cyA9IHByb3BzLm9yZ0FjY291bnRzLm1hcCgoYWNjb3VudCkgPT5cbiAgICAgIGFjY291bnQudG9Mb3dlckNhc2UoKVxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGVudmlyb25tZW50IG9mIG9yZ2FuaXNhdGlvbkFjY291bnRzKSB7XG4gICAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrKCk7XG4gICAgICBjb25zdCBmcmVlQ2lkckJsb2NrID0gY2lkckJsb2NrLmdldENpZHJCbG9jaygpO1xuICAgICAgY2lkckJsb2NrLnVwZGF0ZVN0YXRlKGZyZWVDaWRyQmxvY2ssIGZhbHNlKTtcblxuICAgICAgY29uc3QgaXBhbVBvb2wgPSBuZXcgSXBhbVBvb2xDbGFzcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2wke2ZyZWVDaWRyQmxvY2t9YCxcbiAgICAgICAge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtlbnZpcm9ubWVudH0gLSBJUEFNIHBvb2wgLSAke3JlZ2lvbn0gLSAke2ZyZWVDaWRyQmxvY2t9YCxcbiAgICAgICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgICAgICBsb2NhbGU6IHJlZ2lvbixcbiAgICAgICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgdmFsdWU6IGAke2Vudmlyb25tZW50fWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGF1dG9JbXBvcnQ6IHRydWUsXG4gICAgICAgICAgcHJvdmlzaW9uZWRDaWRyczogW3sgY2lkcjogZnJlZUNpZHJCbG9jayB9XSxcbiAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwidG9wLWxldmVsXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogYCR7ZW52aXJvbm1lbnR9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgbmV3IFJlc291cmNlU2hhcmUodGhpcywgYCR7ZW52aXJvbm1lbnR9JHtyZWdpb259SXBhbVJlc291cmNlU2hhcmVgLCB7XG4gICAgICAgIG5hbWU6IGAke2Vudmlyb25tZW50fUlwYW1SZXNvdXJjZVNoYXJlLiR7cmVnaW9ufWAsXG4gICAgICAgIGFsbG93RXh0ZXJuYWxQcmluY2lwYWxzOiBmYWxzZSxcbiAgICAgICAgcHJpbmNpcGFsczogW2dldEFjY291bnRJZChlbnZpcm9ubWVudCldLFxuICAgICAgICByZXNvdXJjZUFybnM6IFtpcGFtUG9vbC5hdHRyQXJuXSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgdmFsdWU6IGAke2Vudmlyb25tZW50fWBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sSWRgLCB7XG4gICAgICAgIGtleTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGAsXG4gICAgICAgIHZhbHVlOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGBcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCwge1xuICAgICAgICBrZXk6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCxcbiAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJBcm4sXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJcGFtUG9vbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBcIklwYW1Qb29sXCIsIHtcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { StackBuilder } from "../awsStack";
|
|
4
|
+
import { KeyValue } from "../../../types";
|
|
5
|
+
interface VpcProps extends ec2.VpcProps {
|
|
6
|
+
environment?: string;
|
|
7
|
+
region?: string;
|
|
8
|
+
availabilityZones?: string[];
|
|
9
|
+
ipv4IpamPoolId?: string;
|
|
10
|
+
tags: KeyValue;
|
|
11
|
+
}
|
|
12
|
+
export declare class Vpc extends ec2.Vpc {
|
|
13
|
+
constructor(scope: Construct, id: string, props?: VpcProps);
|
|
14
|
+
static availabilityZones(scope: Construct): string[];
|
|
15
|
+
static ipAddresses(scope: Construct, props?: VpcProps): ec2.IIpAddresses | undefined;
|
|
16
|
+
static build(id: string, props?: VpcProps): (sb: StackBuilder) => Construct;
|
|
17
|
+
/**
|
|
18
|
+
* Imports a pre-existing VPC Resource into your Stack
|
|
19
|
+
*
|
|
20
|
+
* Before using an import method ensure you have set the account and region props
|
|
21
|
+
* when creating your AwsStack.
|
|
22
|
+
*
|
|
23
|
+
* @param id
|
|
24
|
+
* @param vpcStackName
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
static import(id: string, vpcStackName: string): (sb: StackBuilder) => Construct;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Vpc = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const logGroup_1 = require("../logging/logGroup");
|
|
7
|
+
class Vpc extends ec2.Vpc {
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, `vpc-${id}`, {
|
|
10
|
+
...props,
|
|
11
|
+
vpcName: `vpc-${id}`,
|
|
12
|
+
availabilityZones: Vpc.availabilityZones(scope),
|
|
13
|
+
flowLogs: {
|
|
14
|
+
[`${id}VpcFlowLogs`]: {
|
|
15
|
+
destination: ec2.FlowLogDestination.toCloudWatchLogs(new logGroup_1.LogGroup(scope, `${id}FlowLogGroup`, {
|
|
16
|
+
logGroupName: `/vpc/flowlogs/vpc-${id}/`,
|
|
17
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
18
|
+
}))
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
ipAddresses: Vpc.ipAddresses(scope, props)
|
|
22
|
+
});
|
|
23
|
+
// Required for the VPC to use the IPAM Pool to provsion IP addresses
|
|
24
|
+
aws_cdk_lib_1.Tags.of(this).add("fjall:operations:pool", `${props?.environment}`);
|
|
25
|
+
}
|
|
26
|
+
static availabilityZones(scope) {
|
|
27
|
+
return aws_cdk_lib_1.Stack.of(scope).availabilityZones.slice(0, 3);
|
|
28
|
+
}
|
|
29
|
+
static ipAddresses(scope, props) {
|
|
30
|
+
const ipv4IpamPoolId = props?.ipv4IpamPoolId || aws_cdk_lib_1.Fn.importValue("ManagedIpamPoolId");
|
|
31
|
+
// Default to unspecified ipAddresses if unable to read from stack output
|
|
32
|
+
if (!ipv4IpamPoolId)
|
|
33
|
+
return undefined;
|
|
34
|
+
return ec2.IpAddresses.awsIpamAllocation({
|
|
35
|
+
ipv4IpamPoolId: ipv4IpamPoolId,
|
|
36
|
+
ipv4NetmaskLength: 20,
|
|
37
|
+
defaultSubnetIpv4NetmaskLength: 23
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
static build(id, props) {
|
|
41
|
+
return (sb) => {
|
|
42
|
+
return new this(sb.getStack(), id, props);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Imports a pre-existing VPC Resource into your Stack
|
|
47
|
+
*
|
|
48
|
+
* Before using an import method ensure you have set the account and region props
|
|
49
|
+
* when creating your AwsStack.
|
|
50
|
+
*
|
|
51
|
+
* @param id
|
|
52
|
+
* @param vpcStackName
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
55
|
+
static import(id, vpcStackName) {
|
|
56
|
+
return (sb) => {
|
|
57
|
+
return ec2.Vpc.fromLookup(sb.getStack(), id, {
|
|
58
|
+
vpcName: `${vpcStackName}/${id}`
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.Vpc = Vpc;
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTZEO0FBQzdELDJDQUEyQztBQUczQyxrREFBK0M7QUFXL0MsTUFBYSxHQUFJLFNBQVEsR0FBRyxDQUFDLEdBQUc7SUFDOUIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQjtRQUN4RCxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDeEIsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3BCLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDL0MsUUFBUSxFQUFFO2dCQUNSLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxFQUFFO29CQUNwQixXQUFXLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUNsRCxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUU7d0JBQ3ZDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHO3dCQUN4QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO3FCQUNyQyxDQUFDLENBQ0g7aUJBQ0Y7YUFDRjtZQUNELFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBRUgscUVBQXFFO1FBQ3JFLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBZ0I7UUFDdkMsT0FBTyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsS0FBZ0I7UUFDbkQsTUFBTSxjQUFjLEdBQ2xCLEtBQUssRUFBRSxjQUFjLElBQUksZ0JBQUUsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvRCx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV0QyxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFDdkMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQiw4QkFBOEIsRUFBRSxFQUFFO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxLQUFnQjtRQUN2QyxPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7Ozs7OztPQVNHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FDWCxFQUFVLEVBQ1YsWUFBb0I7UUFFcEIsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLE9BQU8sRUFBRSxHQUFHLFlBQVksSUFBSSxFQUFFLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbEVELGtCQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUYWdzLCBSZW1vdmFsUG9saWN5LCBTdGFjaywgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbXBvcnQgeyBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYXdzU3RhY2tcIjtcbmltcG9ydCB7IExvZ0dyb3VwIH0gZnJvbSBcIi4uL2xvZ2dpbmcvbG9nR3JvdXBcIjtcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBWcGNQcm9wcyBleHRlbmRzIGVjMi5WcGNQcm9wcyB7XG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG4gIGlwdjRJcGFtUG9vbElkPzogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFZwYyBleHRlbmRzIGVjMi5WcGMge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFZwY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGB2cGMtJHtpZH1gLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHZwY05hbWU6IGB2cGMtJHtpZH1gLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZXM6IFZwYy5hdmFpbGFiaWxpdHlab25lcyhzY29wZSksXG4gICAgICBmbG93TG9nczoge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvQ2xvdWRXYXRjaExvZ3MoXG4gICAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlwQWRkcmVzc2VzOiBWcGMuaXBBZGRyZXNzZXMoc2NvcGUsIHByb3BzKVxuICAgIH0pO1xuXG4gICAgLy8gUmVxdWlyZWQgZm9yIHRoZSBWUEMgdG8gdXNlIHRoZSBJUEFNIFBvb2wgdG8gcHJvdnNpb24gSVAgYWRkcmVzc2VzXG4gICAgVGFncy5vZih0aGlzKS5hZGQoXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIiwgYCR7cHJvcHM/LmVudmlyb25tZW50fWApO1xuICB9XG5cbiAgc3RhdGljIGF2YWlsYWJpbGl0eVpvbmVzKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICByZXR1cm4gU3RhY2sub2Yoc2NvcGUpLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIDMpO1xuICB9XG5cbiAgc3RhdGljIGlwQWRkcmVzc2VzKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzPzogVnBjUHJvcHMpIHtcbiAgICBjb25zdCBpcHY0SXBhbVBvb2xJZCA9XG4gICAgICBwcm9wcz8uaXB2NElwYW1Qb29sSWQgfHwgRm4uaW1wb3J0VmFsdWUoXCJNYW5hZ2VkSXBhbVBvb2xJZFwiKTtcblxuICAgIC8vIERlZmF1bHQgdG8gdW5zcGVjaWZpZWQgaXBBZGRyZXNzZXMgaWYgdW5hYmxlIHRvIHJlYWQgZnJvbSBzdGFjayBvdXRwdXRcbiAgICBpZiAoIWlwdjRJcGFtUG9vbElkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIGVjMi5JcEFkZHJlc3Nlcy5hd3NJcGFtQWxsb2NhdGlvbih7XG4gICAgICBpcHY0SXBhbVBvb2xJZDogaXB2NElwYW1Qb29sSWQsXG4gICAgICBpcHY0TmV0bWFza0xlbmd0aDogMjAsXG4gICAgICBkZWZhdWx0U3VibmV0SXB2NE5ldG1hc2tMZW5ndGg6IDIzXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcyk6IChzYjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3Qge1xuICAgIHJldHVybiAoc2I6IFN0YWNrQnVpbGRlcikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogSW1wb3J0cyBhIHByZS1leGlzdGluZyBWUEMgUmVzb3VyY2UgaW50byB5b3VyIFN0YWNrXG4gICAqXG4gICAqIEJlZm9yZSB1c2luZyBhbiBpbXBvcnQgbWV0aG9kIGVuc3VyZSB5b3UgaGF2ZSBzZXQgdGhlIGFjY291bnQgYW5kIHJlZ2lvbiBwcm9wc1xuICAgKiAgd2hlbiBjcmVhdGluZyB5b3VyIEF3c1N0YWNrLlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHZwY1N0YWNrTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGltcG9ydChcbiAgICBpZDogc3RyaW5nLFxuICAgIHZwY1N0YWNrTmFtZTogc3RyaW5nXG4gICk6IChzYjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3Qge1xuICAgIHJldHVybiAoc2I6IFN0YWNrQnVpbGRlcikgPT4ge1xuICAgICAgcmV0dXJuIGVjMi5WcGMuZnJvbUxvb2t1cChzYi5nZXRTdGFjaygpLCBpZCwge1xuICAgICAgICB2cGNOYW1lOiBgJHt2cGNTdGFja05hbWV9LyR7aWR9YFxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Alias = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
class Alias extends aws_cdk_lib_1.aws_kms.Alias {
|
|
6
|
+
constructor(scope, id, props) {
|
|
7
|
+
super(scope, id, {
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.Alias = Alias;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zZWNyZXRzL2FsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUE2QztBQUU3QyxNQUFhLEtBQU0sU0FBUSxxQkFBRyxDQUFDLEtBQUs7SUFDbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQU5ELHNCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGF3c19rbXMgYXMga21zIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmV4cG9ydCBjbGFzcyBBbGlhcyBleHRlbmRzIGttcy5BbGlhcyB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBrbXMuQWxpYXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./alias"), exports);
|
|
18
|
+
__exportStar(require("../database/database"), exports);
|
|
19
|
+
__exportStar(require("./kms"), exports);
|
|
20
|
+
__exportStar(require("./parameter"), exports);
|
|
21
|
+
__exportStar(require("./secret"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zZWNyZXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsdURBQXFDO0FBQ3JDLHdDQUFzQjtBQUN0Qiw4Q0FBNEI7QUFDNUIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWxpYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuLi9kYXRhYmFzZS9kYXRhYmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4va21zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXJhbWV0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlY3JldFwiO1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Alias, Key } from "aws-cdk-lib/aws-kms";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { KeyValue } from "../../../types";
|
|
4
|
+
interface CustomerManagedKeyProps {
|
|
5
|
+
description?: string;
|
|
6
|
+
aliasName?: string;
|
|
7
|
+
tags: KeyValue;
|
|
8
|
+
}
|
|
9
|
+
export declare class CustomerManagedKey extends Construct {
|
|
10
|
+
readonly key: Key;
|
|
11
|
+
readonly alias: Alias;
|
|
12
|
+
constructor(scope: Construct, id: string, props: CustomerManagedKeyProps);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomerManagedKey = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const tagResource_1 = require("../../../utils/tagResource");
|
|
8
|
+
class CustomerManagedKey extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
this.key = new aws_kms_1.Key(this, `${id}Key`, {
|
|
12
|
+
description: props.description || `${id} KMS Key`,
|
|
13
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
14
|
+
});
|
|
15
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}KeyArn`, {
|
|
16
|
+
key: `${id}Arn`,
|
|
17
|
+
value: this.key.keyArn,
|
|
18
|
+
exportName: `${id}KeyArn`
|
|
19
|
+
});
|
|
20
|
+
(0, tagResource_1.default)(this.key, props.tags);
|
|
21
|
+
this.alias = new aws_kms_1.Alias(this, `${id}KeyAlias`, {
|
|
22
|
+
aliasName: props.aliasName || `cmk/${id}`,
|
|
23
|
+
targetKey: this.key
|
|
24
|
+
});
|
|
25
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}KeyAliasArn`, {
|
|
26
|
+
key: `${id}AliasArn`,
|
|
27
|
+
value: this.alias.aliasArn,
|
|
28
|
+
exportName: `${id}KeyAliasArn`
|
|
29
|
+
});
|
|
30
|
+
(0, tagResource_1.default)(this.alias, props.tags);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.CustomerManagedKey = CustomerManagedKey;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9rbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCwyQ0FBdUM7QUFDdkMsNERBQXFEO0FBU3JELE1BQWEsa0JBQW1CLFNBQVEsc0JBQVM7SUFJL0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDbkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLFVBQVU7WUFDakQsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7WUFDakMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUN0QixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsSUFBQSxxQkFBVyxFQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7WUFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksT0FBTyxFQUFFLEVBQUU7WUFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRTtZQUN0QyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLGFBQWE7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBQSxxQkFBVyxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQTdCRCxnREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEFsaWFzLCBLZXkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWttc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0YWdSZXNvdXJjZSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdGFnUmVzb3VyY2VcIjtcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBDdXN0b21lck1hbmFnZWRLZXlQcm9wcyB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBhbGlhc05hbWU/OiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJNYW5hZ2VkS2V5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGtleTogS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXM6IEFsaWFzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDdXN0b21lck1hbmFnZWRLZXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmtleSA9IG5ldyBLZXkodGhpcywgYCR7aWR9S2V5YCwge1xuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9S2V5QXJuYCwge1xuICAgICAga2V5OiBgJHtpZH1Bcm5gLFxuICAgICAgdmFsdWU6IHRoaXMua2V5LmtleUFybixcbiAgICAgIGV4cG9ydE5hbWU6IGAke2lkfUtleUFybmBcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmtleSwgcHJvcHMudGFncyk7XG5cbiAgICB0aGlzLmFsaWFzID0gbmV3IEFsaWFzKHRoaXMsIGAke2lkfUtleUFsaWFzYCwge1xuICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWUgfHwgYGNtay8ke2lkfWAsXG4gICAgICB0YXJnZXRLZXk6IHRoaXMua2V5XG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1LZXlBbGlhc0FybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QWxpYXNBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMuYWxpYXMuYWxpYXNBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1LZXlBbGlhc0FybmBcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmFsaWFzLCBwcm9wcy50YWdzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { aws_ssm as ssm } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { KeyValue } from "../../../types";
|
|
4
|
+
import { CustomerManagedKey } from "./";
|
|
5
|
+
import { AwsCustomResource } from "../utilities/awsCustomResource";
|
|
6
|
+
export declare class StringParameter extends ssm.StringParameter {
|
|
7
|
+
constructor(scope: Construct, id: string, props: ssm.StringParameterProps);
|
|
8
|
+
}
|
|
9
|
+
interface SecureStringParameterProps {
|
|
10
|
+
accountId: string;
|
|
11
|
+
aliasName?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
name: string;
|
|
14
|
+
overwrite?: boolean;
|
|
15
|
+
region: string;
|
|
16
|
+
tags: KeyValue;
|
|
17
|
+
value?: string;
|
|
18
|
+
cmk?: CustomerManagedKey;
|
|
19
|
+
}
|
|
20
|
+
export declare class SecureStringParameter extends Construct {
|
|
21
|
+
readonly cmk: CustomerManagedKey;
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly parameter: AwsCustomResource;
|
|
24
|
+
constructor(scope: Construct, id: string, props: SecureStringParameterProps);
|
|
25
|
+
}
|
|
26
|
+
export {};
|