tm-cdk-constructs 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # CDK construct lib
2
+
3
+ Welcome to Toumoro's AWS Service Wrapper CDK Construct Library! This library is designed to make it easy and efficient to deploy and manage AWS services within your CDK projects. Whether you're provisioning infrastructure for a simple web application or orchestrating a complex cloud-native architecture, this library aims to streamline your development process by providing high-level constructs for common AWS services.
4
+
5
+ ## Features
6
+ - Simplified Service Provisioning: Easily create and configure AWS services using intuitive CDK constructs.
7
+ - Best Practices Built-In: Leverage pre-configured settings and defaults based on AWS best practices to ensure reliable and secure deployments.
8
+ - Modular and Extensible: Compose your infrastructure using modular constructs, allowing for flexibility and reusability across projects.
9
+
10
+ # Contributing to CDK Construct Toumoro
11
+ [Contributing](CONTRIBUTING.md)
12
+
13
+ # Examples
14
+ [Examples](examples/README.md)
15
+
16
+ # Documentation API
17
+ [API](API.md)
18
+
19
+ # Developpement Guide
20
+
21
+ [AWS CDK Design Guidelines](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)
22
+
23
+ ## Naming Conventions
24
+
25
+ 1. *Prefixes*:
26
+ - *Cfn* for CloudFormation resources.
27
+ - *Fn* for constructs generating CloudFormation functions.
28
+ - *As* for abstract classes.
29
+ - *I* for interfaces.
30
+ - *Vpc* for constructs related to Virtual Private Cloud.
31
+ - *Lambda* for constructs related to AWS Lambda.
32
+ - Example: CfnStack, FnSub, Aspects, IVpc, VpcNetwork, LambdaFunction.
33
+ 2. *Construct Names*:
34
+ - Use descriptive names that reflect the purpose of the construct.
35
+ - CamelCase for multi-word names.
36
+ - Avoid abbreviations unless they are widely understood.
37
+ - Example: VpcBasic, RdsAuroraMysqlServerLess.
38
+ 3. *Property Names*:
39
+ - Follow AWS resource naming conventions where applicable.
40
+ - Use camelCase for property names.
41
+ - Use clear and concise names that reflect the purpose of the property.
42
+ - Example: bucketName, vpcId, functionName.
43
+ 4. *Method Names*:
44
+ - Use verbs or verb phrases to describe actions performed by methods.
45
+ - Use camelCase.
46
+ - Example: addBucketPolicy, createVpc, invokeLambda.
47
+ 5. *Interface Names*:
48
+ - Interfaces begging uppercase I are reserverd to AWS CDK library.
49
+ - Start with an prefix TmI
50
+ - Use clear and descriptive names.
51
+ - Example: TmIInstance, TmISecurityGroup, TmIVpc.
52
+ 6. *Module Names*:
53
+ - Use lowercase with hyphens for separating words.
54
+ - Be descriptive but concise.
55
+ - Follow a hierarchy if necessary, e.g., aws-cdk.aws_s3 for S3-related constructs.
56
+ - Example: aws-cdk.aws_s3, aws-cdk.aws_ec2, aws-cdk.aws_lambda.
57
+ 7. *Variable Names*:
58
+ - Use descriptive names.
59
+ - CamelCase for multi-word names.
60
+ - Keep variable names concise but meaningful.
61
+ - Example: instanceCount, subnetIds, roleArn.
62
+ 8. *Enum and Constant Names*:
63
+ - Use uppercase for constants.
64
+ - CamelCase for multi-word names.
65
+ - Be descriptive about the purpose of the constant or enum.
66
+ - Example: MAX_RETRIES, HTTP_STATUS_CODES, VPC_CONFIG.
67
+ 9. *File Names*:
68
+ - Use lowercase with hyphens for separating words.
69
+ - Reflect the content of the file.
70
+ - Include version numbers if necessary.
71
+ - Example: s3-bucket-stack.ts, vpc-network.ts, lambda-function.ts.
72
+ 10. *Documentation Comments*:
73
+ - Use JSDoc or similar conventions to provide clear documentation for each construct, method, property, etc.
74
+ - Ensure that the documentation is up-to-date and accurately reflects the purpose and usage of the code.
@@ -0,0 +1 @@
1
+ export * from './rds-aurora-mysql-serverless';
@@ -0,0 +1,18 @@
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("./rds-aurora-mysql-serverless"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Jkcy1hdXJvcmEtbXlzcWwtc2VydmVybGVzcyc7Il19
@@ -0,0 +1,17 @@
1
+ import * as rds from 'aws-cdk-lib/aws-rds';
2
+ import { Construct } from 'constructs';
3
+ export interface TmRdsAuroraMysqlServerlessProps extends rds.DatabaseClusterProps {
4
+ /**
5
+ * Enable the creation of a Global Cluster for the RDS cluster.
6
+ */
7
+ readonly enableGlobal?: boolean;
8
+ }
9
+ export declare class TmRdsAuroraMysqlServerless extends rds.DatabaseCluster {
10
+ /**
11
+ * The Aurora Mysql Serverless created by the construct rdsAuroraMysqlServerless.
12
+ */
13
+ /**
14
+ * Represents a class that creates an RDS Aurora MySQL Serverless database cluster.
15
+ */
16
+ constructor(scope: Construct, id: string, props?: TmRdsAuroraMysqlServerlessProps);
17
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TmRdsAuroraMysqlServerless = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk = require("aws-cdk-lib");
7
+ const ec2 = require("aws-cdk-lib/aws-ec2");
8
+ const rds = require("aws-cdk-lib/aws-rds");
9
+ class TmRdsAuroraMysqlServerless extends rds.DatabaseCluster {
10
+ /**
11
+ * The Aurora Mysql Serverless created by the construct rdsAuroraMysqlServerless.
12
+ */
13
+ /**
14
+ * Represents a class that creates an RDS Aurora MySQL Serverless database cluster.
15
+ */
16
+ constructor(scope, id, props) {
17
+ /**
18
+ * The default properties for the RDS Aurora MySQL Serverless database cluster.
19
+ */
20
+ const defaultProps = {
21
+ engine: rds.DatabaseClusterEngine.auroraMysql({
22
+ version: rds.AuroraMysqlEngineVersion.VER_3_05_2,
23
+ }),
24
+ writer: rds.ClusterInstance.serverlessV2('writer', {
25
+ performanceInsightRetention: rds.PerformanceInsightRetention.DEFAULT,
26
+ }),
27
+ credentials: rds.Credentials.fromUsername('admin'),
28
+ // to true in production
29
+ deletionProtection: false,
30
+ storageEncrypted: true,
31
+ monitoringInterval: cdk.Duration.seconds(60),
32
+ vpc: props?.vpc,
33
+ vpcSubnets: {
34
+ subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
35
+ },
36
+ };
37
+ /**
38
+ * The merged properties for the RDS Aurora MySQL Serverless database cluster.
39
+ */
40
+ const mergedProps = { ...defaultProps, ...props };
41
+ /**
42
+ * The RDS Aurora MySQL Serverless database cluster created by the construct.
43
+ */
44
+ super(scope, id, mergedProps);
45
+ if (props?.enableGlobal) {
46
+ new rds.CfnGlobalCluster(this, 'TmGlobalCluster', {
47
+ deletionProtection: false,
48
+ globalClusterIdentifier: 'TmGlobalCluster',
49
+ sourceDbClusterIdentifier: this.clusterArn,
50
+ });
51
+ }
52
+ new cdk.CfnOutput(this, 'ClusterWriteEndpoint', {
53
+ value: this.clusterEndpoint.hostname,
54
+ description: 'Cluster Write Endpoint',
55
+ });
56
+ new cdk.CfnOutput(this, 'ClusterReadEndpoint', {
57
+ value: this.clusterReadEndpoint.hostname,
58
+ description: 'Cluster Read Endpoint',
59
+ });
60
+ new cdk.CfnOutput(this, 'ClusterArnIdentifier', {
61
+ value: this.clusterArn,
62
+ description: 'Cluster ARM Identifier',
63
+ });
64
+ /*
65
+ NagSuppressions.addResourceSuppressions(this, [
66
+ //{ id: 'AwsSolutions-SMG4', reason: ' The secret does not have automatic rotation scheduled.' },
67
+ { id: 'AwsSolutions-SMG4', reason: 'The secret does not have automatic rotation scheduled.' },
68
+ { id: 'AwsSolutions-RDS6', reason: 'IAM Database Authentication enabled' },
69
+ { id: 'AwsSolutions-RDS10', reason: 'The RDS DB instance does not have deletion protection enabled' },
70
+ { id: 'AwsSolutions-RDS11', reason: 'Using a default endpoint port 3306' },
71
+ { id: 'AwsSolutions-RDS14', reason: 'Aurora Serverless Clusters do not support Backtracking ' },
72
+ //{ id: 'AwsSolutions-IAM4', reason: 'Replace AWS managed policies with system specific (customer) managed policies - Policy AmazonRDSEnhancedMonitoringRole' },
73
+ ]);
74
+ */
75
+ }
76
+ }
77
+ exports.TmRdsAuroraMysqlServerless = TmRdsAuroraMysqlServerless;
78
+ _a = JSII_RTTI_SYMBOL_1;
79
+ TmRdsAuroraMysqlServerless[_a] = { fqn: "tm-cdk-constructs.TmRdsAuroraMysqlServerless", version: "0.0.0" };
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLWF1cm9yYS1teXNxbC1zZXJ2ZXJsZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlcy9yZHMtYXVyb3JhLW15c3FsLXNlcnZlcmxlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQVczQyxNQUFhLDBCQUEyQixTQUFRLEdBQUcsQ0FBQyxlQUFlO0lBQ2pFOztNQUVFO0lBRUY7O09BRUc7SUFDSCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF1QztRQUd2Qzs7V0FFRztRQUNILE1BQU0sWUFBWSxHQUE2QjtZQUM3QyxNQUFNLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztnQkFDNUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVO2FBQ2pELENBQUM7WUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO2dCQUNqRCwyQkFBMkIsRUFBRSxHQUFHLENBQUMsMkJBQTJCLENBQUMsT0FBTzthQUNyRSxDQUFDO1lBQ0YsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNsRCx3QkFBd0I7WUFDeEIsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO2FBQzVDO1NBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ0gsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBRWxEOztXQUVHO1FBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFOUIsSUFBSSxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQ3ZCLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtnQkFDaEQsa0JBQWtCLEVBQUUsS0FBSztnQkFDekIsdUJBQXVCLEVBQUUsaUJBQWlCO2dCQUMxQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsVUFBVTthQUMzQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDOUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUNwQyxXQUFXLEVBQUUsd0JBQXdCO1NBQ3RDLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRO1lBQ3hDLFdBQVcsRUFBRSx1QkFBdUI7U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdEIsV0FBVyxFQUFFLHdCQUF3QjtTQUN0QyxDQUFDLENBQUM7UUFFSDs7Ozs7Ozs7OztVQVVFO0lBRUosQ0FBQzs7QUFoRkgsZ0VBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIHJkcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVG1SZHNBdXJvcmFNeXNxbFNlcnZlcmxlc3NQcm9wcyBleHRlbmRzIHJkcy5EYXRhYmFzZUNsdXN0ZXJQcm9wc3tcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgY3JlYXRpb24gb2YgYSBHbG9iYWwgQ2x1c3RlciBmb3IgdGhlIFJEUyBjbHVzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsPzogYm9vbGVhbiA7XG59XG5cbmV4cG9ydCBjbGFzcyBUbVJkc0F1cm9yYU15c3FsU2VydmVybGVzcyBleHRlbmRzIHJkcy5EYXRhYmFzZUNsdXN0ZXIge1xuICAvKipcbiAgICAgKiBUaGUgQXVyb3JhIE15c3FsIFNlcnZlcmxlc3MgY3JlYXRlZCBieSB0aGUgY29uc3RydWN0IHJkc0F1cm9yYU15c3FsU2VydmVybGVzcy5cbiAgKi9cblxuICAvKipcbiAgICogUmVwcmVzZW50cyBhIGNsYXNzIHRoYXQgY3JlYXRlcyBhbiBSRFMgQXVyb3JhIE15U1FMIFNlcnZlcmxlc3MgZGF0YWJhc2UgY2x1c3Rlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IFRtUmRzQXVyb3JhTXlzcWxTZXJ2ZXJsZXNzUHJvcHMsXG4gICkge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgcHJvcGVydGllcyBmb3IgdGhlIFJEUyBBdXJvcmEgTXlTUUwgU2VydmVybGVzcyBkYXRhYmFzZSBjbHVzdGVyLlxuICAgICAqL1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wczogcmRzLkRhdGFiYXNlQ2x1c3RlclByb3BzID0ge1xuICAgICAgZW5naW5lOiByZHMuRGF0YWJhc2VDbHVzdGVyRW5naW5lLmF1cm9yYU15c3FsKHtcbiAgICAgICAgdmVyc2lvbjogcmRzLkF1cm9yYU15c3FsRW5naW5lVmVyc2lvbi5WRVJfM18wNV8yLFxuICAgICAgfSksXG4gICAgICB3cml0ZXI6IHJkcy5DbHVzdGVySW5zdGFuY2Uuc2VydmVybGVzc1YyKCd3cml0ZXInLCB7XG4gICAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogcmRzLlBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5ERUZBVUxULFxuICAgICAgfSksXG4gICAgICBjcmVkZW50aWFsczogcmRzLkNyZWRlbnRpYWxzLmZyb21Vc2VybmFtZSgnYWRtaW4nKSwgLy8gVGhlIG1hc3RlciBjcmVkZW50aWFscyBmb3IgdGhlIGRhdGFiYXNlXG4gICAgICAvLyB0byB0cnVlIGluIHByb2R1Y3Rpb25cbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICB2cGM6IHByb3BzPy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWVyZ2VkIHByb3BlcnRpZXMgZm9yIHRoZSBSRFMgQXVyb3JhIE15U1FMIFNlcnZlcmxlc3MgZGF0YWJhc2UgY2x1c3Rlci5cbiAgICAgKi9cbiAgICBjb25zdCBtZXJnZWRQcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCAuLi5wcm9wcyB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIFJEUyBBdXJvcmEgTXlTUUwgU2VydmVybGVzcyBkYXRhYmFzZSBjbHVzdGVyIGNyZWF0ZWQgYnkgdGhlIGNvbnN0cnVjdC5cbiAgICAgKi9cbiAgICBzdXBlcihzY29wZSwgaWQsIG1lcmdlZFByb3BzKTtcblxuICAgIGlmIChwcm9wcz8uZW5hYmxlR2xvYmFsKSB7XG4gICAgICBuZXcgcmRzLkNmbkdsb2JhbENsdXN0ZXIodGhpcywgJ1RtR2xvYmFsQ2x1c3RlcicsIHtcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI6ICdUbUdsb2JhbENsdXN0ZXInLFxuICAgICAgICBzb3VyY2VEYkNsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnQ2x1c3RlcldyaXRlRW5kcG9pbnQnLCB7XG4gICAgICB2YWx1ZTogdGhpcy5jbHVzdGVyRW5kcG9pbnQuaG9zdG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogJ0NsdXN0ZXIgV3JpdGUgRW5kcG9pbnQnLFxuICAgIH0pO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ0NsdXN0ZXJSZWFkRW5kcG9pbnQnLCB7XG4gICAgICB2YWx1ZTogdGhpcy5jbHVzdGVyUmVhZEVuZHBvaW50Lmhvc3RuYW1lLFxuICAgICAgZGVzY3JpcHRpb246ICdDbHVzdGVyIFJlYWQgRW5kcG9pbnQnLFxuICAgIH0pO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ0NsdXN0ZXJBcm5JZGVudGlmaWVyJywge1xuICAgICAgdmFsdWU6IHRoaXMuY2x1c3RlckFybixcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2x1c3RlciBBUk0gSWRlbnRpZmllcicsXG4gICAgfSk7XG5cbiAgICAvKlxuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyh0aGlzLCBbXG4gICAgICAvL3sgaWQ6ICdBd3NTb2x1dGlvbnMtU01HNCcsIHJlYXNvbjogJyBUaGUgc2VjcmV0IGRvZXMgbm90IGhhdmUgYXV0b21hdGljIHJvdGF0aW9uIHNjaGVkdWxlZC4nIH0sXG4gICAgICB7IGlkOiAnQXdzU29sdXRpb25zLVNNRzQnLCByZWFzb246ICdUaGUgc2VjcmV0IGRvZXMgbm90IGhhdmUgYXV0b21hdGljIHJvdGF0aW9uIHNjaGVkdWxlZC4nIH0sXG4gICAgICB7IGlkOiAnQXdzU29sdXRpb25zLVJEUzYnLCByZWFzb246ICdJQU0gRGF0YWJhc2UgQXV0aGVudGljYXRpb24gZW5hYmxlZCcgfSxcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtUkRTMTAnLCByZWFzb246ICdUaGUgUkRTIERCIGluc3RhbmNlIGRvZXMgbm90IGhhdmUgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkJyB9LFxuICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1SRFMxMScsIHJlYXNvbjogJ1VzaW5nIGEgZGVmYXVsdCBlbmRwb2ludCBwb3J0IDMzMDYnIH0sXG4gICAgICB7IGlkOiAnQXdzU29sdXRpb25zLVJEUzE0JywgcmVhc29uOiAnQXVyb3JhIFNlcnZlcmxlc3MgQ2x1c3RlcnMgZG8gbm90IHN1cHBvcnQgQmFja3RyYWNraW5nICcgfSxcbiAgICAgIC8veyBpZDogJ0F3c1NvbHV0aW9ucy1JQU00JywgcmVhc29uOiAnUmVwbGFjZSBBV1MgbWFuYWdlZCBwb2xpY2llcyB3aXRoIHN5c3RlbSBzcGVjaWZpYyAoY3VzdG9tZXIpIG1hbmFnZWQgcG9saWNpZXMgLSBQb2xpY3kgQW1hem9uUkRTRW5oYW5jZWRNb25pdG9yaW5nUm9sZScgfSxcbiAgICBdKTtcbiAgICAqL1xuXG4gIH1cbn0iXX0=
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './network';
2
+ export * from './pipeline';
3
+ export * from './databases';
package/lib/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./network"), exports);
18
+ __exportStar(require("./pipeline"), exports);
19
+ __exportStar(require("./databases"), exports);
20
+ //export * from './stacks/network/vpcBaseStack';
21
+ //export * from '../examples/rdsauroramysqlserverless/lib/rdsNetworkSecondaryRegion';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQiw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGdEQUFnRDtBQUNoRCxxRkFBcUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25ldHdvcmsnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlcyc7XG4vL2V4cG9ydCAqIGZyb20gJy4vc3RhY2tzL25ldHdvcmsvdnBjQmFzZVN0YWNrJztcbi8vZXhwb3J0ICogZnJvbSAnLi4vZXhhbXBsZXMvcmRzYXVyb3JhbXlzcWxzZXJ2ZXJsZXNzL2xpYi9yZHNOZXR3b3JrU2Vjb25kYXJ5UmVnaW9uJzsiXX0=
@@ -0,0 +1 @@
1
+ export * from './vpc-base';
@@ -0,0 +1,18 @@
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("./vpc-base"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi92cGMtYmFzZSc7Il19
@@ -0,0 +1,31 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import { Construct } from 'constructs';
3
+ /**
4
+ * Represents the configuration for a VPC.
5
+ */
6
+ export interface TmVpcProps extends ec2.VpcProps {
7
+ /**
8
+ * The CIDR block for the VPC.
9
+ */
10
+ readonly rangeCidr: string;
11
+ /**
12
+ * The maximum number of availability zones to use for the VPC.
13
+ */
14
+ /**
15
+ * The number of NAT gateways to create for the VPC.
16
+ */
17
+ /**
18
+ * Indicates whether to enable the S3 endpoint for the VPC.
19
+ */
20
+ readonly enableEndpoints?: Array<string>;
21
+ }
22
+ /**
23
+ * A VPC construct that creates a VPC with public and private subnets.
24
+ */
25
+ export declare class TmVpcBase extends ec2.Vpc {
26
+ /**
27
+ * The VPC created by the construct.
28
+ */
29
+ constructor(scope: Construct, id: string, props: TmVpcProps);
30
+ private tmAddGatewayEndpoint;
31
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TmVpcBase = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const ec2 = require("aws-cdk-lib/aws-ec2");
8
+ const logs = require("aws-cdk-lib/aws-logs");
9
+ /**
10
+ * A VPC construct that creates a VPC with public and private subnets.
11
+ */
12
+ class TmVpcBase extends ec2.Vpc {
13
+ /**
14
+ * The VPC created by the construct.
15
+ */
16
+ constructor(scope, id, props) {
17
+ const defautProps = {
18
+ ipAddresses: ec2.IpAddresses.cidr(props.rangeCidr),
19
+ maxAzs: 2,
20
+ natGateways: 1,
21
+ enableDnsHostnames: true,
22
+ enableDnsSupport: true,
23
+ subnetConfiguration: [
24
+ {
25
+ cidrMask: 24,
26
+ name: 'PublicSubnet',
27
+ subnetType: ec2.SubnetType.PUBLIC,
28
+ },
29
+ {
30
+ cidrMask: 24,
31
+ name: 'PrivateSubnetWithNat',
32
+ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
33
+ },
34
+ {
35
+ cidrMask: 24,
36
+ name: 'PrivateSubnetIsolated',
37
+ subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
38
+ },
39
+ ],
40
+ };
41
+ const mergedProps = { ...defautProps, ...props };
42
+ super(scope, id, mergedProps);
43
+ for (const service of props.enableEndpoints ?? []) {
44
+ this.tmAddGatewayEndpoint(service);
45
+ }
46
+ new aws_cdk_lib_1.CfnOutput(this, 'VpcId', {
47
+ value: this.vpcId,
48
+ description: 'VPC ID',
49
+ });
50
+ const logGroup = new logs.LogGroup(this, 'FlowLogsLogGroup', {
51
+ retention: logs.RetentionDays.ONE_MONTH,
52
+ });
53
+ this.addFlowLog('FlowLog', {
54
+ destination: ec2.FlowLogDestination.toCloudWatchLogs(logGroup),
55
+ trafficType: ec2.FlowLogTrafficType.ALL, // Capture all traffic
56
+ });
57
+ }
58
+ tmAddGatewayEndpoint(service) {
59
+ const serviceKey = service.toUpperCase();
60
+ this.addGatewayEndpoint(`${service}Endpoint`, {
61
+ service: ec2.GatewayVpcEndpointAwsService[serviceKey],
62
+ });
63
+ const endpointSecurityGroup = new ec2.SecurityGroup(this, `${service}EndpointSecurityGroup`, {
64
+ vpc: this,
65
+ });
66
+ endpointSecurityGroup.addIngressRule(ec2.Peer.ipv4(this.vpcCidrBlock), ec2.Port.tcp(443));
67
+ }
68
+ }
69
+ exports.TmVpcBase = TmVpcBase;
70
+ _a = JSII_RTTI_SYMBOL_1;
71
+ TmVpcBase[_a] = { fqn: "tm-cdk-constructs.TmVpcBase", version: "0.0.0" };
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay92cGMtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF3QztBQUN4QywyQ0FBMkM7QUFDM0MsNkNBQTZDO0FBK0I3Qzs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLEdBQUcsQ0FBQyxHQUFHO0lBQ3BDOztPQUVHO0lBRUgsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBaUI7UUFFakIsTUFBTSxXQUFXLEdBQWlCO1lBQ2hDLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2xELE1BQU0sRUFBRSxDQUFDO1lBQ1QsV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsbUJBQW1CLEVBQUU7Z0JBQ25CO29CQUNFLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2lCQUNsQztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7aUJBQy9DO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtpQkFDNUM7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFFakQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFOUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRztZQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLFFBQVE7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUMzRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO1lBQ3pCLFdBQVcsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQzlELFdBQVcsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLHNCQUFzQjtTQUNoRSxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBZTtRQUMxQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFtRCxDQUFDO1FBQzFGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLE9BQU8sVUFBVSxFQUFFO1lBQzVDLE9BQU8sRUFBRSxHQUFHLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDO1NBQ3RELENBQUMsQ0FBQztRQUVILE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUNqRCxJQUFJLEVBQUUsR0FBRyxPQUFPLHVCQUF1QixFQUFFO1lBQ3ZDLEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FDRixDQUFDO1FBRUYscUJBQXFCLENBQUMsY0FBYyxDQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUNsQixDQUFDO0lBQ0osQ0FBQzs7QUEzRUgsOEJBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhIFZQQy5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRtVnBjUHJvcHMgZXh0ZW5kcyBlYzIuVnBjUHJvcHMge1xuICAvKipcbiAgICogVGhlIENJRFIgYmxvY2sgZm9yIHRoZSBWUEMuXG4gICAqL1xuICByZWFkb25seSByYW5nZUNpZHI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGF2YWlsYWJpbGl0eSB6b25lcyB0byB1c2UgZm9yIHRoZSBWUEMuXG4gICAqL1xuICAvL2VhZG9ubHkgbWF4QXpzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIE5BVCBnYXRld2F5cyB0byBjcmVhdGUgZm9yIHRoZSBWUEMuXG4gICAqL1xuICAvL3JlYWRvbmx5IG5hdEdhdGV3YXlzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIFMzIGVuZHBvaW50IGZvciB0aGUgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlRW5kcG9pbnRzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvLyBEZWZpbmUgYW55IG90aGVyIHByb3BlcnRpZXMgeW91IHdhbnQgdG8gcGFzcyB0byB0aGUgVlBDIGNvbnN0cnVjdFxufVxuXG4vKipcbiAqIEEgVlBDIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBWUEMgd2l0aCBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRtVnBjQmFzZSBleHRlbmRzIGVjMi5WcGMge1xuICAvKipcbiAgICogVGhlIFZQQyBjcmVhdGVkIGJ5IHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogVG1WcGNQcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgZGVmYXV0UHJvcHM6IGVjMi5WcGNQcm9wcyA9IHtcbiAgICAgIGlwQWRkcmVzc2VzOiBlYzIuSXBBZGRyZXNzZXMuY2lkcihwcm9wcy5yYW5nZUNpZHIpLCAvLyBUaGUgQ0lEUiBibG9jayBmb3IgdGhlIFZQQ1xuICAgICAgbWF4QXpzOiAyLFxuICAgICAgbmF0R2F0ZXdheXM6IDEsIC8vIE51bWJlciBvZiBOQVQgZ2F0ZXdheXMgKGZvciBwcml2YXRlIHN1Ym5ldHMpOiBwcm9wcy5uYXRHYXRld2F5cyB8IDEsIC8vIE51bWJlciBvZiBOQVQgZ2F0ZXdheXMgKGZvciBwcml2YXRlIHN1Ym5ldHMpXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXM6IHRydWUsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0OiB0cnVlLFxuICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgY2lkck1hc2s6IDI0LFxuICAgICAgICAgIG5hbWU6ICdQdWJsaWNTdWJuZXQnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICAgICAgICBuYW1lOiAnUHJpdmF0ZVN1Ym5ldFdpdGhOYXQnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgICAgbmFtZTogJ1ByaXZhdGVTdWJuZXRJc29sYXRlZCcsXG4gICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1lcmdlZFByb3BzID0geyAuLi5kZWZhdXRQcm9wcywgLi4ucHJvcHMgfTtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwgbWVyZ2VkUHJvcHMpO1xuXG4gICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIHByb3BzLmVuYWJsZUVuZHBvaW50cyA/PyBbXSApIHtcbiAgICAgIHRoaXMudG1BZGRHYXRld2F5RW5kcG9pbnQoc2VydmljZSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVnBjSWQnLCB7XG4gICAgICB2YWx1ZTogdGhpcy52cGNJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVlBDIElEJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0Zsb3dMb2dzTG9nR3JvdXAnLCB7XG4gICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEZsb3dMb2coJ0Zsb3dMb2cnLCB7XG4gICAgICBkZXN0aW5hdGlvbjogZWMyLkZsb3dMb2dEZXN0aW5hdGlvbi50b0Nsb3VkV2F0Y2hMb2dzKGxvZ0dyb3VwKSxcbiAgICAgIHRyYWZmaWNUeXBlOiBlYzIuRmxvd0xvZ1RyYWZmaWNUeXBlLkFMTCwgLy8gQ2FwdHVyZSBhbGwgdHJhZmZpY1xuICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIHRtQWRkR2F0ZXdheUVuZHBvaW50KHNlcnZpY2U6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZpY2VLZXkgPSBzZXJ2aWNlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIGVjMi5HYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlO1xuICAgIHRoaXMuYWRkR2F0ZXdheUVuZHBvaW50KGAke3NlcnZpY2V9RW5kcG9pbnRgLCB7XG4gICAgICBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZVtzZXJ2aWNlS2V5XSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVuZHBvaW50U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsIGAke3NlcnZpY2V9RW5kcG9pbnRTZWN1cml0eUdyb3VwYCwge1xuICAgICAgICB2cGM6IHRoaXMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBlbmRwb2ludFNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICBlYzIuUGVlci5pcHY0KHRoaXMudnBjQ2lkckJsb2NrKSxcbiAgICAgIGVjMi5Qb3J0LnRjcCg0NDMpLFxuICAgICk7XG4gIH1cblxufSJdfQ==
@@ -0,0 +1,41 @@
1
+ import * as pipelines from 'aws-cdk-lib/pipelines';
2
+ import { Construct } from 'constructs';
3
+ export interface TmPipelineProps {
4
+ /**
5
+ * The name of the pipeline.
6
+ */
7
+ readonly pipelineName: string;
8
+ /**
9
+ * The name of the repository.
10
+ */
11
+ readonly repoName: string;
12
+ /**
13
+ * The branch of the repository to use.
14
+ */
15
+ readonly repoBranch: string;
16
+ /**
17
+ * The command to run in the synth step.
18
+ */
19
+ readonly synthCommand?: Array<string>;
20
+ /**
21
+ * The primary output directory.
22
+ */
23
+ readonly primaryOutputDirectory?: string;
24
+ }
25
+ /**
26
+ * A CDK construct that creates a CodePipeline.
27
+ */
28
+ export declare class TmPipeline extends Construct {
29
+ /**
30
+ * The CodePipeline created by the construct.
31
+ */
32
+ readonly pipeline: pipelines.CodePipeline;
33
+ /**
34
+ * Constructs a new instance of the PipelineCdk class.
35
+ * @param scope The parent construct.
36
+ * @param id The name of the construct.
37
+ * @param props The properties for the construct.
38
+ * @default - No default properties.
39
+ * */
40
+ constructor(scope: Construct, id: string, props: TmPipelineProps);
41
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TmPipeline = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const codecommit = require("aws-cdk-lib/aws-codecommit");
7
+ const pipelines = require("aws-cdk-lib/pipelines");
8
+ const constructs_1 = require("constructs");
9
+ /**
10
+ * A CDK construct that creates a CodePipeline.
11
+ */
12
+ class TmPipeline extends constructs_1.Construct {
13
+ /**
14
+ * Constructs a new instance of the PipelineCdk class.
15
+ * @param scope The parent construct.
16
+ * @param id The name of the construct.
17
+ * @param props The properties for the construct.
18
+ * @default - No default properties.
19
+ * */
20
+ constructor(scope, id, props) {
21
+ super(scope, id);
22
+ // Define a CodeCommit repository
23
+ const repository = codecommit.Repository.fromRepositoryName(this, props.repoName, props.repoName);
24
+ // Create a pipeline
25
+ this.pipeline = new pipelines.CodePipeline(this, props.pipelineName, {
26
+ synth: new pipelines.ShellStep('Synth', {
27
+ input: pipelines.CodePipelineSource.codeCommit(repository, props.repoBranch),
28
+ // Commands to run in the synth step
29
+ installCommands: ['npm install', 'npm ci', 'npm install -g aws-cdk'],
30
+ commands: props.synthCommand ?? ['npm install', 'npm ci', 'npm install -g aws-cdk', 'cdk synth'],
31
+ primaryOutputDirectory: props.primaryOutputDirectory ?? 'cdk.out',
32
+ }), // Add a closing parenthesis here
33
+ });
34
+ }
35
+ }
36
+ exports.TmPipeline = TmPipeline;
37
+ _a = JSII_RTTI_SYMBOL_1;
38
+ TmPipeline[_a] = { fqn: "tm-cdk-constructs.TmPipeline", version: "0.0.0" };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGlwZWxpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5REFBeUQ7QUFDekQsbURBQW1EO0FBQ25ELDJDQUF1QztBQTZCdkM7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUt2Qzs7Ozs7O1VBTU07SUFDTixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsaUNBQWlDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxHLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUNuRSxLQUFLLEVBQUUsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzVFLG9DQUFvQztnQkFDcEMsZUFBZSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQztnQkFDcEUsUUFBUSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLFdBQVcsQ0FBQztnQkFDaEcsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixJQUFJLFNBQVM7YUFDbEUsQ0FBQyxFQUFFLGlDQUFpQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVCSCxnQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb2RlY29tbWl0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlY29tbWl0JztcbmltcG9ydCAqIGFzIHBpcGVsaW5lcyBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5waXBlbGluZXMtcmVhZG1lLmh0bWxcblxuLy8gRGVmaW5lIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmUgY29uc3RydWN0XG5leHBvcnQgaW50ZXJmYWNlIFRtUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb0JyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gcnVuIGluIHRoZSBzeW50aCBzdGVwLlxuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhDb21tYW5kPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IG91dHB1dCBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBDb2RlUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUbVBpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBDb2RlUGlwZWxpbmUgY3JlYXRlZCBieSB0aGUgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBpcGVsaW5lOiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lO1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUGlwZWxpbmVDZGsgY2xhc3MuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIGNvbnN0cnVjdC5cbiAgICogQGRlZmF1bHQgLSBObyBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAqICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG1QaXBlbGluZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIERlZmluZSBhIENvZGVDb21taXQgcmVwb3NpdG9yeVxuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBjb2RlY29tbWl0LlJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlOYW1lKHRoaXMsIHByb3BzLnJlcG9OYW1lLCBwcm9wcy5yZXBvTmFtZSk7XG5cbiAgICAvLyBDcmVhdGUgYSBwaXBlbGluZVxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBwcm9wcy5waXBlbGluZU5hbWUsIHtcbiAgICAgIHN5bnRoOiBuZXcgcGlwZWxpbmVzLlNoZWxsU3RlcCgnU3ludGgnLCB7XG4gICAgICAgIGlucHV0OiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lU291cmNlLmNvZGVDb21taXQocmVwb3NpdG9yeSwgcHJvcHMucmVwb0JyYW5jaCksXG4gICAgICAgIC8vIENvbW1hbmRzIHRvIHJ1biBpbiB0aGUgc3ludGggc3RlcFxuICAgICAgICBpbnN0YWxsQ29tbWFuZHM6IFsnbnBtIGluc3RhbGwnLCAnbnBtIGNpJywgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnXSxcbiAgICAgICAgY29tbWFuZHM6IHByb3BzLnN5bnRoQ29tbWFuZCA/PyBbJ25wbSBpbnN0YWxsJywgJ25wbSBjaScsICducG0gaW5zdGFsbCAtZyBhd3MtY2RrJywgJ2NkayBzeW50aCddLFxuICAgICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5ID8/ICdjZGsub3V0JyxcbiAgICAgIH0pLCAvLyBBZGQgYSBjbG9zaW5nIHBhcmVudGhlc2lzIGhlcmVcbiAgICB9KTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,11 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { IVpc } from 'aws-cdk-lib/aws-ec2';
3
+ import { Construct } from 'constructs';
4
+ interface VpcBaseStackProps extends cdk.StackProps {
5
+ range?: string;
6
+ }
7
+ export declare class TmVpcbaseStack extends cdk.Stack {
8
+ readonly vpc: IVpc;
9
+ constructor(scope: Construct, id: string, props?: VpcBaseStackProps);
10
+ }
11
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TmVpcbaseStack = void 0;
4
+ const cdk = require("aws-cdk-lib");
5
+ const vpc_base_1 = require("../../network/vpc-base");
6
+ class TmVpcbaseStack extends cdk.Stack {
7
+ constructor(scope, id, props) {
8
+ super(scope, id, props);
9
+ this.vpc = new vpc_base_1.TmVpcBase(this, 'Vpc-CDK', {
10
+ rangeCidr: props?.range || '10.1.0.0/16',
11
+ enableEndpoints: ['s3'],
12
+ });
13
+ }
14
+ }
15
+ exports.TmVpcbaseStack = TmVpcbaseStack;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG0tdnBjLWJhc2Utc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhY2tzL25ldHdvcmsvdG0tdnBjLWJhc2Utc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBR25DLHFEQUFtRDtBQU1uRCxNQUFhLGNBQWUsU0FBUSxHQUFHLENBQUMsS0FBSztJQUUzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBR3hCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxvQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDeEMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksYUFBYTtZQUN4QyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FFeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGO0FBYkQsd0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBUbVZwY0Jhc2UgfSBmcm9tICcuLi8uLi9uZXR3b3JrL3ZwYy1iYXNlJztcblxuaW50ZXJmYWNlIFZwY0Jhc2VTdGFja1Byb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICByYW5nZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRtVnBjYmFzZVN0YWNrIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNCYXNlU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG5cbiAgICB0aGlzLnZwYyA9IG5ldyBUbVZwY0Jhc2UodGhpcywgJ1ZwYy1DREsnLCB7XG4gICAgICByYW5nZUNpZHI6IHByb3BzPy5yYW5nZSB8fCAnMTAuMS4wLjAvMTYnLFxuICAgICAgZW5hYmxlRW5kcG9pbnRzOiBbJ3MzJ10sXG5cbiAgICB9KTtcbiAgfVxuXG59Il19
package/package.json ADDED
@@ -0,0 +1,133 @@
1
+ {
2
+ "name": "tm-cdk-constructs",
3
+ "description": "A CDK construct library",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/toumoro/cdk-constructs.git"
7
+ },
8
+ "scripts": {
9
+ "build": "npx projen build",
10
+ "bump": "npx projen bump",
11
+ "clobber": "npx projen clobber",
12
+ "compat": "npx projen compat",
13
+ "compile": "npx projen compile",
14
+ "default": "npx projen default",
15
+ "docgen": "npx projen docgen",
16
+ "eject": "npx projen eject",
17
+ "eslint": "npx projen eslint",
18
+ "package": "npx projen package",
19
+ "package-all": "npx projen package-all",
20
+ "package:js": "npx projen package:js",
21
+ "package:python": "npx projen package:python",
22
+ "post-compile": "npx projen post-compile",
23
+ "post-upgrade": "npx projen post-upgrade",
24
+ "pre-compile": "npx projen pre-compile",
25
+ "release": "npx projen release",
26
+ "test": "npx projen test",
27
+ "test:watch": "npx projen test:watch",
28
+ "unbump": "npx projen unbump",
29
+ "upgrade": "npx projen upgrade",
30
+ "watch": "npx projen watch",
31
+ "projen": "npx projen"
32
+ },
33
+ "author": {
34
+ "name": "Toumoro ",
35
+ "url": "https://www.toumoro.com/",
36
+ "organization": true
37
+ },
38
+ "devDependencies": {
39
+ "@types/jest": "^29.5.12",
40
+ "@types/node": "^18",
41
+ "@typescript-eslint/eslint-plugin": "^6",
42
+ "@typescript-eslint/parser": "^6",
43
+ "aws-cdk-lib": "2.143.0",
44
+ "cdk": "^2.143.0",
45
+ "constructs": "10.0.5",
46
+ "eslint": "^8",
47
+ "eslint-import-resolver-typescript": "^3.6.1",
48
+ "eslint-plugin-import": "^2.29.1",
49
+ "jest": "^29.7.0",
50
+ "jest-junit": "^15",
51
+ "jsii": "~5.2.0",
52
+ "jsii-diff": "^1.96.0",
53
+ "jsii-docgen": "^10.3.25",
54
+ "jsii-pacmak": "^1.96.0",
55
+ "jsii-rosetta": "~5.2.0",
56
+ "projen": "^0.80.20",
57
+ "standard-version": "^9",
58
+ "ts-jest": "^29.1.2",
59
+ "ts-node": "^10.9.2",
60
+ "typescript": "^5.4.3"
61
+ },
62
+ "peerDependencies": {
63
+ "aws-cdk-lib": "^2.143.0",
64
+ "constructs": "^10.0.5"
65
+ },
66
+ "dependencies": {
67
+ "cdk-nag": "^2.28.120"
68
+ },
69
+ "keywords": [
70
+ "cdk"
71
+ ],
72
+ "main": "lib/index.js",
73
+ "license": "GPL-3.0-or-later",
74
+ "version": "0.0.0",
75
+ "jest": {
76
+ "testMatch": [
77
+ "<rootDir>/src/**/__tests__/**/*.ts?(x)",
78
+ "<rootDir>/(test|src)/**/*(*.)@(spec|test).ts?(x)"
79
+ ],
80
+ "clearMocks": true,
81
+ "collectCoverage": true,
82
+ "coverageReporters": [
83
+ "json",
84
+ "lcov",
85
+ "clover",
86
+ "cobertura",
87
+ "text"
88
+ ],
89
+ "coverageDirectory": "coverage",
90
+ "coveragePathIgnorePatterns": [
91
+ "/node_modules/"
92
+ ],
93
+ "testPathIgnorePatterns": [
94
+ "/node_modules/"
95
+ ],
96
+ "watchPathIgnorePatterns": [
97
+ "/node_modules/"
98
+ ],
99
+ "reporters": [
100
+ "default",
101
+ [
102
+ "jest-junit",
103
+ {
104
+ "outputDirectory": "test-reports"
105
+ }
106
+ ]
107
+ ],
108
+ "transform": {
109
+ "^.+\\.[t]sx?$": [
110
+ "ts-jest",
111
+ {
112
+ "tsconfig": "tsconfig.dev.json"
113
+ }
114
+ ]
115
+ }
116
+ },
117
+ "types": "lib/index.d.ts",
118
+ "stability": "experimental",
119
+ "jsii": {
120
+ "outdir": "dist",
121
+ "targets": {
122
+ "python": {
123
+ "distName": "tm-cdk-constructs",
124
+ "module": "tm-cdk-constructs"
125
+ }
126
+ },
127
+ "tsc": {
128
+ "outDir": "lib",
129
+ "rootDir": "src"
130
+ }
131
+ },
132
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
133
+ }