@fjall/components-infrastructure 0.25.0 → 0.25.1
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/package.json +3 -3
- package/dist/lib/config/aws/bootstrap.d.ts +0 -12
- package/dist/lib/config/aws/bootstrap.js +0 -72
- package/dist/lib/config/aws/bootstrap.original.d.ts +0 -13
- package/dist/lib/config/aws/bootstrap.original.js +0 -94
- package/dist/lib/config/aws/bootstrapAccounts.d.ts +0 -12
- package/dist/lib/config/aws/bootstrapAccounts.js +0 -89
- package/dist/lib/config/aws/bootstrapMultiRegion.example.d.ts +0 -15
- package/dist/lib/config/aws/bootstrapMultiRegion.example.js +0 -105
- package/dist/lib/config/aws/bootstrapSelfManaged.example.d.ts +0 -13
- package/dist/lib/config/aws/bootstrapSelfManaged.example.js +0 -56
- package/dist/lib/config/aws/managedAccountStackSet.d.ts +0 -16
- package/dist/lib/config/aws/managedAccountStackSet.js +0 -75
- package/dist/lib/config/aws/managedPlatformStackSet.d.ts +0 -24
- package/dist/lib/config/aws/managedPlatformStackSet.js +0 -101
- package/dist/lib/patterns/aws/fivetranAppBuilder.d.ts +0 -4
- package/dist/lib/patterns/aws/fivetranAppBuilder.js +0 -32
- package/dist/lib/patterns/aws/managedAccountStackSet.d.ts +0 -11
- package/dist/lib/patterns/aws/managedAccountStackSet.js +0 -36
- package/dist/lib/patterns/aws/managedPlatformStackSet.d.ts +0 -17
- package/dist/lib/patterns/aws/managedPlatformStackSet.js +0 -45
- package/dist/lib/resources/aws/iam/identityCenter/assignmentNew.d.ts +0 -11
- package/dist/lib/resources/aws/iam/identityCenter/assignmentNew.js +0 -102
- package/dist/lib/resources/aws/iam/identityCenter/lambda/assignmentHandler.d.ts +0 -24
- package/dist/lib/resources/aws/iam/identityCenter/lambda/assignmentHandler.js +0 -246
- package/dist/lib/resources/aws/organizations/index.d.ts +0 -54
- package/dist/lib/resources/aws/organizations/index.js +0 -196
- package/dist/lib/utils/getCidr.d.ts +0 -8
- package/dist/lib/utils/getCidr.js +0 -40
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DeployManagedAccounts = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const constructs_1 = require("constructs");
|
|
6
|
-
const aws_s3_deployment_1 = require("aws-cdk-lib/aws-s3-deployment");
|
|
7
|
-
const path = require("path");
|
|
8
|
-
const managedAccountStackSet_1 = require("../../patterns/aws/managedAccountStackSet");
|
|
9
|
-
/**
|
|
10
|
-
* Deploys the ManagedAccount stack to all accounts in the specified organizational units
|
|
11
|
-
* using AWS CloudFormation StackSets.
|
|
12
|
-
*/
|
|
13
|
-
class DeployManagedAccounts extends constructs_1.Construct {
|
|
14
|
-
constructor(scope, id, props) {
|
|
15
|
-
super(scope, id);
|
|
16
|
-
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
17
|
-
// Create a temporary app to synthesize the ManagedAccount template
|
|
18
|
-
const tempApp = new aws_cdk_lib_1.App();
|
|
19
|
-
const managedAccountStack = new managedAccountStackSet_1.ManagedAccountStackSet(tempApp, "ManagedAccountTemplate");
|
|
20
|
-
const assembly = tempApp.synth();
|
|
21
|
-
// Get the synthesized template
|
|
22
|
-
const templateArtifact = assembly.getStackArtifact(managedAccountStack.artifactId);
|
|
23
|
-
const templatePath = templateArtifact.templateFullPath;
|
|
24
|
-
// Deploy the template to the S3 bucket
|
|
25
|
-
new aws_s3_deployment_1.BucketDeployment(this, "DeployManagedAccountTemplate", {
|
|
26
|
-
sources: [aws_s3_deployment_1.Source.asset(path.dirname(templatePath))],
|
|
27
|
-
destinationBucket: props.templateBucket,
|
|
28
|
-
destinationKeyPrefix: "managed-account",
|
|
29
|
-
retainOnDelete: false
|
|
30
|
-
});
|
|
31
|
-
// Use region-agnostic S3 URL format
|
|
32
|
-
const templateURL = `https://${props.templateBucket.bucketName}.s3.amazonaws.com/managed-account/${path.basename(templatePath)}`;
|
|
33
|
-
new aws_cdk_lib_1.CfnStackSet(this, "ManagedAccountStackSet", {
|
|
34
|
-
permissionModel: "SERVICE_MANAGED",
|
|
35
|
-
stackSetName: `ManagedAccount-${stack.stackName}`,
|
|
36
|
-
description: "ManagedAccount StackSet for organization accounts",
|
|
37
|
-
capabilities: [
|
|
38
|
-
"CAPABILITY_IAM",
|
|
39
|
-
"CAPABILITY_NAMED_IAM",
|
|
40
|
-
"CAPABILITY_AUTO_EXPAND"
|
|
41
|
-
],
|
|
42
|
-
templateUrl: templateURL,
|
|
43
|
-
autoDeployment: {
|
|
44
|
-
enabled: true,
|
|
45
|
-
retainStacksOnAccountRemoval: false
|
|
46
|
-
},
|
|
47
|
-
callAs: "DELEGATED_ADMIN",
|
|
48
|
-
operationPreferences: {
|
|
49
|
-
regionConcurrencyType: "PARALLEL",
|
|
50
|
-
maxConcurrentPercentage: 100,
|
|
51
|
-
failureTolerancePercentage: 10
|
|
52
|
-
},
|
|
53
|
-
stackInstancesGroup: [
|
|
54
|
-
{
|
|
55
|
-
deploymentTargets: {
|
|
56
|
-
organizationalUnitIds: props.organizationalUnitIds
|
|
57
|
-
},
|
|
58
|
-
regions: props.regions,
|
|
59
|
-
parameterOverrides: [
|
|
60
|
-
{
|
|
61
|
-
parameterKey: "AccountId",
|
|
62
|
-
parameterValue: "{{account}}"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
parameterKey: "Region",
|
|
66
|
-
parameterValue: "{{region}}"
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.DeployManagedAccounts = DeployManagedAccounts;
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZEFjY291bnRTdGFja1NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL21hbmFnZWRBY2NvdW50U3RhY2tTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXNEO0FBQ3RELDJDQUF1QztBQUV2QyxxRUFBeUU7QUFDekUsNkJBQTZCO0FBQzdCLHNGQUE2RztBQVM3Rzs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBQ2xELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixtRUFBbUU7UUFDbkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLCtDQUFzQixDQUNwRCxPQUFPLEVBQ1Asd0JBQXdCLENBQ3pCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFakMsK0JBQStCO1FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUNoRCxtQkFBbUIsQ0FBQyxVQUFVLENBQy9CLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV2RCx1Q0FBdUM7UUFDdkMsSUFBSSxvQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUU7WUFDekQsT0FBTyxFQUFFLENBQUMsMEJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ25ELGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3ZDLG9CQUFvQixFQUFFLGlCQUFpQjtZQUN2QyxjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFFSCxvQ0FBb0M7UUFDcEMsTUFBTSxXQUFXLEdBQUcsV0FDbEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUN2QixxQ0FBcUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBRW5FLElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDOUMsZUFBZSxFQUFFLGlCQUFpQjtZQUNsQyxZQUFZLEVBQUUsa0JBQWtCLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDakQsV0FBVyxFQUFFLG1EQUFtRDtZQUNoRSxZQUFZLEVBQUU7Z0JBQ1osZ0JBQWdCO2dCQUNoQixzQkFBc0I7Z0JBQ3RCLHdCQUF3QjthQUN6QjtZQUNELFdBQVcsRUFBRSxXQUFXO1lBQ3hCLGNBQWMsRUFBRTtnQkFDZCxPQUFPLEVBQUUsSUFBSTtnQkFDYiw0QkFBNEIsRUFBRSxLQUFLO2FBQ3BDO1lBQ0QsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixvQkFBb0IsRUFBRTtnQkFDcEIscUJBQXFCLEVBQUUsVUFBVTtnQkFDakMsdUJBQXVCLEVBQUUsR0FBRztnQkFDNUIsMEJBQTBCLEVBQUUsRUFBRTthQUMvQjtZQUNELG1CQUFtQixFQUFFO2dCQUNuQjtvQkFDRSxpQkFBaUIsRUFBRTt3QkFDakIscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtxQkFDbkQ7b0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUN0QixrQkFBa0IsRUFBRTt3QkFDbEI7NEJBQ0UsWUFBWSxFQUFFLFdBQVc7NEJBQ3pCLGNBQWMsRUFBRSxhQUFhO3lCQUM5Qjt3QkFDRDs0QkFDRSxZQUFZLEVBQUUsUUFBUTs0QkFDdEIsY0FBYyxFQUFFLFlBQVk7eUJBQzdCO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6RUQsc0RBeUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIENmblN0YWNrU2V0LCBBcHAgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTM0J1Y2tldCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEJ1Y2tldERlcGxveW1lbnQsIFNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudFwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgTWFuYWdlZEFjY291bnRTdGFja1NldCBhcyBNYW5hZ2VkQWNjb3VudFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3BhdHRlcm5zL2F3cy9tYW5hZ2VkQWNjb3VudFN0YWNrU2V0XCI7XG5cbmludGVyZmFjZSBEZXBsb3lNYW5hZ2VkQWNjb3VudHNQcm9wcyB7XG4gIHJlZ2lvbnM6IHN0cmluZ1tdO1xuICB0ZW1wbGF0ZUJ1Y2tldDogUzNCdWNrZXQ7XG4gIG9yZ2FuaXNhdGlvbklkOiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbmFsVW5pdElkczogc3RyaW5nW107XG59XG5cbi8qKlxuICogRGVwbG95cyB0aGUgTWFuYWdlZEFjY291bnQgc3RhY2sgdG8gYWxsIGFjY291bnRzIGluIHRoZSBzcGVjaWZpZWQgb3JnYW5pemF0aW9uYWwgdW5pdHNcbiAqIHVzaW5nIEFXUyBDbG91ZEZvcm1hdGlvbiBTdGFja1NldHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBsb3lNYW5hZ2VkQWNjb3VudHMgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGVwbG95TWFuYWdlZEFjY291bnRzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcblxuICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBhcHAgdG8gc3ludGhlc2l6ZSB0aGUgTWFuYWdlZEFjY291bnQgdGVtcGxhdGVcbiAgICBjb25zdCB0ZW1wQXBwID0gbmV3IEFwcCgpO1xuICAgIGNvbnN0IG1hbmFnZWRBY2NvdW50U3RhY2sgPSBuZXcgTWFuYWdlZEFjY291bnRUZW1wbGF0ZShcbiAgICAgIHRlbXBBcHAsXG4gICAgICBcIk1hbmFnZWRBY2NvdW50VGVtcGxhdGVcIlxuICAgICk7XG4gICAgY29uc3QgYXNzZW1ibHkgPSB0ZW1wQXBwLnN5bnRoKCk7XG5cbiAgICAvLyBHZXQgdGhlIHN5bnRoZXNpemVkIHRlbXBsYXRlXG4gICAgY29uc3QgdGVtcGxhdGVBcnRpZmFjdCA9IGFzc2VtYmx5LmdldFN0YWNrQXJ0aWZhY3QoXG4gICAgICBtYW5hZ2VkQWNjb3VudFN0YWNrLmFydGlmYWN0SWRcbiAgICApO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHRlbXBsYXRlQXJ0aWZhY3QudGVtcGxhdGVGdWxsUGF0aDtcblxuICAgIC8vIERlcGxveSB0aGUgdGVtcGxhdGUgdG8gdGhlIFMzIGJ1Y2tldFxuICAgIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiRGVwbG95TWFuYWdlZEFjY291bnRUZW1wbGF0ZVwiLCB7XG4gICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHBhdGguZGlybmFtZSh0ZW1wbGF0ZVBhdGgpKV0sXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogcHJvcHMudGVtcGxhdGVCdWNrZXQsXG4gICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogXCJtYW5hZ2VkLWFjY291bnRcIixcbiAgICAgIHJldGFpbk9uRGVsZXRlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHJlZ2lvbi1hZ25vc3RpYyBTMyBVUkwgZm9ybWF0XG4gICAgY29uc3QgdGVtcGxhdGVVUkwgPSBgaHR0cHM6Ly8ke1xuICAgICAgcHJvcHMudGVtcGxhdGVCdWNrZXQuYnVja2V0TmFtZVxuICAgIH0uczMuYW1hem9uYXdzLmNvbS9tYW5hZ2VkLWFjY291bnQvJHtwYXRoLmJhc2VuYW1lKHRlbXBsYXRlUGF0aCl9YDtcblxuICAgIG5ldyBDZm5TdGFja1NldCh0aGlzLCBcIk1hbmFnZWRBY2NvdW50U3RhY2tTZXRcIiwge1xuICAgICAgcGVybWlzc2lvbk1vZGVsOiBcIlNFUlZJQ0VfTUFOQUdFRFwiLFxuICAgICAgc3RhY2tTZXROYW1lOiBgTWFuYWdlZEFjY291bnQtJHtzdGFjay5zdGFja05hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1hbmFnZWRBY2NvdW50IFN0YWNrU2V0IGZvciBvcmdhbml6YXRpb24gYWNjb3VudHNcIixcbiAgICAgIGNhcGFiaWxpdGllczogW1xuICAgICAgICBcIkNBUEFCSUxJVFlfSUFNXCIsXG4gICAgICAgIFwiQ0FQQUJJTElUWV9OQU1FRF9JQU1cIixcbiAgICAgICAgXCJDQVBBQklMSVRZX0FVVE9fRVhQQU5EXCJcbiAgICAgIF0sXG4gICAgICB0ZW1wbGF0ZVVybDogdGVtcGxhdGVVUkwsXG4gICAgICBhdXRvRGVwbG95bWVudDoge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICByZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIGNhbGxBczogXCJERUxFR0FURURfQURNSU5cIixcbiAgICAgIG9wZXJhdGlvblByZWZlcmVuY2VzOiB7XG4gICAgICAgIHJlZ2lvbkNvbmN1cnJlbmN5VHlwZTogXCJQQVJBTExFTFwiLFxuICAgICAgICBtYXhDb25jdXJyZW50UGVyY2VudGFnZTogMTAwLFxuICAgICAgICBmYWlsdXJlVG9sZXJhbmNlUGVyY2VudGFnZTogMTBcbiAgICAgIH0sXG4gICAgICBzdGFja0luc3RhbmNlc0dyb3VwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkZXBsb3ltZW50VGFyZ2V0czoge1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uYWxVbml0SWRzOiBwcm9wcy5vcmdhbml6YXRpb25hbFVuaXRJZHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlZ2lvbnM6IHByb3BzLnJlZ2lvbnMsXG4gICAgICAgICAgcGFyYW1ldGVyT3ZlcnJpZGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBhcmFtZXRlcktleTogXCJBY2NvdW50SWRcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyVmFsdWU6IFwie3thY2NvdW50fX1cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1ldGVyS2V5OiBcIlJlZ2lvblwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZTogXCJ7e3JlZ2lvbn19XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { S3Bucket } from "../../resources";
|
|
3
|
-
interface DeployManagedPlatformProps {
|
|
4
|
-
regions: string[];
|
|
5
|
-
templateBucket: S3Bucket;
|
|
6
|
-
organisationId: string;
|
|
7
|
-
platformAccountId: string;
|
|
8
|
-
orgAccounts: string[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Deploys the ManagedPlatform stack to the platform account only
|
|
12
|
-
* using AWS CloudFormation StackSets.
|
|
13
|
-
*
|
|
14
|
-
* Unlike ManagedAccount which deploys to all accounts, ManagedPlatform
|
|
15
|
-
* is only deployed to the designated platform account as it manages
|
|
16
|
-
* organization-wide resources like IPAM.
|
|
17
|
-
*
|
|
18
|
-
* Note: IPAM pools for individual accounts need to be created separately
|
|
19
|
-
* as they require concrete account names at synthesis time.
|
|
20
|
-
*/
|
|
21
|
-
export declare class DeployManagedPlatform extends Construct {
|
|
22
|
-
constructor(scope: Construct, id: string, props: DeployManagedPlatformProps);
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DeployManagedPlatform = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const constructs_1 = require("constructs");
|
|
6
|
-
const aws_s3_deployment_1 = require("aws-cdk-lib/aws-s3-deployment");
|
|
7
|
-
const path = require("path");
|
|
8
|
-
const fs = require("fs");
|
|
9
|
-
const os = require("os");
|
|
10
|
-
const managedPlatformStackSet_1 = require("../../patterns/aws/managedPlatformStackSet");
|
|
11
|
-
/**
|
|
12
|
-
* Deploys the ManagedPlatform stack to the platform account only
|
|
13
|
-
* using AWS CloudFormation StackSets.
|
|
14
|
-
*
|
|
15
|
-
* Unlike ManagedAccount which deploys to all accounts, ManagedPlatform
|
|
16
|
-
* is only deployed to the designated platform account as it manages
|
|
17
|
-
* organization-wide resources like IPAM.
|
|
18
|
-
*
|
|
19
|
-
* Note: IPAM pools for individual accounts need to be created separately
|
|
20
|
-
* as they require concrete account names at synthesis time.
|
|
21
|
-
*/
|
|
22
|
-
class DeployManagedPlatform extends constructs_1.Construct {
|
|
23
|
-
constructor(scope, id, props) {
|
|
24
|
-
super(scope, id);
|
|
25
|
-
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
26
|
-
let tmpDir;
|
|
27
|
-
try {
|
|
28
|
-
// Create a temporary app to synthesize the ManagedPlatform template
|
|
29
|
-
const tempApp = new aws_cdk_lib_1.App({
|
|
30
|
-
outdir: path.join(os.tmpdir(), `cdk-out-${Date.now()}`)
|
|
31
|
-
});
|
|
32
|
-
const managedPlatformStack = new managedPlatformStackSet_1.ManagedPlatformStackSet(tempApp, "ManagedPlatformTemplate");
|
|
33
|
-
const assembly = tempApp.synth();
|
|
34
|
-
// Get the synthesized template
|
|
35
|
-
const templateArtifact = assembly.getStackArtifact(managedPlatformStack.artifactId);
|
|
36
|
-
const templatePath = templateArtifact.templateFullPath;
|
|
37
|
-
// Create a temporary directory with just the template file
|
|
38
|
-
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "managed-platform-"));
|
|
39
|
-
const templateFileName = "ManagedPlatformTemplate.template.json";
|
|
40
|
-
const destPath = path.join(tmpDir, templateFileName);
|
|
41
|
-
// Copy only the template file
|
|
42
|
-
fs.copyFileSync(templatePath, destPath);
|
|
43
|
-
// Deploy the template to the S3 bucket
|
|
44
|
-
new aws_s3_deployment_1.BucketDeployment(this, "DeployManagedPlatformTemplate", {
|
|
45
|
-
sources: [aws_s3_deployment_1.Source.asset(tmpDir)],
|
|
46
|
-
destinationBucket: props.templateBucket,
|
|
47
|
-
destinationKeyPrefix: "managed-platform",
|
|
48
|
-
retainOnDelete: false
|
|
49
|
-
});
|
|
50
|
-
// Use region-agnostic S3 URL format
|
|
51
|
-
const templateURL = `https://${props.templateBucket.bucketName}.s3.amazonaws.com/managed-platform/${templateFileName}`;
|
|
52
|
-
new aws_cdk_lib_1.CfnStackSet(this, "ManagedPlatformStackSet", {
|
|
53
|
-
permissionModel: "SERVICE_MANAGED",
|
|
54
|
-
stackSetName: `ManagedPlatform-${stack.stackName}`,
|
|
55
|
-
description: "ManagedPlatform StackSet for the platform account (IPAM infrastructure only)",
|
|
56
|
-
capabilities: [
|
|
57
|
-
"CAPABILITY_IAM",
|
|
58
|
-
"CAPABILITY_NAMED_IAM",
|
|
59
|
-
"CAPABILITY_AUTO_EXPAND"
|
|
60
|
-
],
|
|
61
|
-
templateUrl: templateURL,
|
|
62
|
-
autoDeployment: {
|
|
63
|
-
enabled: false, // Platform account is specific, not auto-deployed
|
|
64
|
-
retainStacksOnAccountRemoval: true
|
|
65
|
-
},
|
|
66
|
-
callAs: "DELEGATED_ADMIN",
|
|
67
|
-
operationPreferences: {
|
|
68
|
-
regionConcurrencyType: "PARALLEL",
|
|
69
|
-
maxConcurrentPercentage: 100,
|
|
70
|
-
failureTolerancePercentage: 0 // No tolerance as it's a single account
|
|
71
|
-
},
|
|
72
|
-
stackInstancesGroup: [
|
|
73
|
-
{
|
|
74
|
-
deploymentTargets: {
|
|
75
|
-
accounts: [props.platformAccountId] // Deploy only to platform account
|
|
76
|
-
},
|
|
77
|
-
regions: props.regions,
|
|
78
|
-
parameterOverrides: [
|
|
79
|
-
{
|
|
80
|
-
parameterKey: "AccountId",
|
|
81
|
-
parameterValue: props.platformAccountId
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
parameterKey: "Region",
|
|
85
|
-
parameterValue: props.regions[0] // Primary region for IPAM
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
// Clean up temporary directory
|
|
94
|
-
if (tmpDir && fs.existsSync(tmpDir)) {
|
|
95
|
-
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.DeployManagedPlatform = DeployManagedPlatform;
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9tYW5hZ2VkUGxhdGZvcm1TdGFja1NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBc0Q7QUFDdEQsMkNBQXVDO0FBRXZDLHFFQUF5RTtBQUN6RSw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qix3RkFBZ0g7QUFVaEg7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksTUFBMEIsQ0FBQztRQUUvQixJQUFJLENBQUM7WUFDSCxvRUFBb0U7WUFDcEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBRyxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUN4RCxDQUFDLENBQUM7WUFFSCxNQUFNLG9CQUFvQixHQUFHLElBQUksaURBQXVCLENBQ3RELE9BQU8sRUFDUCx5QkFBeUIsQ0FDMUIsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVqQywrQkFBK0I7WUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQ2hELG9CQUFvQixDQUFDLFVBQVUsQ0FDaEMsQ0FBQztZQUNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBRXZELDJEQUEyRDtZQUMzRCxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDckUsTUFBTSxnQkFBZ0IsR0FBRyx1Q0FBdUMsQ0FBQztZQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXJELDhCQUE4QjtZQUM5QixFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV4Qyx1Q0FBdUM7WUFDdkMsSUFBSSxvQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLEVBQUU7Z0JBQzFELE9BQU8sRUFBRSxDQUFDLDBCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsY0FBYztnQkFDdkMsb0JBQW9CLEVBQUUsa0JBQWtCO2dCQUN4QyxjQUFjLEVBQUUsS0FBSzthQUN0QixDQUFDLENBQUM7WUFFSCxvQ0FBb0M7WUFDcEMsTUFBTSxXQUFXLEdBQUcsV0FBVyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsc0NBQXNDLGdCQUFnQixFQUFFLENBQUM7WUFFdkgsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtnQkFDL0MsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsWUFBWSxFQUFFLG1CQUFtQixLQUFLLENBQUMsU0FBUyxFQUFFO2dCQUNsRCxXQUFXLEVBQ1QsOEVBQThFO2dCQUNoRixZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCO29CQUNoQixzQkFBc0I7b0JBQ3RCLHdCQUF3QjtpQkFDekI7Z0JBQ0QsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGNBQWMsRUFBRTtvQkFDZCxPQUFPLEVBQUUsS0FBSyxFQUFFLGtEQUFrRDtvQkFDbEUsNEJBQTRCLEVBQUUsSUFBSTtpQkFDbkM7Z0JBQ0QsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsb0JBQW9CLEVBQUU7b0JBQ3BCLHFCQUFxQixFQUFFLFVBQVU7b0JBQ2pDLHVCQUF1QixFQUFFLEdBQUc7b0JBQzVCLDBCQUEwQixFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7aUJBQ3ZFO2dCQUNELG1CQUFtQixFQUFFO29CQUNuQjt3QkFDRSxpQkFBaUIsRUFBRTs0QkFDakIsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsa0NBQWtDO3lCQUN2RTt3QkFDRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87d0JBQ3RCLGtCQUFrQixFQUFFOzRCQUNsQjtnQ0FDRSxZQUFZLEVBQUUsV0FBVztnQ0FDekIsY0FBYyxFQUFFLEtBQUssQ0FBQyxpQkFBaUI7NkJBQ3hDOzRCQUNEO2dDQUNFLFlBQVksRUFBRSxRQUFRO2dDQUN0QixjQUFjLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7NkJBQzVEO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsK0JBQStCO1lBQy9CLElBQUksTUFBTSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNUZELHNEQTRGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBDZm5TdGFja1NldCwgQXBwIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUzNCdWNrZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBCdWNrZXREZXBsb3ltZW50LCBTb3VyY2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgeyBNYW5hZ2VkUGxhdGZvcm1TdGFja1NldCBhcyBNYW5hZ2VkUGxhdGZvcm1UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9wYXR0ZXJucy9hd3MvbWFuYWdlZFBsYXRmb3JtU3RhY2tTZXRcIjtcblxuaW50ZXJmYWNlIERlcGxveU1hbmFnZWRQbGF0Zm9ybVByb3BzIHtcbiAgcmVnaW9uczogc3RyaW5nW107XG4gIHRlbXBsYXRlQnVja2V0OiBTM0J1Y2tldDtcbiAgb3JnYW5pc2F0aW9uSWQ6IHN0cmluZztcbiAgcGxhdGZvcm1BY2NvdW50SWQ6IHN0cmluZztcbiAgb3JnQWNjb3VudHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIERlcGxveXMgdGhlIE1hbmFnZWRQbGF0Zm9ybSBzdGFjayB0byB0aGUgcGxhdGZvcm0gYWNjb3VudCBvbmx5XG4gKiB1c2luZyBBV1MgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXRzLlxuICpcbiAqIFVubGlrZSBNYW5hZ2VkQWNjb3VudCB3aGljaCBkZXBsb3lzIHRvIGFsbCBhY2NvdW50cywgTWFuYWdlZFBsYXRmb3JtXG4gKiBpcyBvbmx5IGRlcGxveWVkIHRvIHRoZSBkZXNpZ25hdGVkIHBsYXRmb3JtIGFjY291bnQgYXMgaXQgbWFuYWdlc1xuICogb3JnYW5pemF0aW9uLXdpZGUgcmVzb3VyY2VzIGxpa2UgSVBBTS5cbiAqXG4gKiBOb3RlOiBJUEFNIHBvb2xzIGZvciBpbmRpdmlkdWFsIGFjY291bnRzIG5lZWQgdG8gYmUgY3JlYXRlZCBzZXBhcmF0ZWx5XG4gKiBhcyB0aGV5IHJlcXVpcmUgY29uY3JldGUgYWNjb3VudCBuYW1lcyBhdCBzeW50aGVzaXMgdGltZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveU1hbmFnZWRQbGF0Zm9ybSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEZXBsb3lNYW5hZ2VkUGxhdGZvcm1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGxldCB0bXBEaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgYXBwIHRvIHN5bnRoZXNpemUgdGhlIE1hbmFnZWRQbGF0Zm9ybSB0ZW1wbGF0ZVxuICAgICAgY29uc3QgdGVtcEFwcCA9IG5ldyBBcHAoe1xuICAgICAgICBvdXRkaXI6IHBhdGguam9pbihvcy50bXBkaXIoKSwgYGNkay1vdXQtJHtEYXRlLm5vdygpfWApXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbWFuYWdlZFBsYXRmb3JtU3RhY2sgPSBuZXcgTWFuYWdlZFBsYXRmb3JtVGVtcGxhdGUoXG4gICAgICAgIHRlbXBBcHAsXG4gICAgICAgIFwiTWFuYWdlZFBsYXRmb3JtVGVtcGxhdGVcIlxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXNzZW1ibHkgPSB0ZW1wQXBwLnN5bnRoKCk7XG5cbiAgICAgIC8vIEdldCB0aGUgc3ludGhlc2l6ZWQgdGVtcGxhdGVcbiAgICAgIGNvbnN0IHRlbXBsYXRlQXJ0aWZhY3QgPSBhc3NlbWJseS5nZXRTdGFja0FydGlmYWN0KFxuICAgICAgICBtYW5hZ2VkUGxhdGZvcm1TdGFjay5hcnRpZmFjdElkXG4gICAgICApO1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gdGVtcGxhdGVBcnRpZmFjdC50ZW1wbGF0ZUZ1bGxQYXRoO1xuXG4gICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpdGgganVzdCB0aGUgdGVtcGxhdGUgZmlsZVxuICAgICAgdG1wRGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcIm1hbmFnZWQtcGxhdGZvcm0tXCIpKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlRmlsZU5hbWUgPSBcIk1hbmFnZWRQbGF0Zm9ybVRlbXBsYXRlLnRlbXBsYXRlLmpzb25cIjtcbiAgICAgIGNvbnN0IGRlc3RQYXRoID0gcGF0aC5qb2luKHRtcERpciwgdGVtcGxhdGVGaWxlTmFtZSk7XG5cbiAgICAgIC8vIENvcHkgb25seSB0aGUgdGVtcGxhdGUgZmlsZVxuICAgICAgZnMuY29weUZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgZGVzdFBhdGgpO1xuXG4gICAgICAvLyBEZXBsb3kgdGhlIHRlbXBsYXRlIHRvIHRoZSBTMyBidWNrZXRcbiAgICAgIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiRGVwbG95TWFuYWdlZFBsYXRmb3JtVGVtcGxhdGVcIiwge1xuICAgICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHRtcERpcildLFxuICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogcHJvcHMudGVtcGxhdGVCdWNrZXQsXG4gICAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBcIm1hbmFnZWQtcGxhdGZvcm1cIixcbiAgICAgICAgcmV0YWluT25EZWxldGU6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgLy8gVXNlIHJlZ2lvbi1hZ25vc3RpYyBTMyBVUkwgZm9ybWF0XG4gICAgICBjb25zdCB0ZW1wbGF0ZVVSTCA9IGBodHRwczovLyR7cHJvcHMudGVtcGxhdGVCdWNrZXQuYnVja2V0TmFtZX0uczMuYW1hem9uYXdzLmNvbS9tYW5hZ2VkLXBsYXRmb3JtLyR7dGVtcGxhdGVGaWxlTmFtZX1gO1xuXG4gICAgICBuZXcgQ2ZuU3RhY2tTZXQodGhpcywgXCJNYW5hZ2VkUGxhdGZvcm1TdGFja1NldFwiLCB7XG4gICAgICAgIHBlcm1pc3Npb25Nb2RlbDogXCJTRVJWSUNFX01BTkFHRURcIixcbiAgICAgICAgc3RhY2tTZXROYW1lOiBgTWFuYWdlZFBsYXRmb3JtLSR7c3RhY2suc3RhY2tOYW1lfWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiTWFuYWdlZFBsYXRmb3JtIFN0YWNrU2V0IGZvciB0aGUgcGxhdGZvcm0gYWNjb3VudCAoSVBBTSBpbmZyYXN0cnVjdHVyZSBvbmx5KVwiLFxuICAgICAgICBjYXBhYmlsaXRpZXM6IFtcbiAgICAgICAgICBcIkNBUEFCSUxJVFlfSUFNXCIsXG4gICAgICAgICAgXCJDQVBBQklMSVRZX05BTUVEX0lBTVwiLFxuICAgICAgICAgIFwiQ0FQQUJJTElUWV9BVVRPX0VYUEFORFwiXG4gICAgICAgIF0sXG4gICAgICAgIHRlbXBsYXRlVXJsOiB0ZW1wbGF0ZVVSTCxcbiAgICAgICAgYXV0b0RlcGxveW1lbnQ6IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSwgLy8gUGxhdGZvcm0gYWNjb3VudCBpcyBzcGVjaWZpYywgbm90IGF1dG8tZGVwbG95ZWRcbiAgICAgICAgICByZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGxBczogXCJERUxFR0FURURfQURNSU5cIixcbiAgICAgICAgb3BlcmF0aW9uUHJlZmVyZW5jZXM6IHtcbiAgICAgICAgICByZWdpb25Db25jdXJyZW5jeVR5cGU6IFwiUEFSQUxMRUxcIixcbiAgICAgICAgICBtYXhDb25jdXJyZW50UGVyY2VudGFnZTogMTAwLFxuICAgICAgICAgIGZhaWx1cmVUb2xlcmFuY2VQZXJjZW50YWdlOiAwIC8vIE5vIHRvbGVyYW5jZSBhcyBpdCdzIGEgc2luZ2xlIGFjY291bnRcbiAgICAgICAgfSxcbiAgICAgICAgc3RhY2tJbnN0YW5jZXNHcm91cDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlcGxveW1lbnRUYXJnZXRzOiB7XG4gICAgICAgICAgICAgIGFjY291bnRzOiBbcHJvcHMucGxhdGZvcm1BY2NvdW50SWRdIC8vIERlcGxveSBvbmx5IHRvIHBsYXRmb3JtIGFjY291bnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWdpb25zOiBwcm9wcy5yZWdpb25zLFxuICAgICAgICAgICAgcGFyYW1ldGVyT3ZlcnJpZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJLZXk6IFwiQWNjb3VudElkXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyVmFsdWU6IHByb3BzLnBsYXRmb3JtQWNjb3VudElkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJLZXk6IFwiUmVnaW9uXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyVmFsdWU6IHByb3BzLnJlZ2lvbnNbMF0gLy8gUHJpbWFyeSByZWdpb24gZm9yIElQQU1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFuIHVwIHRlbXBvcmFyeSBkaXJlY3RvcnlcbiAgICAgIGlmICh0bXBEaXIgJiYgZnMuZXhpc3RzU3luYyh0bXBEaXIpKSB7XG4gICAgICAgIGZzLnJtU3luYyh0bXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FiveTranAppBuilder = void 0;
|
|
4
|
-
const index_1 = require("../../index");
|
|
5
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
-
class FiveTranAppBuilder {
|
|
7
|
-
static build(appName, fivetranPublicKey) {
|
|
8
|
-
const app = index_1.App.getApp(appName);
|
|
9
|
-
const publicKey = fivetranPublicKey ||
|
|
10
|
-
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... YOUR_FIVETRAN_SSH_PUBLIC_KEY_HERE";
|
|
11
|
-
const fivetranUserData = aws_ec2_1.UserData.forLinux();
|
|
12
|
-
fivetranUserData.addCommands("groupadd fivetran", "useradd -m -g fivetran fivetran", "mkdir -p /home/fivetran/.ssh", "chown fivetran:fivetran /home/fivetran/.ssh", "chmod 700 /home/fivetran/.ssh", `echo "${publicKey}" > /home/fivetran/.ssh/authorized_keys`, "chown fivetran:fivetran /home/fivetran/.ssh/authorized_keys", "chmod 600 /home/fivetran/.ssh/authorized_keys");
|
|
13
|
-
app.addCompute(index_1.ComputeFactory.build(`${appName}Proxy`, {
|
|
14
|
-
type: "ec2",
|
|
15
|
-
config: {
|
|
16
|
-
instanceType: "t3.micro",
|
|
17
|
-
enableSSH: true,
|
|
18
|
-
userData: fivetranUserData,
|
|
19
|
-
minCapacity: 1,
|
|
20
|
-
maxCapacity: 1
|
|
21
|
-
},
|
|
22
|
-
tags: {
|
|
23
|
-
"fjall:costAllocation:environment": "production",
|
|
24
|
-
"fjall:costAllocation:service": "fivetran",
|
|
25
|
-
"fjall:costAllocation:owner": "data"
|
|
26
|
-
}
|
|
27
|
-
}));
|
|
28
|
-
return app;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.FiveTranAppBuilder = FiveTranAppBuilder;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml2ZXRyYW5BcHBCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9maXZldHJhbkFwcEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQWtEO0FBQ2xELGlEQUErQztBQUUvQyxNQUFhLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQWUsRUFBRSxpQkFBMEI7UUFDdEQsTUFBTSxHQUFHLEdBQUcsV0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxNQUFNLFNBQVMsR0FDYixpQkFBaUI7WUFDakIsOEVBQThFLENBQUM7UUFFakYsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLGdCQUFnQixDQUFDLFdBQVcsQ0FDMUIsbUJBQW1CLEVBQ25CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsNkNBQTZDLEVBQzdDLCtCQUErQixFQUMvQixTQUFTLFNBQVMseUNBQXlDLEVBQzNELDZEQUE2RCxFQUM3RCwrQ0FBK0MsQ0FDaEQsQ0FBQztRQUVGLEdBQUcsQ0FBQyxVQUFVLENBQ1osc0JBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLE9BQU8sRUFBRTtZQUN0QyxJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsVUFBVTtnQkFDeEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsV0FBVyxFQUFFLENBQUM7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSixrQ0FBa0MsRUFBRSxZQUFZO2dCQUNoRCw4QkFBOEIsRUFBRSxVQUFVO2dCQUMxQyw0QkFBNEIsRUFBRSxNQUFNO2FBQ3JDO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQXhDRCxnREF3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAsIENvbXB1dGVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL2luZGV4XCI7XG5pbXBvcnQgeyBVc2VyRGF0YSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmV4cG9ydCBjbGFzcyBGaXZlVHJhbkFwcEJ1aWxkZXIge1xuICBzdGF0aWMgYnVpbGQoYXBwTmFtZTogc3RyaW5nLCBmaXZldHJhblB1YmxpY0tleT86IHN0cmluZyk6IEFwcCB7XG4gICAgY29uc3QgYXBwID0gQXBwLmdldEFwcChhcHBOYW1lKTtcblxuICAgIGNvbnN0IHB1YmxpY0tleSA9XG4gICAgICBmaXZldHJhblB1YmxpY0tleSB8fFxuICAgICAgXCJzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUJBUUMuLi4gWU9VUl9GSVZFVFJBTl9TU0hfUFVCTElDX0tFWV9IRVJFXCI7XG5cbiAgICBjb25zdCBmaXZldHJhblVzZXJEYXRhID0gVXNlckRhdGEuZm9yTGludXgoKTtcbiAgICBmaXZldHJhblVzZXJEYXRhLmFkZENvbW1hbmRzKFxuICAgICAgXCJncm91cGFkZCBmaXZldHJhblwiLFxuICAgICAgXCJ1c2VyYWRkIC1tIC1nIGZpdmV0cmFuIGZpdmV0cmFuXCIsXG4gICAgICBcIm1rZGlyIC1wIC9ob21lL2ZpdmV0cmFuLy5zc2hcIixcbiAgICAgIFwiY2hvd24gZml2ZXRyYW46Zml2ZXRyYW4gL2hvbWUvZml2ZXRyYW4vLnNzaFwiLFxuICAgICAgXCJjaG1vZCA3MDAgL2hvbWUvZml2ZXRyYW4vLnNzaFwiLFxuICAgICAgYGVjaG8gXCIke3B1YmxpY0tleX1cIiA+IC9ob21lL2ZpdmV0cmFuLy5zc2gvYXV0aG9yaXplZF9rZXlzYCxcbiAgICAgIFwiY2hvd24gZml2ZXRyYW46Zml2ZXRyYW4gL2hvbWUvZml2ZXRyYW4vLnNzaC9hdXRob3JpemVkX2tleXNcIixcbiAgICAgIFwiY2htb2QgNjAwIC9ob21lL2ZpdmV0cmFuLy5zc2gvYXV0aG9yaXplZF9rZXlzXCJcbiAgICApO1xuXG4gICAgYXBwLmFkZENvbXB1dGUoXG4gICAgICBDb21wdXRlRmFjdG9yeS5idWlsZChgJHthcHBOYW1lfVByb3h5YCwge1xuICAgICAgICB0eXBlOiBcImVjMlwiLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBpbnN0YW5jZVR5cGU6IFwidDMubWljcm9cIixcbiAgICAgICAgICBlbmFibGVTU0g6IHRydWUsXG4gICAgICAgICAgdXNlckRhdGE6IGZpdmV0cmFuVXNlckRhdGEsXG4gICAgICAgICAgbWluQ2FwYWNpdHk6IDEsXG4gICAgICAgICAgbWF4Q2FwYWNpdHk6IDFcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IFwiZml2ZXRyYW5cIixcbiAgICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IFwiZGF0YVwiXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Stack, StackProps } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
export interface ManagedAccountStackSetProps extends StackProps {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* A StackSet-compatible version of ManagedAccount that uses CloudFormation parameters
|
|
7
|
-
* for accountId and region instead of hardcoded values.
|
|
8
|
-
*/
|
|
9
|
-
export declare class ManagedAccountStackSet extends Stack {
|
|
10
|
-
constructor(scope: Construct, id: string, props?: ManagedAccountStackSetProps);
|
|
11
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ManagedAccountStackSet = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const managedAccount_1 = require("./managedAccount");
|
|
6
|
-
/**
|
|
7
|
-
* A StackSet-compatible version of ManagedAccount that uses CloudFormation parameters
|
|
8
|
-
* for accountId and region instead of hardcoded values.
|
|
9
|
-
*/
|
|
10
|
-
class ManagedAccountStackSet extends aws_cdk_lib_1.Stack {
|
|
11
|
-
constructor(scope, id, props) {
|
|
12
|
-
super(scope, id, props);
|
|
13
|
-
// Create parameters that will be populated by StackSet
|
|
14
|
-
const accountIdParam = new aws_cdk_lib_1.CfnParameter(this, "AccountId", {
|
|
15
|
-
type: "String",
|
|
16
|
-
description: "The AWS Account ID where this stack is being deployed",
|
|
17
|
-
default: this.account
|
|
18
|
-
});
|
|
19
|
-
const regionParam = new aws_cdk_lib_1.CfnParameter(this, "Region", {
|
|
20
|
-
type: "String",
|
|
21
|
-
description: "The AWS Region where this stack is being deployed",
|
|
22
|
-
default: this.region
|
|
23
|
-
});
|
|
24
|
-
// Create the ManagedAccount resources using parameter values
|
|
25
|
-
const managedAccount = new managedAccount_1.ManagedAccount(this, "ManagedAccountResources", {
|
|
26
|
-
accountId: accountIdParam.valueAsString,
|
|
27
|
-
region: regionParam.valueAsString,
|
|
28
|
-
env: {
|
|
29
|
-
account: accountIdParam.valueAsString,
|
|
30
|
-
region: regionParam.valueAsString
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.ManagedAccountStackSet = ManagedAccountStackSet;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZEFjY291bnRTdGFja1NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZEFjY291bnRTdGFja1NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBOEQ7QUFFOUQscURBQWtEO0FBTWxEOzs7R0FHRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsbUJBQUs7SUFDL0MsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsdURBQXVEO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLElBQUksMEJBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3pELElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLHVEQUF1RDtZQUNwRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkQsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsbURBQW1EO1lBQ2hFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQUM7UUFFSCw2REFBNkQ7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN6RSxTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWE7WUFDdkMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxhQUFhO1lBQ2pDLEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsY0FBYyxDQUFDLGFBQWE7Z0JBQ3JDLE1BQU0sRUFBRSxXQUFXLENBQUMsYUFBYTthQUNsQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9CRCx3REErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5QYXJhbWV0ZXIsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWFuYWdlZEFjY291bnQgfSBmcm9tIFwiLi9tYW5hZ2VkQWNjb3VudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRBY2NvdW50U3RhY2tTZXRQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICAvLyBBZGRpdGlvbmFsIHByb3BzIGlmIG5lZWRlZFxufVxuXG4vKipcbiAqIEEgU3RhY2tTZXQtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIE1hbmFnZWRBY2NvdW50IHRoYXQgdXNlcyBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzXG4gKiBmb3IgYWNjb3VudElkIGFuZCByZWdpb24gaW5zdGVhZCBvZiBoYXJkY29kZWQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZEFjY291bnRTdGFja1NldCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogTWFuYWdlZEFjY291bnRTdGFja1NldFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8gQ3JlYXRlIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBieSBTdGFja1NldFxuICAgIGNvbnN0IGFjY291bnRJZFBhcmFtID0gbmV3IENmblBhcmFtZXRlcih0aGlzLCBcIkFjY291bnRJZFwiLCB7XG4gICAgICB0eXBlOiBcIlN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIEFXUyBBY2NvdW50IElEIHdoZXJlIHRoaXMgc3RhY2sgaXMgYmVpbmcgZGVwbG95ZWRcIixcbiAgICAgIGRlZmF1bHQ6IHRoaXMuYWNjb3VudFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVnaW9uUGFyYW0gPSBuZXcgQ2ZuUGFyYW1ldGVyKHRoaXMsIFwiUmVnaW9uXCIsIHtcbiAgICAgIHR5cGU6IFwiU3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgQVdTIFJlZ2lvbiB3aGVyZSB0aGlzIHN0YWNrIGlzIGJlaW5nIGRlcGxveWVkXCIsXG4gICAgICBkZWZhdWx0OiB0aGlzLnJlZ2lvblxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBNYW5hZ2VkQWNjb3VudCByZXNvdXJjZXMgdXNpbmcgcGFyYW1ldGVyIHZhbHVlc1xuICAgIGNvbnN0IG1hbmFnZWRBY2NvdW50ID0gbmV3IE1hbmFnZWRBY2NvdW50KHRoaXMsIFwiTWFuYWdlZEFjY291bnRSZXNvdXJjZXNcIiwge1xuICAgICAgYWNjb3VudElkOiBhY2NvdW50SWRQYXJhbS52YWx1ZUFzU3RyaW5nLFxuICAgICAgcmVnaW9uOiByZWdpb25QYXJhbS52YWx1ZUFzU3RyaW5nLFxuICAgICAgZW52OiB7XG4gICAgICAgIGFjY291bnQ6IGFjY291bnRJZFBhcmFtLnZhbHVlQXNTdHJpbmcsXG4gICAgICAgIHJlZ2lvbjogcmVnaW9uUGFyYW0udmFsdWVBc1N0cmluZ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Stack, StackProps } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
export interface ManagedPlatformStackSetProps extends StackProps {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* A StackSet-compatible version of ManagedPlatform that uses CloudFormation parameters
|
|
7
|
-
* for accountId and region.
|
|
8
|
-
*
|
|
9
|
-
* Note: This creates IPAM infrastructure but not the individual account pools,
|
|
10
|
-
* as those require concrete account names at synthesis time. The pools should
|
|
11
|
-
* be created separately after the organization accounts are known.
|
|
12
|
-
*
|
|
13
|
-
* This is designed to be deployed ONLY to the platform account.
|
|
14
|
-
*/
|
|
15
|
-
export declare class ManagedPlatformStackSet extends Stack {
|
|
16
|
-
constructor(scope: Construct, id: string, props?: ManagedPlatformStackSetProps);
|
|
17
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ManagedPlatformStackSet = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const managedAccount_1 = require("./managedAccount");
|
|
6
|
-
const ipam_1 = require("../../config/aws/ipam");
|
|
7
|
-
/**
|
|
8
|
-
* A StackSet-compatible version of ManagedPlatform that uses CloudFormation parameters
|
|
9
|
-
* for accountId and region.
|
|
10
|
-
*
|
|
11
|
-
* Note: This creates IPAM infrastructure but not the individual account pools,
|
|
12
|
-
* as those require concrete account names at synthesis time. The pools should
|
|
13
|
-
* be created separately after the organization accounts are known.
|
|
14
|
-
*
|
|
15
|
-
* This is designed to be deployed ONLY to the platform account.
|
|
16
|
-
*/
|
|
17
|
-
class ManagedPlatformStackSet extends aws_cdk_lib_1.Stack {
|
|
18
|
-
constructor(scope, id, props) {
|
|
19
|
-
super(scope, id, props);
|
|
20
|
-
// Create parameters that will be populated by StackSet
|
|
21
|
-
const accountIdParam = new aws_cdk_lib_1.CfnParameter(this, "AccountId", {
|
|
22
|
-
type: "String",
|
|
23
|
-
description: "The AWS Account ID where this stack is being deployed",
|
|
24
|
-
default: this.account
|
|
25
|
-
});
|
|
26
|
-
const regionParam = new aws_cdk_lib_1.CfnParameter(this, "Region", {
|
|
27
|
-
type: "String",
|
|
28
|
-
description: "The AWS Region where this stack is being deployed",
|
|
29
|
-
default: this.region
|
|
30
|
-
});
|
|
31
|
-
// First, deploy the base ManagedAccount resources
|
|
32
|
-
const managedAccount = new managedAccount_1.ManagedAccount(this, "ManagedAccountResources", {
|
|
33
|
-
accountId: accountIdParam.valueAsString,
|
|
34
|
-
region: regionParam.valueAsString,
|
|
35
|
-
env: {
|
|
36
|
-
account: accountIdParam.valueAsString,
|
|
37
|
-
region: regionParam.valueAsString
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
// Create IPAM infrastructure (without pools)
|
|
41
|
-
const ipam = new ipam_1.Ipam(this, "Ipam");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.ManagedPlatformStackSet = ManagedPlatformStackSet;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL21hbmFnZWRQbGF0Zm9ybVN0YWNrU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE4RDtBQUU5RCxxREFBa0Q7QUFDbEQsZ0RBQTZDO0FBTTdDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsbUJBQUs7SUFDaEQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBb0M7UUFFcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsdURBQXVEO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLElBQUksMEJBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3pELElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLHVEQUF1RDtZQUNwRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkQsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsbURBQW1EO1lBQ2hFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQUM7UUFFSCxrREFBa0Q7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN6RSxTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWE7WUFDdkMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxhQUFhO1lBQ2pDLEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsY0FBYyxDQUFDLGFBQWE7Z0JBQ3JDLE1BQU0sRUFBRSxXQUFXLENBQUMsYUFBYTthQUNsQztTQUNGLENBQUMsQ0FBQztRQUVILDZDQUE2QztRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBbENELDBEQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblBhcmFtZXRlciwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkQWNjb3VudCB9IGZyb20gXCIuL21hbmFnZWRBY2NvdW50XCI7XG5pbXBvcnQgeyBJcGFtIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaXBhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRQbGF0Zm9ybVN0YWNrU2V0UHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgLy8gQWRkaXRpb25hbCBwcm9wcyBpZiBuZWVkZWRcbn1cblxuLyoqXG4gKiBBIFN0YWNrU2V0LWNvbXBhdGlibGUgdmVyc2lvbiBvZiBNYW5hZ2VkUGxhdGZvcm0gdGhhdCB1c2VzIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnNcbiAqIGZvciBhY2NvdW50SWQgYW5kIHJlZ2lvbi5cbiAqXG4gKiBOb3RlOiBUaGlzIGNyZWF0ZXMgSVBBTSBpbmZyYXN0cnVjdHVyZSBidXQgbm90IHRoZSBpbmRpdmlkdWFsIGFjY291bnQgcG9vbHMsXG4gKiBhcyB0aG9zZSByZXF1aXJlIGNvbmNyZXRlIGFjY291bnQgbmFtZXMgYXQgc3ludGhlc2lzIHRpbWUuIFRoZSBwb29scyBzaG91bGRcbiAqIGJlIGNyZWF0ZWQgc2VwYXJhdGVseSBhZnRlciB0aGUgb3JnYW5pemF0aW9uIGFjY291bnRzIGFyZSBrbm93bi5cbiAqXG4gKiBUaGlzIGlzIGRlc2lnbmVkIHRvIGJlIGRlcGxveWVkIE9OTFkgdG8gdGhlIHBsYXRmb3JtIGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkUGxhdGZvcm1TdGFja1NldCBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogTWFuYWdlZFBsYXRmb3JtU3RhY2tTZXRQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIENyZWF0ZSBwYXJhbWV0ZXJzIHRoYXQgd2lsbCBiZSBwb3B1bGF0ZWQgYnkgU3RhY2tTZXRcbiAgICBjb25zdCBhY2NvdW50SWRQYXJhbSA9IG5ldyBDZm5QYXJhbWV0ZXIodGhpcywgXCJBY2NvdW50SWRcIiwge1xuICAgICAgdHlwZTogXCJTdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBBV1MgQWNjb3VudCBJRCB3aGVyZSB0aGlzIHN0YWNrIGlzIGJlaW5nIGRlcGxveWVkXCIsXG4gICAgICBkZWZhdWx0OiB0aGlzLmFjY291bnRcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZ2lvblBhcmFtID0gbmV3IENmblBhcmFtZXRlcih0aGlzLCBcIlJlZ2lvblwiLCB7XG4gICAgICB0eXBlOiBcIlN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIEFXUyBSZWdpb24gd2hlcmUgdGhpcyBzdGFjayBpcyBiZWluZyBkZXBsb3llZFwiLFxuICAgICAgZGVmYXVsdDogdGhpcy5yZWdpb25cbiAgICB9KTtcblxuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIGJhc2UgTWFuYWdlZEFjY291bnQgcmVzb3VyY2VzXG4gICAgY29uc3QgbWFuYWdlZEFjY291bnQgPSBuZXcgTWFuYWdlZEFjY291bnQodGhpcywgXCJNYW5hZ2VkQWNjb3VudFJlc291cmNlc1wiLCB7XG4gICAgICBhY2NvdW50SWQ6IGFjY291bnRJZFBhcmFtLnZhbHVlQXNTdHJpbmcsXG4gICAgICByZWdpb246IHJlZ2lvblBhcmFtLnZhbHVlQXNTdHJpbmcsXG4gICAgICBlbnY6IHtcbiAgICAgICAgYWNjb3VudDogYWNjb3VudElkUGFyYW0udmFsdWVBc1N0cmluZyxcbiAgICAgICAgcmVnaW9uOiByZWdpb25QYXJhbS52YWx1ZUFzU3RyaW5nXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgSVBBTSBpbmZyYXN0cnVjdHVyZSAod2l0aG91dCBwb29scylcbiAgICBjb25zdCBpcGFtID0gbmV3IElwYW0odGhpcywgXCJJcGFtXCIpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
export declare class AssignmentNew extends Construct {
|
|
3
|
-
constructor(scope: Construct, id: string, props: {
|
|
4
|
-
instanceArn: string;
|
|
5
|
-
permissionSetArn: string;
|
|
6
|
-
principalType: string;
|
|
7
|
-
principalId: string;
|
|
8
|
-
targetType: string;
|
|
9
|
-
targetId: string;
|
|
10
|
-
});
|
|
11
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AssignmentNew = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
7
|
-
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
8
|
-
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
9
|
-
const constructs_1 = require("constructs");
|
|
10
|
-
const path_1 = require("path");
|
|
11
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
12
|
-
class AssignmentNew extends constructs_1.Construct {
|
|
13
|
-
constructor(scope, id, props) {
|
|
14
|
-
super(scope, id);
|
|
15
|
-
// 1. Create a dedicated IAM role with the necessary permissions
|
|
16
|
-
const lambdaRole = new aws_iam_1.Role(this, `${id}LambdaRole`, {
|
|
17
|
-
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
|
18
|
-
description: `Role for AWS Identity Center Assignment for ${id}`,
|
|
19
|
-
inlinePolicies: {
|
|
20
|
-
// CloudWatch Logs permissions
|
|
21
|
-
"logs-policy": new aws_iam_1.PolicyDocument({
|
|
22
|
-
statements: [
|
|
23
|
-
new aws_iam_1.PolicyStatement({
|
|
24
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
25
|
-
actions: [
|
|
26
|
-
"logs:CreateLogGroup",
|
|
27
|
-
"logs:CreateLogStream",
|
|
28
|
-
"logs:PutLogEvents"
|
|
29
|
-
],
|
|
30
|
-
resources: ["*"]
|
|
31
|
-
})
|
|
32
|
-
]
|
|
33
|
-
}),
|
|
34
|
-
// SSO Admin permissions - comprehensive permissions for both sso: and sso-admin: namespaces
|
|
35
|
-
"sso-admin-policy": new aws_iam_1.PolicyDocument({
|
|
36
|
-
statements: [
|
|
37
|
-
new aws_iam_1.PolicyStatement({
|
|
38
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
39
|
-
actions: [
|
|
40
|
-
// SSO Admin permissions (using both prefixes to ensure compatibility)
|
|
41
|
-
"sso:*",
|
|
42
|
-
"sso-admin:CreateAccountAssignment",
|
|
43
|
-
"sso-admin:DeleteAccountAssignment",
|
|
44
|
-
"sso-admin:ListAccountAssignments",
|
|
45
|
-
"sso-admin:DescribeAccountAssignmentCreationStatus",
|
|
46
|
-
"sso-admin:DescribeAccountAssignmentDeletionStatus",
|
|
47
|
-
// Original SSO permissions (may still be needed)
|
|
48
|
-
"sso:CreateAccountAssignment",
|
|
49
|
-
"sso:UpdateAccountAssignment",
|
|
50
|
-
"sso:DeleteAccountAssignment",
|
|
51
|
-
"sso:ListAccountAssignments",
|
|
52
|
-
"sso:DescribeAccountAssignmentCreationStatus",
|
|
53
|
-
"sso:DescribeAccountAssignmentDeletionStatus",
|
|
54
|
-
// Identity Store permissions
|
|
55
|
-
"identitystore:DescribeGroup",
|
|
56
|
-
"identitystore:ListGroupMemberships",
|
|
57
|
-
"identitystore:ListUsers",
|
|
58
|
-
"identitystore:ListGroups",
|
|
59
|
-
// Organizations permissions that may be needed for cross-account operations
|
|
60
|
-
"organizations:DescribeAccount",
|
|
61
|
-
"organizations:ListAccounts"
|
|
62
|
-
],
|
|
63
|
-
resources: ["*"]
|
|
64
|
-
})
|
|
65
|
-
]
|
|
66
|
-
})
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
// 2. Create the Lambda function with the dedicated role
|
|
70
|
-
const lambda = new aws_lambda_1.Function(this, `${id}Lambda`, {
|
|
71
|
-
runtime: aws_lambda_1.Runtime.NODEJS_18_X,
|
|
72
|
-
code: aws_lambda_1.Code.fromAsset((0, path_1.join)(__dirname, "lambda")),
|
|
73
|
-
handler: "assignmentHandler.handler",
|
|
74
|
-
role: lambdaRole,
|
|
75
|
-
timeout: aws_cdk_lib_1.Duration.minutes(5),
|
|
76
|
-
description: `AWS Identity Center Assignment Handler for ${id}`,
|
|
77
|
-
logRetention: aws_logs_1.RetentionDays.ONE_WEEK,
|
|
78
|
-
memorySize: 256 // Increase memory for better performance
|
|
79
|
-
});
|
|
80
|
-
// 3. Create a custom resource provider
|
|
81
|
-
const provider = new custom_resources_1.Provider(this, `${id}Provider`, {
|
|
82
|
-
onEventHandler: lambda,
|
|
83
|
-
logRetention: aws_logs_1.RetentionDays.ONE_WEEK
|
|
84
|
-
});
|
|
85
|
-
// 4. Create the custom resource
|
|
86
|
-
new aws_cdk_lib_2.CustomResource(this, `${id}Resource`, {
|
|
87
|
-
serviceToken: provider.serviceToken,
|
|
88
|
-
properties: {
|
|
89
|
-
InstanceArn: props.instanceArn,
|
|
90
|
-
PermissionSetArn: props.permissionSetArn,
|
|
91
|
-
PrincipalType: props.principalType,
|
|
92
|
-
PrincipalId: props.principalId,
|
|
93
|
-
TargetType: props.targetType,
|
|
94
|
-
TargetId: props.targetId,
|
|
95
|
-
// Add a timestamp to ensure updates are processed
|
|
96
|
-
Timestamp: new Date().toISOString()
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.AssignmentNew = AssignmentNew;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudE5ldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hc3NpZ25tZW50TmV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1QztBQUN2QyxpREFNNkI7QUFDN0IsdURBQWlFO0FBQ2pFLG1EQUFxRDtBQUNyRCxtRUFBd0Q7QUFDeEQsMkNBQXVDO0FBQ3ZDLCtCQUE0QjtBQUM1Qiw2Q0FBNkM7QUFFN0MsTUFBYSxhQUFjLFNBQVEsc0JBQVM7SUFDMUMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FPQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsZ0VBQWdFO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFO1lBQ25ELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFO1lBQ2hFLGNBQWMsRUFBRTtnQkFDZCw4QkFBOEI7Z0JBQzlCLGFBQWEsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQ2hDLFVBQVUsRUFBRTt3QkFDVixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7NEJBQ3BCLE9BQU8sRUFBRTtnQ0FDUCxxQkFBcUI7Z0NBQ3JCLHNCQUFzQjtnQ0FDdEIsbUJBQW1COzZCQUNwQjs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7eUJBQ2pCLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQztnQkFDRiw0RkFBNEY7Z0JBQzVGLGtCQUFrQixFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDckMsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFO2dDQUNQLHNFQUFzRTtnQ0FDdEUsT0FBTztnQ0FDUCxtQ0FBbUM7Z0NBQ25DLG1DQUFtQztnQ0FDbkMsa0NBQWtDO2dDQUNsQyxtREFBbUQ7Z0NBQ25ELG1EQUFtRDtnQ0FFbkQsaURBQWlEO2dDQUNqRCw2QkFBNkI7Z0NBQzdCLDZCQUE2QjtnQ0FDN0IsNkJBQTZCO2dDQUM3Qiw0QkFBNEI7Z0NBQzVCLDZDQUE2QztnQ0FDN0MsNkNBQTZDO2dDQUU3Qyw2QkFBNkI7Z0NBQzdCLDZCQUE2QjtnQ0FDN0Isb0NBQW9DO2dDQUNwQyx5QkFBeUI7Z0NBQ3pCLDBCQUEwQjtnQ0FFMUIsNEVBQTRFO2dDQUM1RSwrQkFBK0I7Z0NBQy9CLDRCQUE0Qjs2QkFDN0I7NEJBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILHdEQUF3RDtRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7WUFDL0MsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QixXQUFXLEVBQUUsOENBQThDLEVBQUUsRUFBRTtZQUMvRCxZQUFZLEVBQUUsd0JBQWEsQ0FBQyxRQUFRO1lBQ3BDLFVBQVUsRUFBRSxHQUFHLENBQUMseUNBQXlDO1NBQzFELENBQUMsQ0FBQztRQUVILHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLDJCQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7WUFDbkQsY0FBYyxFQUFFLE1BQU07WUFDdEIsWUFBWSxFQUFFLHdCQUFhLENBQUMsUUFBUTtTQUNyQyxDQUFDLENBQUM7UUFFSCxnQ0FBZ0M7UUFDaEMsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQ3hDLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2dCQUN4QyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7Z0JBQ2xDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUM1QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLGtEQUFrRDtnQkFDbEQsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMUdELHNDQTBHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBFZmZlY3QsXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvZGUsIEZ1bmN0aW9uLCBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50TmV3IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiB7XG4gICAgICBpbnN0YW5jZUFybjogc3RyaW5nO1xuICAgICAgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuICAgICAgcHJpbmNpcGFsVHlwZTogc3RyaW5nO1xuICAgICAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgICAgIHRhcmdldFR5cGU6IHN0cmluZztcbiAgICAgIHRhcmdldElkOiBzdHJpbmc7XG4gICAgfVxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gMS4gQ3JlYXRlIGEgZGVkaWNhdGVkIElBTSByb2xlIHdpdGggdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9uc1xuICAgIGNvbnN0IGxhbWJkYVJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgJHtpZH1MYW1iZGFSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgZGVzY3JpcHRpb246IGBSb2xlIGZvciBBV1MgSWRlbnRpdHkgQ2VudGVyIEFzc2lnbm1lbnQgZm9yICR7aWR9YCxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIC8vIENsb3VkV2F0Y2ggTG9ncyBwZXJtaXNzaW9uc1xuICAgICAgICBcImxvZ3MtcG9saWN5XCI6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ1N0cmVhbVwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpQdXRMb2dFdmVudHNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gU1NPIEFkbWluIHBlcm1pc3Npb25zIC0gY29tcHJlaGVuc2l2ZSBwZXJtaXNzaW9ucyBmb3IgYm90aCBzc286IGFuZCBzc28tYWRtaW46IG5hbWVzcGFjZXNcbiAgICAgICAgXCJzc28tYWRtaW4tcG9saWN5XCI6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgLy8gU1NPIEFkbWluIHBlcm1pc3Npb25zICh1c2luZyBib3RoIHByZWZpeGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5KVxuICAgICAgICAgICAgICAgIFwic3NvOipcIixcbiAgICAgICAgICAgICAgICBcInNzby1hZG1pbjpDcmVhdGVBY2NvdW50QXNzaWdubWVudFwiLFxuICAgICAgICAgICAgICAgIFwic3NvLWFkbWluOkRlbGV0ZUFjY291bnRBc3NpZ25tZW50XCIsXG4gICAgICAgICAgICAgICAgXCJzc28tYWRtaW46TGlzdEFjY291bnRBc3NpZ25tZW50c1wiLFxuICAgICAgICAgICAgICAgIFwic3NvLWFkbWluOkRlc2NyaWJlQWNjb3VudEFzc2lnbm1lbnRDcmVhdGlvblN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIFwic3NvLWFkbWluOkRlc2NyaWJlQWNjb3VudEFzc2lnbm1lbnREZWxldGlvblN0YXR1c1wiLFxuXG4gICAgICAgICAgICAgICAgLy8gT3JpZ2luYWwgU1NPIHBlcm1pc3Npb25zIChtYXkgc3RpbGwgYmUgbmVlZGVkKVxuICAgICAgICAgICAgICAgIFwic3NvOkNyZWF0ZUFjY291bnRBc3NpZ25tZW50XCIsXG4gICAgICAgICAgICAgICAgXCJzc286VXBkYXRlQWNjb3VudEFzc2lnbm1lbnRcIixcbiAgICAgICAgICAgICAgICBcInNzbzpEZWxldGVBY2NvdW50QXNzaWdubWVudFwiLFxuICAgICAgICAgICAgICAgIFwic3NvOkxpc3RBY2NvdW50QXNzaWdubWVudHNcIixcbiAgICAgICAgICAgICAgICBcInNzbzpEZXNjcmliZUFjY291bnRBc3NpZ25tZW50Q3JlYXRpb25TdGF0dXNcIixcbiAgICAgICAgICAgICAgICBcInNzbzpEZXNjcmliZUFjY291bnRBc3NpZ25tZW50RGVsZXRpb25TdGF0dXNcIixcblxuICAgICAgICAgICAgICAgIC8vIElkZW50aXR5IFN0b3JlIHBlcm1pc3Npb25zXG4gICAgICAgICAgICAgICAgXCJpZGVudGl0eXN0b3JlOkRlc2NyaWJlR3JvdXBcIixcbiAgICAgICAgICAgICAgICBcImlkZW50aXR5c3RvcmU6TGlzdEdyb3VwTWVtYmVyc2hpcHNcIixcbiAgICAgICAgICAgICAgICBcImlkZW50aXR5c3RvcmU6TGlzdFVzZXJzXCIsXG4gICAgICAgICAgICAgICAgXCJpZGVudGl0eXN0b3JlOkxpc3RHcm91cHNcIixcblxuICAgICAgICAgICAgICAgIC8vIE9yZ2FuaXphdGlvbnMgcGVybWlzc2lvbnMgdGhhdCBtYXkgYmUgbmVlZGVkIGZvciBjcm9zcy1hY2NvdW50IG9wZXJhdGlvbnNcbiAgICAgICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVzY3JpYmVBY2NvdW50XCIsXG4gICAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkxpc3RBY2NvdW50c1wiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyAyLiBDcmVhdGUgdGhlIExhbWJkYSBmdW5jdGlvbiB3aXRoIHRoZSBkZWRpY2F0ZWQgcm9sZVxuICAgIGNvbnN0IGxhbWJkYSA9IG5ldyBGdW5jdGlvbih0aGlzLCBgJHtpZH1MYW1iZGFgLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwibGFtYmRhXCIpKSxcbiAgICAgIGhhbmRsZXI6IFwiYXNzaWdubWVudEhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgcm9sZTogbGFtYmRhUm9sZSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBkZXNjcmlwdGlvbjogYEFXUyBJZGVudGl0eSBDZW50ZXIgQXNzaWdubWVudCBIYW5kbGVyIGZvciAke2lkfWAsXG4gICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICBtZW1vcnlTaXplOiAyNTYgLy8gSW5jcmVhc2UgbWVtb3J5IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2VcbiAgICB9KTtcblxuICAgIC8vIDMuIENyZWF0ZSBhIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHRoaXMsIGAke2lkfVByb3ZpZGVyYCwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGxhbWJkYSxcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfV0VFS1xuICAgIH0pO1xuXG4gICAgLy8gNC4gQ3JlYXRlIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgYCR7aWR9UmVzb3VyY2VgLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICBQZXJtaXNzaW9uU2V0QXJuOiBwcm9wcy5wZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICBQcmluY2lwYWxUeXBlOiBwcm9wcy5wcmluY2lwYWxUeXBlLFxuICAgICAgICBQcmluY2lwYWxJZDogcHJvcHMucHJpbmNpcGFsSWQsXG4gICAgICAgIFRhcmdldFR5cGU6IHByb3BzLnRhcmdldFR5cGUsXG4gICAgICAgIFRhcmdldElkOiBwcm9wcy50YXJnZXRJZCxcbiAgICAgICAgLy8gQWRkIGEgdGltZXN0YW1wIHRvIGVuc3VyZSB1cGRhdGVzIGFyZSBwcm9jZXNzZWRcbiAgICAgICAgVGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
interface CloudFormationEvent {
|
|
2
|
-
RequestType: "Create" | "Update" | "Delete";
|
|
3
|
-
ResponseURL: string;
|
|
4
|
-
StackId: string;
|
|
5
|
-
RequestId: string;
|
|
6
|
-
ResourceType: string;
|
|
7
|
-
LogicalResourceId: string;
|
|
8
|
-
PhysicalResourceId?: string;
|
|
9
|
-
ResourceProperties: {
|
|
10
|
-
ServiceToken: string;
|
|
11
|
-
InstanceArn: string;
|
|
12
|
-
PermissionSetArn: string;
|
|
13
|
-
PrincipalType: string;
|
|
14
|
-
PrincipalId: string;
|
|
15
|
-
TargetType: string;
|
|
16
|
-
TargetId: string;
|
|
17
|
-
[key: string]: any;
|
|
18
|
-
};
|
|
19
|
-
OldResourceProperties?: {
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export declare const handler: (event: CloudFormationEvent) => Promise<any>;
|
|
24
|
-
export {};
|