raindancers-network
Version:
Extensions to the ec2.Vpc Constructs
59 lines • 8.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CloudWanCorePolicyTable = void 0;
const path = require("path");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const cdk = require("aws-cdk-lib");
const constructs = require("constructs");
/**
* Create a DynamoDB table and associated lambdas to contain the objects that are contained in the Cloudwan Core Network.
* Do not call this class directly, it is called by CoreNetwork
*/
class CloudWanCorePolicyTable extends constructs.Construct {
constructor(scope, id, props) {
super(scope, id);
const policyTable = new aws_cdk_lib_1.aws_dynamodb.Table(this, 'PolicyTable', {
tableName: `${props.coreName}corenetworkpolicy`,
partitionKey: {
name: 'Name',
type: aws_cdk_lib_1.aws_dynamodb.AttributeType.STRING,
},
sortKey: {
name: 'Type',
type: aws_cdk_lib_1.aws_dynamodb.AttributeType.STRING,
},
billingMode: aws_cdk_lib_1.aws_dynamodb.BillingMode.PAY_PER_REQUEST,
tableClass: aws_cdk_lib_1.aws_dynamodb.TableClass.STANDARD_INFREQUENT_ACCESS,
removalPolicy: cdk.RemovalPolicy.DESTROY,
pointInTimeRecovery: true,
});
// Create a backup table unless it has been deliberately opted-out
// t
if (!(props.noTableBackup ?? true === true)) {
// create a back up for the Policy Table.
aws_cdk_lib_1.aws_backup.BackupPlan.dailyWeeklyMonthly5YearRetention(this, 'policytablebackup').addSelection('Selection', {
resources: [
aws_cdk_lib_1.aws_backup.BackupResource.fromDynamoDbTable(policyTable),
],
});
}
;
// create the lambda
const onEvent = new aws_cdk_lib_1.aws_lambda.Function(this, 'putItems', {
environment: { policyTableName: policyTable.tableName },
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'putitems.on_event',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/cloudwan')),
});
// let the lambda have access to the dynamo table.
policyTable.grantFullAccess(onEvent);
const updateProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'UpdateProvider', {
onEventHandler: onEvent,
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.SEVEN_YEARS,
});
this.policyTable = policyTable;
this.serviceToken = updateProvider.serviceToken;
}
}
exports.CloudWanCorePolicyTable = CloudWanCorePolicyTable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRXYW5Qb2xpY3lUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbG91ZHdhbi9jbG91ZFdhblBvbGljeVRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3Qiw2Q0FPcUI7QUFFckIsbUNBQW1DO0FBQ25DLHlDQUF5QztBQWdCekM7OztHQUdHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUsvRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFHakIsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3hELFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLG1CQUFtQjtZQUMvQyxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLDBCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU07YUFDbEM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLDBCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU07YUFDbEM7WUFDRCxXQUFXLEVBQUUsMEJBQU0sQ0FBQyxXQUFXLENBQUMsZUFBZTtZQUMvQyxVQUFVLEVBQUUsMEJBQU0sQ0FBQyxVQUFVLENBQUMsMEJBQTBCO1lBQ3hELGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87WUFDeEMsbUJBQW1CLEVBQUUsSUFBSTtTQUUxQixDQUFDLENBQUM7UUFFSCxrRUFBa0U7UUFDbEUsSUFBSTtRQUNKLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQzNDLHlDQUF5QztZQUN6Qyx3QkFBTSxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxZQUFZLENBQ3hGLFdBQVcsRUFDWDtnQkFDRSxTQUFTLEVBQUU7b0JBQ1Qsd0JBQU0sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDO2lCQUNyRDthQUNGLENBQ0YsQ0FBQztTQUNIO1FBQUEsQ0FBQztRQUVGLG9CQUFvQjtRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsV0FBVyxFQUFFLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFDdkQsT0FBTyxFQUFFLHdCQUFVLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDdEMsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixJQUFJLEVBQUUsd0JBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLENBQUM7U0FDL0UsQ0FBQyxDQUFDO1FBR0gsa0RBQWtEO1FBQ2xELFdBQVcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsTUFBTSxjQUFjLEdBQUcsSUFBSSw4QkFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDN0QsY0FBYyxFQUFFLE9BQU87WUFDdkIsWUFBWSxFQUFFLHNCQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7U0FDN0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQTVERCwwREE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgYXdzX2R5bmFtb2RiIGFzIGR5bmFtbyxcbiAgY3VzdG9tX3Jlc291cmNlcyBhcyBjcixcbiAgYXdzX2xvZ3MgYXMgbG9ncyxcbiAgYXdzX2xhbWJkYSxcbiAgYXdzX2JhY2t1cCBhcyBiYWNrdXAsXG59XG4gIGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqIFByb3BlcnRpZXMgZm9yIHRoZSBDcmVhdGVpbmcgdGhlIENvcmVXYW4gUG9saWN5IFRhYmxlKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5VGFibGVQcm9wcyB7XG4gIC8qKlxuXHQgKiB0aGUgbmFtZSBvZiB0aGUgY29yZVxuXHQgKi9cbiAgY29yZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBCYWNrdXAgVmF1bHQgaXMgY3JlYXRlZCwgZm9yIHRoZSBkeW5hbW8gdGFibGUuXG4gICAqIEhvd2V2ZXIgZm9yIExhYi90ZXN0IHNpdHVhdGlvbnMgdGhhdCByZXN1bHRzIGluIGxlZnQgb3ZlciByZXNvdXJjZXMgaW4gYSBkZXN0cm95XG4gICAqL1xuICBub1RhYmxlQmFja3VwPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBEeW5hbW9EQiB0YWJsZSBhbmQgYXNzb2NpYXRlZCBsYW1iZGFzIHRvIGNvbnRhaW4gdGhlIG9iamVjdHMgdGhhdCBhcmUgY29udGFpbmVkIGluIHRoZSBDbG91ZHdhbiBDb3JlIE5ldHdvcmsuXG4gKiBEbyBub3QgY2FsbCB0aGlzIGNsYXNzIGRpcmVjdGx5LCBpdCBpcyBjYWxsZWQgYnkgQ29yZU5ldHdvcmtcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkV2FuQ29yZVBvbGljeVRhYmxlIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlVG9rZW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeVRhYmxlOiBkeW5hbW8uVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUG9saWN5VGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cblxuICAgIGNvbnN0IHBvbGljeVRhYmxlID0gbmV3IGR5bmFtby5UYWJsZSh0aGlzLCAnUG9saWN5VGFibGUnLCB7XG4gICAgICB0YWJsZU5hbWU6IGAke3Byb3BzLmNvcmVOYW1lfWNvcmVuZXR3b3JrcG9saWN5YCxcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiAnTmFtZScsXG4gICAgICAgIHR5cGU6IGR5bmFtby5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBzb3J0S2V5OiB7XG4gICAgICAgIG5hbWU6ICdUeXBlJyxcbiAgICAgICAgdHlwZTogZHluYW1vLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW8uQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgICAgdGFibGVDbGFzczogZHluYW1vLlRhYmxlQ2xhc3MuU1RBTkRBUkRfSU5GUkVRVUVOVF9BQ0NFU1MsXG4gICAgICByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeTogdHJ1ZSxcblxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgYmFja3VwIHRhYmxlIHVubGVzcyBpdCBoYXMgYmVlbiBkZWxpYmVyYXRlbHkgb3B0ZWQtb3V0XG4gICAgLy8gdFxuICAgIGlmICghKHByb3BzLm5vVGFibGVCYWNrdXAgPz8gdHJ1ZSA9PT0gdHJ1ZSkpIHtcbiAgICAgIC8vIGNyZWF0ZSBhIGJhY2sgdXAgZm9yIHRoZSBQb2xpY3kgVGFibGUuXG4gICAgICBiYWNrdXAuQmFja3VwUGxhbi5kYWlseVdlZWtseU1vbnRobHk1WWVhclJldGVudGlvbih0aGlzLCAncG9saWN5dGFibGViYWNrdXAnKS5hZGRTZWxlY3Rpb24oXG4gICAgICAgICdTZWxlY3Rpb24nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBiYWNrdXAuQmFja3VwUmVzb3VyY2UuZnJvbUR5bmFtb0RiVGFibGUocG9saWN5VGFibGUpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBjcmVhdGUgdGhlIGxhbWJkYVxuICAgIGNvbnN0IG9uRXZlbnQgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCAncHV0SXRlbXMnLCB7XG4gICAgICBlbnZpcm9ubWVudDogeyBwb2xpY3lUYWJsZU5hbWU6IHBvbGljeVRhYmxlLnRhYmxlTmFtZSB9LFxuICAgICAgcnVudGltZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzksXG4gICAgICBoYW5kbGVyOiAncHV0aXRlbXMub25fZXZlbnQnLFxuICAgICAgY29kZTogYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vbGFtYmRhL2Nsb3Vkd2FuJykpLFxuICAgIH0pO1xuXG5cbiAgICAvLyBsZXQgdGhlIGxhbWJkYSBoYXZlIGFjY2VzcyB0byB0aGUgZHluYW1vIHRhYmxlLlxuICAgIHBvbGljeVRhYmxlLmdyYW50RnVsbEFjY2VzcyhvbkV2ZW50KTtcblxuICAgIGNvbnN0IHVwZGF0ZVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdVcGRhdGVQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBvbkV2ZW50LFxuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuU0VWRU5fWUVBUlMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBvbGljeVRhYmxlID0gcG9saWN5VGFibGU7XG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB1cGRhdGVQcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cbn0iXX0=