@fjall/components-infrastructure 0.1.5 → 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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Group } from "../../resources/aws/iam/identityCenter/group";
|
|
3
|
+
export interface User {
|
|
4
|
+
email: string;
|
|
5
|
+
firstName: string;
|
|
6
|
+
lastName: string;
|
|
7
|
+
groups: string[];
|
|
8
|
+
}
|
|
9
|
+
interface IdentityCenterUserProps {
|
|
10
|
+
identityStoreId: string;
|
|
11
|
+
identityCenterGroups: Group[];
|
|
12
|
+
}
|
|
13
|
+
export declare class IdentityCenterUser extends Construct {
|
|
14
|
+
constructor(scope: Construct, id: string, props: IdentityCenterUserProps);
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdentityCenterUser = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
+
const usersConfig_1 = require("../../utils/usersConfig");
|
|
9
|
+
const capitalizeString_1 = require("../../utils/capitalizeString");
|
|
10
|
+
class IdentityCenterUser extends constructs_1.Construct {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id);
|
|
13
|
+
const users = new usersConfig_1.default().getUsers();
|
|
14
|
+
const identityStoreId = props.identityStoreId;
|
|
15
|
+
const userCount = users.length;
|
|
16
|
+
for (let i = 0; i < userCount; i++) {
|
|
17
|
+
const user = users[i];
|
|
18
|
+
const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
|
|
19
|
+
const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
|
|
20
|
+
const userParams = {
|
|
21
|
+
IdentityStoreId: identityStoreId,
|
|
22
|
+
UserName: user.email,
|
|
23
|
+
DisplayName: `${givenName} ${familyName}`,
|
|
24
|
+
Name: {
|
|
25
|
+
FamilyName: user.lastName,
|
|
26
|
+
GivenName: user.firstName
|
|
27
|
+
},
|
|
28
|
+
Emails: [
|
|
29
|
+
{
|
|
30
|
+
Primary: true,
|
|
31
|
+
Value: user.email
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
|
|
36
|
+
functionName: "createUsers",
|
|
37
|
+
onCreate: {
|
|
38
|
+
service: "IdentityStore",
|
|
39
|
+
action: "createUser",
|
|
40
|
+
parameters: userParams,
|
|
41
|
+
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
42
|
+
},
|
|
43
|
+
onUpdate: {
|
|
44
|
+
service: "IdentityStore",
|
|
45
|
+
action: "updateUser",
|
|
46
|
+
parameters: userParams,
|
|
47
|
+
physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
|
|
48
|
+
},
|
|
49
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
50
|
+
});
|
|
51
|
+
new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
|
|
52
|
+
functionName: "deleteUsers",
|
|
53
|
+
onDelete: {
|
|
54
|
+
service: "IdentityStore",
|
|
55
|
+
action: "deleteUser",
|
|
56
|
+
parameters: {
|
|
57
|
+
IdentityStoreId: identityStoreId,
|
|
58
|
+
UserId: createUser.getResponseField("UserId")
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
62
|
+
});
|
|
63
|
+
new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
|
|
64
|
+
key: `UserId${givenName}${familyName}`,
|
|
65
|
+
value: createUser.getResponseField("UserId"),
|
|
66
|
+
exportName: `UserId${givenName}${familyName}`
|
|
67
|
+
});
|
|
68
|
+
// props.identityCenterGroups.forEach((identityCenterGroup))
|
|
69
|
+
user.groups.forEach((group) => {
|
|
70
|
+
const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
|
|
71
|
+
if (!identityCenterGroup) {
|
|
72
|
+
throw new Error(`Group ${group} does not exist in Identity Center Groups`);
|
|
73
|
+
}
|
|
74
|
+
const groupId = identityCenterGroup.attrGroupId;
|
|
75
|
+
const groupName = identityCenterGroup.displayName;
|
|
76
|
+
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
|
|
77
|
+
functionName: "createGroupMembership",
|
|
78
|
+
onCreate: {
|
|
79
|
+
service: "IdentityStore",
|
|
80
|
+
action: "createGroupMembership",
|
|
81
|
+
parameters: {
|
|
82
|
+
GroupId: groupId,
|
|
83
|
+
IdentityStoreId: identityStoreId,
|
|
84
|
+
MemberId: {
|
|
85
|
+
UserId: createUser.getResponseField("UserId")
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${givenName}${familyName}To${groupName}`)
|
|
89
|
+
},
|
|
90
|
+
onUpdate: {
|
|
91
|
+
service: "IdentityStore",
|
|
92
|
+
action: "createGroupMembership",
|
|
93
|
+
parameters: {
|
|
94
|
+
GroupId: groupId,
|
|
95
|
+
IdentityStoreId: identityStoreId,
|
|
96
|
+
MemberId: {
|
|
97
|
+
UserId: createUser.getResponseField("UserId")
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${givenName}${familyName}To${groupName}`)
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
|
|
104
|
+
functionName: "deleteGroupMembership",
|
|
105
|
+
onDelete: {
|
|
106
|
+
service: "IdentityStore",
|
|
107
|
+
action: "deleteGroupMembership",
|
|
108
|
+
parameters: {
|
|
109
|
+
IdentityStoreId: identityStoreId,
|
|
110
|
+
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
resourceType: "Custom::IdentityCenterUsers"
|
|
114
|
+
});
|
|
115
|
+
new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
|
|
116
|
+
key: `GroupMembershipId${givenName}${familyName}${groupName}`,
|
|
117
|
+
value: groupMembershipId.getResponseField("MembershipId"),
|
|
118
|
+
exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.IdentityCenterUser = IdentityCenterUser;
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUs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Q0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUF2SkQsZ0RBdUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IFVzZXJzQ29uZmlnIGZyb20gXCIuLi8uLi91dGlscy91c2Vyc0NvbmZpZ1wiO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXBcIjtcbmltcG9ydCB7IGNhcGl0YWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2FwaXRhbGl6ZVN0cmluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICBlbWFpbDogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgZ3JvdXBzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIGNyZWF0ZVVzZXJQYXJhbWV0ZXJzIHtcbiAgSWRlbnRpdHlTdG9yZUlkOiBzdHJpbmc7XG4gIFVzZXJOYW1lOiBzdHJpbmc7XG4gIERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIE5hbWU6IHtcbiAgICBGYW1pbHlOYW1lOiBzdHJpbmc7XG4gICAgR2l2ZW5OYW1lOiBzdHJpbmc7XG4gIH07XG4gIEVtYWlsczoge1xuICAgIFByaW1hcnk6IGJvb2xlYW47XG4gICAgVmFsdWU6IHN0cmluZztcbiAgfVtdO1xufVxuXG5pbnRlcmZhY2UgSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMge1xuICBpZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgaWRlbnRpdHlDZW50ZXJHcm91cHM6IEdyb3VwW107XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUNlbnRlclVzZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRlbnRpdHlDZW50ZXJVc2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdXNlcnM6IFVzZXJbXSA9IG5ldyBVc2Vyc0NvbmZpZygpLmdldFVzZXJzKCk7XG4gICAgY29uc3QgaWRlbnRpdHlTdG9yZUlkID0gcHJvcHMuaWRlbnRpdHlTdG9yZUlkO1xuXG4gICAgY29uc3QgdXNlckNvdW50ID0gdXNlcnMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlckNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2Vyc1tpXTtcbiAgICAgIGNvbnN0IGdpdmVuTmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5maXJzdE5hbWUpO1xuICAgICAgY29uc3QgZmFtaWx5TmFtZSA9IGNhcGl0YWxpemVTdHJpbmcodXNlci5sYXN0TmFtZSk7XG4gICAgICBjb25zdCB1c2VyUGFyYW1zOiBjcmVhdGVVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgIFVzZXJOYW1lOiB1c2VyLmVtYWlsLFxuICAgICAgICBEaXNwbGF5TmFtZTogYCR7Z2l2ZW5OYW1lfSAke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgTmFtZToge1xuICAgICAgICAgIEZhbWlseU5hbWU6IHVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgR2l2ZW5OYW1lOiB1c2VyLmZpcnN0TmFtZVxuICAgICAgICB9LFxuICAgICAgICBFbWFpbHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBQcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgVmFsdWU6IHVzZXIuZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVVzZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBjcmVhdGVVc2VyJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlVXNlcnNcIixcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNjcmVhdGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJ1cGRhdGVVc2VyXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB1c2VyUGFyYW1zLFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOlxuICAgICAgICAgICAgICBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlVXNlcnNcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYGRlbGV0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlVXNlcnNcIixcbiAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlVXNlclwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0lkZW50aXR5U3RvcmUuaHRtbCNkZWxldGVVc2VyLXByb3BlcnR5XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICB9KTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsIHtcbiAgICAgICAga2V5OiBgVXNlcklkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfWAsXG4gICAgICAgIHZhbHVlOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIiksXG4gICAgICAgIGV4cG9ydE5hbWU6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHByb3BzLmlkZW50aXR5Q2VudGVyR3JvdXBzLmZvckVhY2goKGlkZW50aXR5Q2VudGVyR3JvdXApKVxuXG4gICAgICB1c2VyLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBpZGVudGl0eUNlbnRlckdyb3VwID0gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZmluZChcbiAgICAgICAgICAoaWRlbnRpdHlDZW50ZXJHcm91cCkgPT4gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZSA9PT0gZ3JvdXBcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlkZW50aXR5Q2VudGVyR3JvdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgR3JvdXAgJHtncm91cH0gZG9lcyBub3QgZXhpc3QgaW4gSWRlbnRpdHkgQ2VudGVyIEdyb3Vwc2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IGlkZW50aXR5Q2VudGVyR3JvdXAuYXR0ckdyb3VwSWQ7XG4gICAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IGlkZW50aXR5Q2VudGVyR3JvdXAuZGlzcGxheU5hbWU7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwSWQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfVRvJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgICAgTWVtYmVySWQ6IHtcbiAgICAgICAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgICAgYGNyZWF0ZUdyb3VwTWVtYmVyc2hpcCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1UbyR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgZGVsZXRlR3JvdXBNZW1iZXJzaGlwJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfUZyb20ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJzaGlwSWQ6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICAgIHZhbHVlOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpLFxuICAgICAgICAgICAgZXhwb3J0TmFtZTogYEdyb3VwTWVtYmVyc2hpcElkJHtnaXZlbk5hbWV9JHtmYW1pbHlOYW1lfSR7Z3JvdXBOYW1lfWBcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./costAllocationTags";
|
|
2
|
+
export * from "./identityCenter";
|
|
3
|
+
export * from "./ipam";
|
|
4
|
+
export * from "./ipamDelegateAdmin";
|
|
5
|
+
export * from "./ipamPoolId";
|
|
6
|
+
export * from "./ramSharing";
|
|
7
|
+
export * from "./identityCenterUser";
|
|
8
|
+
export * from "./organisation";
|
|
9
|
+
export * from "./accountId";
|
|
10
|
+
export * from "./ecrDefaultImage";
|
|
11
|
+
export * from "./eventBus";
|
|
12
|
+
export * from "./organisationId";
|
|
@@ -0,0 +1,29 @@
|
|
|
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("./costAllocationTags"), exports);
|
|
18
|
+
__exportStar(require("./identityCenter"), exports);
|
|
19
|
+
__exportStar(require("./ipam"), exports);
|
|
20
|
+
__exportStar(require("./ipamDelegateAdmin"), exports);
|
|
21
|
+
__exportStar(require("./ipamPoolId"), exports);
|
|
22
|
+
__exportStar(require("./ramSharing"), exports);
|
|
23
|
+
__exportStar(require("./identityCenterUser"), exports);
|
|
24
|
+
__exportStar(require("./organisation"), exports);
|
|
25
|
+
__exportStar(require("./accountId"), exports);
|
|
26
|
+
__exportStar(require("./ecrDefaultImage"), exports);
|
|
27
|
+
__exportStar(require("./eventBus"), exports);
|
|
28
|
+
__exportStar(require("./organisationId"), exports);
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG1EQUFpQztBQUNqQyx5Q0FBdUI7QUFDdkIsc0RBQW9DO0FBQ3BDLCtDQUE2QjtBQUM3QiwrQ0FBNkI7QUFDN0IsdURBQXFDO0FBQ3JDLGlEQUErQjtBQUMvQiw4Q0FBNEI7QUFDNUIsb0RBQWtDO0FBQ2xDLDZDQUEyQjtBQUMzQixtREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb3N0QWxsb2NhdGlvblRhZ3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lkZW50aXR5Q2VudGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtRGVsZWdhdGVBZG1pblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVBvb2xJZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmFtU2hhcmluZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlDZW50ZXJVc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcmdhbmlzYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FjY291bnRJZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZWNyRGVmYXVsdEltYWdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudEJ1c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnYW5pc2F0aW9uSWRcIjtcbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Ipam = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const ipam_1 = require("../../resources/aws/networking/ipam");
|
|
6
|
+
const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
|
|
7
|
+
const supportedRegions = [
|
|
8
|
+
"us-east-2",
|
|
9
|
+
"us-west-1",
|
|
10
|
+
"us-west-2",
|
|
11
|
+
"ap-southeast-1",
|
|
12
|
+
"ap-southeast-2",
|
|
13
|
+
"ca-central-1",
|
|
14
|
+
"eu-central-1",
|
|
15
|
+
"eu-west-1",
|
|
16
|
+
"eu-west-2",
|
|
17
|
+
"eu-west-3",
|
|
18
|
+
"eu-north-1"
|
|
19
|
+
];
|
|
20
|
+
function operatingRegions(regions) {
|
|
21
|
+
const operationRegionArray = [];
|
|
22
|
+
for (const region of regions) {
|
|
23
|
+
operationRegionArray.push({ regionName: region });
|
|
24
|
+
}
|
|
25
|
+
return operationRegionArray;
|
|
26
|
+
}
|
|
27
|
+
class Ipam extends constructs_1.Construct {
|
|
28
|
+
constructor(scope, id) {
|
|
29
|
+
super(scope, id);
|
|
30
|
+
const ipam = new ipam_1.Ipam(this, "ipam", {
|
|
31
|
+
operatingRegions: operatingRegions(supportedRegions),
|
|
32
|
+
tags: [
|
|
33
|
+
{
|
|
34
|
+
key: "fjall:costAllocation:environment",
|
|
35
|
+
value: "management"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
this.privateDefaultScopeId = ipam.attrPrivateDefaultScopeId;
|
|
40
|
+
new cfnOutput_1.CfnOutput(this, "privateDefaultScopeId", {
|
|
41
|
+
key: "privateDefaultScopeId",
|
|
42
|
+
value: ipam.attrPrivateDefaultScopeId,
|
|
43
|
+
exportName: "IpamPrivateDefaultScopeId"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Ipam = Ipam;
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2lwYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLDhEQUF3RTtBQUN4RSx1RUFBb0U7QUFFcEUsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixXQUFXO0lBQ1gsV0FBVztJQUNYLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtDQUNiLENBQUM7QUFFRixTQUFTLGdCQUFnQixDQUFDLE9BQWlCO0lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1FBQzVCLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ25EO0lBQ0QsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBYSxJQUFLLFNBQVEsc0JBQVM7SUFHakMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3ZDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ3BELElBQUksRUFBRTtnQkFDSjtvQkFDRSxHQUFHLEVBQUUsa0NBQWtDO29CQUN2QyxLQUFLLEVBQUUsWUFBWTtpQkFDcEI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7UUFFNUQsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUMzQyxHQUFHLEVBQUUsdUJBQXVCO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO1lBQ3JDLFVBQVUsRUFBRSwyQkFBMkI7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdEJELG9CQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IElwYW0gYXMgSXBhbUNsYXNzIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy9pcGFtXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY2ZuT3V0cHV0XCI7XG5cbmNvbnN0IHN1cHBvcnRlZFJlZ2lvbnMgPSBbXG4gIFwidXMtZWFzdC0yXCIsXG4gIFwidXMtd2VzdC0xXCIsXG4gIFwidXMtd2VzdC0yXCIsXG4gIFwiYXAtc291dGhlYXN0LTFcIixcbiAgXCJhcC1zb3V0aGVhc3QtMlwiLFxuICBcImNhLWNlbnRyYWwtMVwiLFxuICBcImV1LWNlbnRyYWwtMVwiLFxuICBcImV1LXdlc3QtMVwiLFxuICBcImV1LXdlc3QtMlwiLFxuICBcImV1LXdlc3QtM1wiLFxuICBcImV1LW5vcnRoLTFcIlxuXTtcblxuZnVuY3Rpb24gb3BlcmF0aW5nUmVnaW9ucyhyZWdpb25zOiBzdHJpbmdbXSk6IHsgcmVnaW9uTmFtZTogc3RyaW5nIH1bXSB7XG4gIGNvbnN0IG9wZXJhdGlvblJlZ2lvbkFycmF5ID0gW107XG4gIGZvciAoY29uc3QgcmVnaW9uIG9mIHJlZ2lvbnMpIHtcbiAgICBvcGVyYXRpb25SZWdpb25BcnJheS5wdXNoKHsgcmVnaW9uTmFtZTogcmVnaW9uIH0pO1xuICB9XG4gIHJldHVybiBvcGVyYXRpb25SZWdpb25BcnJheTtcbn1cblxuZXhwb3J0IGNsYXNzIElwYW0gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZURlZmF1bHRTY29wZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgaXBhbSA9IG5ldyBJcGFtQ2xhc3ModGhpcywgXCJpcGFtXCIsIHtcbiAgICAgIG9wZXJhdGluZ1JlZ2lvbnM6IG9wZXJhdGluZ1JlZ2lvbnMoc3VwcG9ydGVkUmVnaW9ucyksXG4gICAgICB0YWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIHRoaXMucHJpdmF0ZURlZmF1bHRTY29wZUlkID0gaXBhbS5hdHRyUHJpdmF0ZURlZmF1bHRTY29wZUlkO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcInByaXZhdGVEZWZhdWx0U2NvcGVJZFwiLCB7XG4gICAgICBrZXk6IFwicHJpdmF0ZURlZmF1bHRTY29wZUlkXCIsXG4gICAgICB2YWx1ZTogaXBhbS5hdHRyUHJpdmF0ZURlZmF1bHRTY29wZUlkLFxuICAgICAgZXhwb3J0TmFtZTogXCJJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IpamDelegateAdmin = void 0;
|
|
4
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
5
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
+
class IpamDelegateAdmin extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
new awsCustomResource_1.AwsCustomResource(this, "ipamDelegateAdmin", {
|
|
12
|
+
functionName: "ipamDelegateAdmin",
|
|
13
|
+
onCreate: {
|
|
14
|
+
service: "EC2",
|
|
15
|
+
action: "enableIpamOrganizationAdminAccount",
|
|
16
|
+
parameters: {
|
|
17
|
+
DryRun: false,
|
|
18
|
+
DelegatedAdminAccountId: props.accountId
|
|
19
|
+
},
|
|
20
|
+
physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
|
|
21
|
+
},
|
|
22
|
+
onUpdate: {
|
|
23
|
+
service: "EC2",
|
|
24
|
+
action: "enableIpamOrganizationAdminAccount",
|
|
25
|
+
parameters: {
|
|
26
|
+
DryRun: false,
|
|
27
|
+
DelegatedAdminAccountId: props.accountId
|
|
28
|
+
},
|
|
29
|
+
physicalResourceId: customResources.PhysicalResourceId.of("ipamDelegateAdmin")
|
|
30
|
+
},
|
|
31
|
+
onDelete: {
|
|
32
|
+
service: "EC2",
|
|
33
|
+
action: "disableIpamOrganizationAdminAccount",
|
|
34
|
+
parameters: {
|
|
35
|
+
DryRun: false,
|
|
36
|
+
DelegatedAdminAccountId: props.accountId
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
resourceType: "Custom::ipamDelegateAdmin",
|
|
40
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
41
|
+
new aws_iam_1.PolicyStatement({
|
|
42
|
+
actions: [
|
|
43
|
+
"ec2:EnableIpamOrganizationAdminAccount",
|
|
44
|
+
"ec2:DisableIpamOrganizationAdminAccount",
|
|
45
|
+
"organizations:EnableAWSServiceAccess",
|
|
46
|
+
"organizations:DisableAWSServiceAccess",
|
|
47
|
+
"organizations:RegisterDelegatedAdministrator",
|
|
48
|
+
"organizations:DeregisterDelegatedAdministrator",
|
|
49
|
+
"iam:CreateServiceLinkedRole"
|
|
50
|
+
],
|
|
51
|
+
resources: ["*"] // TODO: Find out the exact principal for this
|
|
52
|
+
})
|
|
53
|
+
])
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.IpamDelegateAdmin = IpamDelegateAdmin;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbURlbGVnYXRlQWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pcGFtRGVsZWdhdGVBZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFDaEUsaURBQXNEO0FBQ3RELDJDQUF1QztBQUN2Qyx1RkFBb0Y7QUFNcEYsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUM5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDL0MsWUFBWSxFQUFFLG1CQUFtQjtZQUNqQyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLG9DQUFvQztnQkFDNUMsVUFBVSxFQUFFO29CQUNWLE1BQU0sRUFBRSxLQUFLO29CQUNiLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUN6QztnQkFDRCxrQkFBa0IsRUFDaEIsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUM3RDtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsb0NBQW9DO2dCQUM1QyxVQUFVLEVBQUU7b0JBQ1YsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFNBQVM7aUJBQ3pDO2dCQUNELGtCQUFrQixFQUNoQixlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQzdEO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxxQ0FBcUM7Z0JBQzdDLFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsS0FBSztvQkFDYix1QkFBdUIsRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDekM7YUFDRjtZQUNELFlBQVksRUFBRSwyQkFBMkI7WUFDekMsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHdDQUF3Qzt3QkFDeEMseUNBQXlDO3dCQUN6QyxzQ0FBc0M7d0JBQ3RDLHVDQUF1Qzt3QkFDdkMsOENBQThDO3dCQUM5QyxnREFBZ0Q7d0JBQ2hELDZCQUE2QjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsOENBQThDO2lCQUNoRSxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5ERCw4Q0FtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuaW50ZXJmYWNlIElwYW1EZWxlZ2F0ZUFkbWluUHJvcHMge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIElwYW1EZWxlZ2F0ZUFkbWluIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElwYW1EZWxlZ2F0ZUFkbWluUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiaXBhbURlbGVnYXRlQWRtaW5cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBcImlwYW1EZWxlZ2F0ZUFkbWluXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkVDMlwiLFxuICAgICAgICBhY3Rpb246IFwiZW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0VDMi5odG1sI2VuYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnQtcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1EZWxlZ2F0ZUFkbWluXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJFQzJcIixcbiAgICAgICAgYWN0aW9uOiBcImVuYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1EZWxlZ2F0ZUFkbWluXCIpXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJFQzJcIixcbiAgICAgICAgYWN0aW9uOiBcImRpc2FibGVJcGFtT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvRUMyLmh0bWwjZGlzYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnQtcHJvcGVydHlcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIERyeVJ1bjogZmFsc2UsXG4gICAgICAgICAgRGVsZWdhdGVkQWRtaW5BY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6aXBhbURlbGVnYXRlQWRtaW5cIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJlYzI6RW5hYmxlSXBhbU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuICAgICAgICAgICAgXCJlYzI6RGlzYWJsZUlwYW1Pcmdhbml6YXRpb25BZG1pbkFjY291bnRcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpFbmFibGVBV1NTZXJ2aWNlQWNjZXNzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGlzYWJsZUFXU1NlcnZpY2VBY2Nlc3NcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpEZXJlZ2lzdGVyRGVsZWdhdGVkQWRtaW5pc3RyYXRvclwiLFxuICAgICAgICAgICAgXCJpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGVcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IEZpbmQgb3V0IHRoZSBleGFjdCBwcmluY2lwYWwgZm9yIHRoaXNcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IpamPool = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const ipamPool_1 = require("../../resources/aws/networking/ipamPool");
|
|
6
|
+
const CidrAllocation = {
|
|
7
|
+
production: "10.0.0.0/8",
|
|
8
|
+
staging: "80.0.0.0/8",
|
|
9
|
+
development: "150.0.0.0/8",
|
|
10
|
+
platform: "200.0.0.0/8",
|
|
11
|
+
businessContinuity: "210.0.0.0/8"
|
|
12
|
+
};
|
|
13
|
+
const IpamPrivateDefaultScopeId = aws_cdk_lib_1.Fn.importValue("IpamPrivateDefaultScopeId");
|
|
14
|
+
class IpamPool extends aws_cdk_lib_1.Stack {
|
|
15
|
+
constructor(scope, id) {
|
|
16
|
+
super(scope, id);
|
|
17
|
+
for (const [environment, cidrBlock] of Object.entries(CidrAllocation)) {
|
|
18
|
+
const ipamPool = new ipamPool_1.IpamPool(this, `${environment}IpamPool`, {
|
|
19
|
+
description: `${environment} IPAM pool - ${cidrBlock}`,
|
|
20
|
+
addressFamily: "ipv4",
|
|
21
|
+
ipamScopeId: IpamPrivateDefaultScopeId,
|
|
22
|
+
locale: environment == "businessContinuity" ? "eu-west-1" : "us-east-1",
|
|
23
|
+
allocationResourceTags: [
|
|
24
|
+
{
|
|
25
|
+
key: "fjall:operations:pool",
|
|
26
|
+
value: `${environment}`
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
autoImport: false,
|
|
30
|
+
provisionedCidrs: [{ cidr: cidrBlock }],
|
|
31
|
+
tags: [
|
|
32
|
+
{
|
|
33
|
+
key: "fjall:operations:pool",
|
|
34
|
+
value: "top-level"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: "fjall:costAllocation:environment",
|
|
38
|
+
value: `${environment}`
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolId`, {
|
|
43
|
+
key: `${environment}IpamPoolId`,
|
|
44
|
+
value: ipamPool.attrIpamPoolId,
|
|
45
|
+
exportName: `${environment}IpamPoolId`
|
|
46
|
+
});
|
|
47
|
+
new aws_cdk_lib_1.CfnOutput(this, `${environment}IpamPoolArn`, {
|
|
48
|
+
key: `${environment}IpamPoolArn`,
|
|
49
|
+
value: ipamPool.attrArn,
|
|
50
|
+
exportName: `${environment}IpamPoolArn`
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.IpamPool = IpamPool;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pcGFtUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBbUQ7QUFHbkQsc0VBQW9GO0FBRXBGLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGtCQUFrQixFQUFFLGFBQWE7Q0FDbEMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUU5RSxNQUFhLFFBQVMsU0FBUSxtQkFBSztJQUNqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLFVBQVUsRUFBRTtnQkFDakUsV0FBVyxFQUFFLEdBQUcsV0FBVyxnQkFBZ0IsU0FBUyxFQUFFO2dCQUN0RCxhQUFhLEVBQUUsTUFBTTtnQkFDckIsV0FBVyxFQUFFLHlCQUF5QjtnQkFDdEMsTUFBTSxFQUFFLFdBQVcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO2dCQUN2RSxzQkFBc0IsRUFBRTtvQkFDdEI7d0JBQ0UsR0FBRyxFQUFFLHVCQUF1Qjt3QkFDNUIsS0FBSyxFQUFFLEdBQUcsV0FBVyxFQUFFO3FCQUN4QjtpQkFDRjtnQkFDRCxVQUFVLEVBQUUsS0FBSztnQkFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxFQUFFO29CQUNKO3dCQUNFLEdBQUcsRUFBRSx1QkFBdUI7d0JBQzVCLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtvQkFDRDt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3hCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsWUFBWSxFQUFFO2dCQUM5QyxHQUFHLEVBQUUsR0FBRyxXQUFXLFlBQVk7Z0JBQy9CLEtBQUssRUFBRSxRQUFRLENBQUMsY0FBYztnQkFDOUIsVUFBVSxFQUFFLEdBQUcsV0FBVyxZQUFZO2FBQ3ZDLENBQUMsQ0FBQztZQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLGFBQWEsRUFBRTtnQkFDL0MsR0FBRyxFQUFFLEdBQUcsV0FBVyxhQUFhO2dCQUNoQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3ZCLFVBQVUsRUFBRSxHQUFHLFdBQVcsYUFBYTthQUN4QyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQTNDRCw0QkEyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiwgU3RhY2ssIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgSXBhbVBvb2wgYXMgaXBhbVBvb2xDbGFzcyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcblxuY29uc3QgQ2lkckFsbG9jYXRpb24gPSB7XG4gIHByb2R1Y3Rpb246IFwiMTAuMC4wLjAvOFwiLFxuICBzdGFnaW5nOiBcIjgwLjAuMC4wLzhcIixcbiAgZGV2ZWxvcG1lbnQ6IFwiMTUwLjAuMC4wLzhcIixcbiAgcGxhdGZvcm06IFwiMjAwLjAuMC4wLzhcIixcbiAgYnVzaW5lc3NDb250aW51aXR5OiBcIjIxMC4wLjAuMC84XCJcbn07XG5cbmNvbnN0IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQgPSBGbi5pbXBvcnRWYWx1ZShcIklwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWRcIik7XG5cbmV4cG9ydCBjbGFzcyBJcGFtUG9vbCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBmb3IgKGNvbnN0IFtlbnZpcm9ubWVudCwgY2lkckJsb2NrXSBvZiBPYmplY3QuZW50cmllcyhDaWRyQWxsb2NhdGlvbikpIHtcbiAgICAgIGNvbnN0IGlwYW1Qb29sID0gbmV3IGlwYW1Qb29sQ2xhc3ModGhpcywgYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xgLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHtlbnZpcm9ubWVudH0gSVBBTSBwb29sIC0gJHtjaWRyQmxvY2t9YCxcbiAgICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICAgIGlwYW1TY29wZUlkOiBJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkLFxuICAgICAgICBsb2NhbGU6IGVudmlyb25tZW50ID09IFwiYnVzaW5lc3NDb250aW51aXR5XCIgPyBcImV1LXdlc3QtMVwiIDogXCJ1cy1lYXN0LTFcIixcbiAgICAgICAgYWxsb2NhdGlvblJlc291cmNlVGFnczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgIHZhbHVlOiBgJHtlbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhdXRvSW1wb3J0OiBmYWxzZSxcbiAgICAgICAgcHJvdmlzaW9uZWRDaWRyczogW3sgY2lkcjogY2lkckJsb2NrIH1dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgdmFsdWU6IFwidG9wLWxldmVsXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgdmFsdWU6IGAke2Vudmlyb25tZW50fWBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sSWRgLCB7XG4gICAgICAgIGtleTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGAsXG4gICAgICAgIHZhbHVlOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7ZW52aXJvbm1lbnR9SXBhbVBvb2xJZGBcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCwge1xuICAgICAgICBrZXk6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYCxcbiAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJBcm4sXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IpamPoolId = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
6
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
7
|
+
const cfnOutput_1 = require("../../resources/aws/utilities/cfnOutput");
|
|
8
|
+
class IpamPoolId extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
const ipamPoolId = new awsCustomResource_1.AwsCustomResource(this, "CustomResource", {
|
|
12
|
+
functionName: "ipamPoolId",
|
|
13
|
+
onCreate: {
|
|
14
|
+
service: "ec2",
|
|
15
|
+
action: "DescribeIpamPoolsCommand",
|
|
16
|
+
parameters: {
|
|
17
|
+
Filters: [
|
|
18
|
+
{
|
|
19
|
+
Name: "locale",
|
|
20
|
+
Values: [props.region]
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
physicalResourceId: customResources.PhysicalResourceId.of("ipamPoolId")
|
|
25
|
+
},
|
|
26
|
+
resourceType: "Custom::DescribeIpamPools"
|
|
27
|
+
});
|
|
28
|
+
new cfnOutput_1.CfnOutput(this, `Output`, {
|
|
29
|
+
key: `ManagedIpamPoolId`,
|
|
30
|
+
value: ipamPoolId.getResponseField("IpamPools.0.IpamPoolId"),
|
|
31
|
+
exportName: `ManagedIpamPoolId`
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.IpamPoolId = IpamPoolId;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xJZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2lwYW1Qb29sSWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRixnRUFBZ0U7QUFDaEUsdUVBQW9FO0FBT3BFLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUMvRCxZQUFZLEVBQUUsWUFBWTtZQUMxQixRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLDBCQUEwQjtnQkFDbEMsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3lCQUN2QjtxQkFDRjtpQkFDRjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4RTtZQUNELFlBQVksRUFBRSwyQkFBMkI7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDNUIsR0FBRyxFQUFFLG1CQUFtQjtZQUN4QixLQUFLLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO1lBQzVELFVBQVUsRUFBRSxtQkFBbUI7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNUJELGdDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvY2ZuT3V0cHV0XCI7XG5cbmludGVyZmFjZSBJcGFtUG9vbElkUHJvcHMge1xuICByZWdpb246IHN0cmluZztcbiAgb3duZXJJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xJZCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbElkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgaXBhbVBvb2xJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkN1c3RvbVJlc291cmNlXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogXCJpcGFtUG9vbElkXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcImVjMlwiLFxuICAgICAgICBhY3Rpb246IFwiRGVzY3JpYmVJcGFtUG9vbHNDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBGaWx0ZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIE5hbWU6IFwibG9jYWxlXCIsXG4gICAgICAgICAgICAgIFZhbHVlczogW3Byb3BzLnJlZ2lvbl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImlwYW1Qb29sSWRcIilcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpEZXNjcmliZUlwYW1Qb29sc1wiXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBPdXRwdXRgLCB7XG4gICAgICBrZXk6IGBNYW5hZ2VkSXBhbVBvb2xJZGAsXG4gICAgICB2YWx1ZTogaXBhbVBvb2xJZC5nZXRSZXNwb25zZUZpZWxkKFwiSXBhbVBvb2xzLjAuSXBhbVBvb2xJZFwiKSxcbiAgICAgIGV4cG9ydE5hbWU6IGBNYW5hZ2VkSXBhbVBvb2xJZGBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StackProps, Stack } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class IpamPoolResourceShare extends Stack {
|
|
4
4
|
constructor(scope: Construct, id: string, props?: StackProps);
|
|
5
5
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IpamPoolResourceShare = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const resourceShare_1 = require("../../resources/aws/utilities/resourceShare");
|
|
6
|
+
const getAccountId_1 = require("../../utils/getAccountId");
|
|
7
|
+
const environments = [
|
|
8
|
+
"production",
|
|
9
|
+
"staging",
|
|
10
|
+
"development",
|
|
11
|
+
"businessContinuity"
|
|
12
|
+
];
|
|
13
|
+
const ipamShareProps = environments.map((environment) => {
|
|
14
|
+
return {
|
|
15
|
+
environment: environment,
|
|
16
|
+
accountId: (0, getAccountId_1.default)(environment),
|
|
17
|
+
ipamPoolArn: aws_cdk_lib_1.Fn.importValue(`${environment}IpamPoolArn`)
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
class IpamPoolResourceShare extends aws_cdk_lib_1.Stack {
|
|
21
|
+
constructor(scope, id, props) {
|
|
22
|
+
super(scope, id, props);
|
|
23
|
+
for (const ipamShareProp of ipamShareProps) {
|
|
24
|
+
if (!ipamShareProp.accountId)
|
|
25
|
+
continue;
|
|
26
|
+
new resourceShare_1.ResourceShare(this, `${ipamShareProp.environment}IpamResourceShare`, {
|
|
27
|
+
name: `${ipamShareProp.environment}IpamResourceShare`,
|
|
28
|
+
allowExternalPrincipals: false,
|
|
29
|
+
principals: [ipamShareProp.accountId],
|
|
30
|
+
resourceArns: [ipamShareProp.ipamPoolArn],
|
|
31
|
+
tags: [
|
|
32
|
+
{
|
|
33
|
+
key: "fjall:costAllocation:environment",
|
|
34
|
+
value: `${ipamShareProp.environment}`
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.IpamPoolResourceShare = IpamPoolResourceShare;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2xSZXNvdXJjZVNoYXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaXBhbVBvb2xSZXNvdXJjZVNoYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRDtBQUdwRCwrRUFBNEU7QUFDNUUsMkRBQW9EO0FBRXBELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBQ3RELE9BQU87UUFDTCxXQUFXLEVBQUUsV0FBVztRQUN4QixTQUFTLEVBQUUsSUFBQSxzQkFBWSxFQUFDLFdBQVcsQ0FBQztRQUNwQyxXQUFXLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLGFBQWEsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFhLHFCQUFzQixTQUFRLG1CQUFLO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2dCQUFFLFNBQVM7WUFFdkMsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxXQUFXLG1CQUFtQixFQUFFO2dCQUN2RSxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxtQkFBbUI7Z0JBQ3JELHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsa0NBQWtDO3dCQUN2QyxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFO3FCQUN0QztpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBckJELHNEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUHJvcHMsIFN0YWNrLCBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgUmVzb3VyY2VTaGFyZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuY29uc3QgZW52aXJvbm1lbnRzID0gW1xuICBcInByb2R1Y3Rpb25cIixcbiAgXCJzdGFnaW5nXCIsXG4gIFwiZGV2ZWxvcG1lbnRcIixcbiAgXCJidXNpbmVzc0NvbnRpbnVpdHlcIlxuXTtcblxuY29uc3QgaXBhbVNoYXJlUHJvcHMgPSBlbnZpcm9ubWVudHMubWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCxcbiAgICBhY2NvdW50SWQ6IGdldEFjY291bnRJZChlbnZpcm9ubWVudCksXG4gICAgaXBhbVBvb2xBcm46IEZuLmltcG9ydFZhbHVlKGAke2Vudmlyb25tZW50fUlwYW1Qb29sQXJuYClcbiAgfTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xSZXNvdXJjZVNoYXJlIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGZvciAoY29uc3QgaXBhbVNoYXJlUHJvcCBvZiBpcGFtU2hhcmVQcm9wcykge1xuICAgICAgaWYgKCFpcGFtU2hhcmVQcm9wLmFjY291bnRJZCkgY29udGludWU7XG5cbiAgICAgIG5ldyBSZXNvdXJjZVNoYXJlKHRoaXMsIGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLCB7XG4gICAgICAgIG5hbWU6IGAke2lwYW1TaGFyZVByb3AuZW52aXJvbm1lbnR9SXBhbVJlc291cmNlU2hhcmVgLFxuICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgIHByaW5jaXBhbHM6IFtpcGFtU2hhcmVQcm9wLmFjY291bnRJZF0sXG4gICAgICAgIHJlc291cmNlQXJuczogW2lwYW1TaGFyZVByb3AuaXBhbVBvb2xBcm5dLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aXBhbVNoYXJlUHJvcC5lbnZpcm9ubWVudH1gXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CfnOutput } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { Accounts } from "../../patterns/aws/managedOrganisation";
|
|
4
|
+
interface OrganisationProps {
|
|
5
|
+
organisationName: string;
|
|
6
|
+
orgAccounts: string[];
|
|
7
|
+
platformAccount: string;
|
|
8
|
+
accountEmail: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
12
|
+
*/
|
|
13
|
+
export default class Organisation extends Construct {
|
|
14
|
+
props: OrganisationProps;
|
|
15
|
+
accountId: CfnOutput;
|
|
16
|
+
private importedAccounts;
|
|
17
|
+
private organisation;
|
|
18
|
+
private organisationalUnits;
|
|
19
|
+
private accounts;
|
|
20
|
+
constructor(scope: Construct, id: string, props: OrganisationProps);
|
|
21
|
+
private importAccounts;
|
|
22
|
+
private addOrganisation;
|
|
23
|
+
private addOrganisationUnitsAndAccounts;
|
|
24
|
+
private addOrganisationalUnit;
|
|
25
|
+
private addAccount;
|
|
26
|
+
getAccounts(): Accounts;
|
|
27
|
+
}
|
|
28
|
+
export {};
|