@gradientedge/cdk-utils-aws 1.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/LICENSE +21 -0
- package/dist/src/common/construct.d.ts +85 -0
- package/dist/src/common/construct.js +125 -0
- package/dist/src/common/index.d.ts +4 -0
- package/dist/src/common/index.js +4 -0
- package/dist/src/common/resource-name-formatter.d.ts +13 -0
- package/dist/src/common/resource-name-formatter.js +30 -0
- package/dist/src/common/stack.d.ts +62 -0
- package/dist/src/common/stack.js +139 -0
- package/dist/src/common/types.d.ts +30 -0
- package/dist/src/common/types.js +1 -0
- package/dist/src/construct/api-to-any-target/index.d.ts +3 -0
- package/dist/src/construct/api-to-any-target/index.js +3 -0
- package/dist/src/construct/api-to-any-target/main.d.ts +47 -0
- package/dist/src/construct/api-to-any-target/main.js +154 -0
- package/dist/src/construct/api-to-any-target/target.d.ts +23 -0
- package/dist/src/construct/api-to-any-target/target.js +14 -0
- package/dist/src/construct/api-to-any-target/types.d.ts +60 -0
- package/dist/src/construct/api-to-any-target/types.js +1 -0
- package/dist/src/construct/api-to-eventbridge-target/api.d.ts +34 -0
- package/dist/src/construct/api-to-eventbridge-target/api.js +23 -0
- package/dist/src/construct/api-to-eventbridge-target/event.d.ts +15 -0
- package/dist/src/construct/api-to-eventbridge-target/event.js +12 -0
- package/dist/src/construct/api-to-eventbridge-target/index.d.ts +4 -0
- package/dist/src/construct/api-to-eventbridge-target/index.js +4 -0
- package/dist/src/construct/api-to-eventbridge-target/main.d.ts +121 -0
- package/dist/src/construct/api-to-eventbridge-target/main.js +442 -0
- package/dist/src/construct/api-to-eventbridge-target/types.d.ts +100 -0
- package/dist/src/construct/api-to-eventbridge-target/types.js +1 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.d.ts +16 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.js +12 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/index.d.ts +3 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/index.js +3 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/main.d.ts +159 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/main.js +547 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/types.d.ts +22 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/types.js +1 -0
- package/dist/src/construct/api-to-lambda-target/api.d.ts +35 -0
- package/dist/src/construct/api-to-lambda-target/api.js +24 -0
- package/dist/src/construct/api-to-lambda-target/index.d.ts +3 -0
- package/dist/src/construct/api-to-lambda-target/index.js +3 -0
- package/dist/src/construct/api-to-lambda-target/main.d.ts +70 -0
- package/dist/src/construct/api-to-lambda-target/main.js +218 -0
- package/dist/src/construct/api-to-lambda-target/types.d.ts +62 -0
- package/dist/src/construct/api-to-lambda-target/types.js +1 -0
- package/dist/src/construct/application-configuration/index.d.ts +2 -0
- package/dist/src/construct/application-configuration/index.js +2 -0
- package/dist/src/construct/application-configuration/main.d.ts +23 -0
- package/dist/src/construct/application-configuration/main.js +79 -0
- package/dist/src/construct/application-configuration/types.d.ts +6 -0
- package/dist/src/construct/application-configuration/types.js +1 -0
- package/dist/src/construct/event-handler/handler.d.ts +29 -0
- package/dist/src/construct/event-handler/handler.js +21 -0
- package/dist/src/construct/event-handler/index.d.ts +3 -0
- package/dist/src/construct/event-handler/index.js +3 -0
- package/dist/src/construct/event-handler/main.d.ts +91 -0
- package/dist/src/construct/event-handler/main.js +196 -0
- package/dist/src/construct/event-handler/types.d.ts +41 -0
- package/dist/src/construct/event-handler/types.js +1 -0
- package/dist/src/construct/index.d.ts +14 -0
- package/dist/src/construct/index.js +14 -0
- package/dist/src/construct/lambda-with-iam-access/index.d.ts +2 -0
- package/dist/src/construct/lambda-with-iam-access/index.js +2 -0
- package/dist/src/construct/lambda-with-iam-access/main.d.ts +78 -0
- package/dist/src/construct/lambda-with-iam-access/main.js +182 -0
- package/dist/src/construct/lambda-with-iam-access/types.d.ts +20 -0
- package/dist/src/construct/lambda-with-iam-access/types.js +1 -0
- package/dist/src/construct/piped-event-handler/index.d.ts +2 -0
- package/dist/src/construct/piped-event-handler/index.js +2 -0
- package/dist/src/construct/piped-event-handler/main.d.ts +38 -0
- package/dist/src/construct/piped-event-handler/main.js +62 -0
- package/dist/src/construct/piped-event-handler/types.d.ts +9 -0
- package/dist/src/construct/piped-event-handler/types.js +1 -0
- package/dist/src/construct/rest-api-lambda/index.d.ts +2 -0
- package/dist/src/construct/rest-api-lambda/index.js +2 -0
- package/dist/src/construct/rest-api-lambda/main.d.ts +96 -0
- package/dist/src/construct/rest-api-lambda/main.js +170 -0
- package/dist/src/construct/rest-api-lambda/types.d.ts +23 -0
- package/dist/src/construct/rest-api-lambda/types.js +1 -0
- package/dist/src/construct/rest-api-lambda-with-cache/index.d.ts +2 -0
- package/dist/src/construct/rest-api-lambda-with-cache/index.js +2 -0
- package/dist/src/construct/rest-api-lambda-with-cache/main.d.ts +56 -0
- package/dist/src/construct/rest-api-lambda-with-cache/main.js +118 -0
- package/dist/src/construct/rest-api-lambda-with-cache/types.d.ts +11 -0
- package/dist/src/construct/rest-api-lambda-with-cache/types.js +1 -0
- package/dist/src/construct/site-with-ecs-backend/constants.d.ts +4 -0
- package/dist/src/construct/site-with-ecs-backend/constants.js +5 -0
- package/dist/src/construct/site-with-ecs-backend/index.d.ts +3 -0
- package/dist/src/construct/site-with-ecs-backend/index.js +3 -0
- package/dist/src/construct/site-with-ecs-backend/main.d.ts +154 -0
- package/dist/src/construct/site-with-ecs-backend/main.js +437 -0
- package/dist/src/construct/site-with-ecs-backend/types.d.ts +49 -0
- package/dist/src/construct/site-with-ecs-backend/types.js +1 -0
- package/dist/src/construct/site-with-lambda-backend/constants.d.ts +5 -0
- package/dist/src/construct/site-with-lambda-backend/constants.js +6 -0
- package/dist/src/construct/site-with-lambda-backend/index.d.ts +3 -0
- package/dist/src/construct/site-with-lambda-backend/index.js +3 -0
- package/dist/src/construct/site-with-lambda-backend/main.d.ts +116 -0
- package/dist/src/construct/site-with-lambda-backend/main.js +316 -0
- package/dist/src/construct/site-with-lambda-backend/types.d.ts +45 -0
- package/dist/src/construct/site-with-lambda-backend/types.js +1 -0
- package/dist/src/construct/static-asset-deployment/index.d.ts +2 -0
- package/dist/src/construct/static-asset-deployment/index.js +2 -0
- package/dist/src/construct/static-asset-deployment/main.d.ts +41 -0
- package/dist/src/construct/static-asset-deployment/main.js +113 -0
- package/dist/src/construct/static-asset-deployment/types.d.ts +41 -0
- package/dist/src/construct/static-asset-deployment/types.js +1 -0
- package/dist/src/construct/static-site/index.d.ts +2 -0
- package/dist/src/construct/static-site/index.js +2 -0
- package/dist/src/construct/static-site/main.d.ts +84 -0
- package/dist/src/construct/static-site/main.js +136 -0
- package/dist/src/construct/static-site/types.d.ts +30 -0
- package/dist/src/construct/static-site/types.js +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +5 -0
- package/dist/src/services/api-gateway/index.d.ts +2 -0
- package/dist/src/services/api-gateway/index.js +2 -0
- package/dist/src/services/api-gateway/main.d.ts +68 -0
- package/dist/src/services/api-gateway/main.js +173 -0
- package/dist/src/services/api-gateway/types.d.ts +10 -0
- package/dist/src/services/api-gateway/types.js +1 -0
- package/dist/src/services/appconfig/constants.d.ts +12 -0
- package/dist/src/services/appconfig/constants.js +51 -0
- package/dist/src/services/appconfig/index.d.ts +3 -0
- package/dist/src/services/appconfig/index.js +3 -0
- package/dist/src/services/appconfig/main.d.ts +63 -0
- package/dist/src/services/appconfig/main.js +119 -0
- package/dist/src/services/appconfig/types.d.ts +17 -0
- package/dist/src/services/appconfig/types.js +1 -0
- package/dist/src/services/certificate-manager/index.d.ts +2 -0
- package/dist/src/services/certificate-manager/index.js +2 -0
- package/dist/src/services/certificate-manager/main.d.ts +41 -0
- package/dist/src/services/certificate-manager/main.js +62 -0
- package/dist/src/services/certificate-manager/types.d.ts +11 -0
- package/dist/src/services/certificate-manager/types.js +1 -0
- package/dist/src/services/cloudfront/index.d.ts +2 -0
- package/dist/src/services/cloudfront/index.js +2 -0
- package/dist/src/services/cloudfront/main.d.ts +96 -0
- package/dist/src/services/cloudfront/main.js +233 -0
- package/dist/src/services/cloudfront/types.d.ts +13 -0
- package/dist/src/services/cloudfront/types.js +1 -0
- package/dist/src/services/cloudtrail/index.d.ts +2 -0
- package/dist/src/services/cloudtrail/index.js +2 -0
- package/dist/src/services/cloudtrail/main.d.ts +44 -0
- package/dist/src/services/cloudtrail/main.js +71 -0
- package/dist/src/services/cloudtrail/types.d.ts +5 -0
- package/dist/src/services/cloudtrail/types.js +1 -0
- package/dist/src/services/cloudwatch/index.d.ts +3 -0
- package/dist/src/services/cloudwatch/index.js +3 -0
- package/dist/src/services/cloudwatch/logs.d.ts +47 -0
- package/dist/src/services/cloudwatch/logs.js +98 -0
- package/dist/src/services/cloudwatch/main.d.ts +207 -0
- package/dist/src/services/cloudwatch/main.js +552 -0
- package/dist/src/services/cloudwatch/types.d.ts +89 -0
- package/dist/src/services/cloudwatch/types.js +1 -0
- package/dist/src/services/codebuild/index.d.ts +1 -0
- package/dist/src/services/codebuild/index.js +1 -0
- package/dist/src/services/codebuild/main.d.ts +36 -0
- package/dist/src/services/codebuild/main.js +67 -0
- package/dist/src/services/constants.d.ts +4 -0
- package/dist/src/services/constants.js +5 -0
- package/dist/src/services/dynamodb/index.d.ts +2 -0
- package/dist/src/services/dynamodb/index.js +2 -0
- package/dist/src/services/dynamodb/main.d.ts +35 -0
- package/dist/src/services/dynamodb/main.js +72 -0
- package/dist/src/services/dynamodb/types.d.ts +10 -0
- package/dist/src/services/dynamodb/types.js +1 -0
- package/dist/src/services/elastic-container-registry/index.d.ts +1 -0
- package/dist/src/services/elastic-container-registry/index.js +1 -0
- package/dist/src/services/elastic-container-registry/main.d.ts +27 -0
- package/dist/src/services/elastic-container-registry/main.js +33 -0
- package/dist/src/services/elastic-container-service/index.d.ts +2 -0
- package/dist/src/services/elastic-container-service/index.js +2 -0
- package/dist/src/services/elastic-container-service/main.d.ts +56 -0
- package/dist/src/services/elastic-container-service/main.js +149 -0
- package/dist/src/services/elastic-container-service/types.d.ts +45 -0
- package/dist/src/services/elastic-container-service/types.js +1 -0
- package/dist/src/services/elastic-file-system/index.d.ts +2 -0
- package/dist/src/services/elastic-file-system/index.js +2 -0
- package/dist/src/services/elastic-file-system/main.d.ts +42 -0
- package/dist/src/services/elastic-file-system/main.js +76 -0
- package/dist/src/services/elastic-file-system/types.d.ts +15 -0
- package/dist/src/services/elastic-file-system/types.js +1 -0
- package/dist/src/services/elastic-kubernetes-service/index.d.ts +2 -0
- package/dist/src/services/elastic-kubernetes-service/index.js +2 -0
- package/dist/src/services/elastic-kubernetes-service/main.d.ts +32 -0
- package/dist/src/services/elastic-kubernetes-service/main.js +85 -0
- package/dist/src/services/elastic-kubernetes-service/types.d.ts +7 -0
- package/dist/src/services/elastic-kubernetes-service/types.js +1 -0
- package/dist/src/services/elasticache/index.d.ts +2 -0
- package/dist/src/services/elasticache/index.js +2 -0
- package/dist/src/services/elasticache/main.d.ts +47 -0
- package/dist/src/services/elasticache/main.js +90 -0
- package/dist/src/services/elasticache/types.d.ts +9 -0
- package/dist/src/services/elasticache/types.js +1 -0
- package/dist/src/services/eventbridge/index.d.ts +3 -0
- package/dist/src/services/eventbridge/index.js +3 -0
- package/dist/src/services/eventbridge/main.d.ts +93 -0
- package/dist/src/services/eventbridge/main.js +295 -0
- package/dist/src/services/eventbridge/target.d.ts +57 -0
- package/dist/src/services/eventbridge/target.js +61 -0
- package/dist/src/services/eventbridge/types.d.ts +43 -0
- package/dist/src/services/eventbridge/types.js +1 -0
- package/dist/src/services/evidently/index.d.ts +2 -0
- package/dist/src/services/evidently/index.js +2 -0
- package/dist/src/services/evidently/main.d.ts +56 -0
- package/dist/src/services/evidently/main.js +114 -0
- package/dist/src/services/evidently/types.d.ts +21 -0
- package/dist/src/services/evidently/types.js +1 -0
- package/dist/src/services/identity-access-management/index.d.ts +1 -0
- package/dist/src/services/identity-access-management/index.js +1 -0
- package/dist/src/services/identity-access-management/main.d.ts +263 -0
- package/dist/src/services/identity-access-management/main.js +609 -0
- package/dist/src/services/index.d.ts +28 -0
- package/dist/src/services/index.js +28 -0
- package/dist/src/services/key-management-service/index.d.ts +2 -0
- package/dist/src/services/key-management-service/index.js +2 -0
- package/dist/src/services/key-management-service/main.d.ts +28 -0
- package/dist/src/services/key-management-service/main.js +39 -0
- package/dist/src/services/key-management-service/types.d.ts +5 -0
- package/dist/src/services/key-management-service/types.js +1 -0
- package/dist/src/services/lambda/index.d.ts +2 -0
- package/dist/src/services/lambda/index.js +2 -0
- package/dist/src/services/lambda/main.d.ts +89 -0
- package/dist/src/services/lambda/main.js +232 -0
- package/dist/src/services/lambda/types.d.ts +54 -0
- package/dist/src/services/lambda/types.js +1 -0
- package/dist/src/services/route53/index.d.ts +2 -0
- package/dist/src/services/route53/index.js +2 -0
- package/dist/src/services/route53/main.d.ts +66 -0
- package/dist/src/services/route53/main.js +136 -0
- package/dist/src/services/route53/types.d.ts +6 -0
- package/dist/src/services/route53/types.js +1 -0
- package/dist/src/services/secrets-manager/index.d.ts +2 -0
- package/dist/src/services/secrets-manager/index.js +2 -0
- package/dist/src/services/secrets-manager/main.d.ts +43 -0
- package/dist/src/services/secrets-manager/main.js +71 -0
- package/dist/src/services/secrets-manager/types.d.ts +3 -0
- package/dist/src/services/secrets-manager/types.js +1 -0
- package/dist/src/services/simple-notification-service/index.d.ts +2 -0
- package/dist/src/services/simple-notification-service/index.js +2 -0
- package/dist/src/services/simple-notification-service/main.d.ts +38 -0
- package/dist/src/services/simple-notification-service/main.js +68 -0
- package/dist/src/services/simple-notification-service/types.d.ts +5 -0
- package/dist/src/services/simple-notification-service/types.js +1 -0
- package/dist/src/services/simple-queue-service/index.d.ts +2 -0
- package/dist/src/services/simple-queue-service/index.js +2 -0
- package/dist/src/services/simple-queue-service/main.d.ts +45 -0
- package/dist/src/services/simple-queue-service/main.js +101 -0
- package/dist/src/services/simple-queue-service/types.d.ts +15 -0
- package/dist/src/services/simple-queue-service/types.js +1 -0
- package/dist/src/services/simple-storage-service/index.d.ts +2 -0
- package/dist/src/services/simple-storage-service/index.js +2 -0
- package/dist/src/services/simple-storage-service/main.d.ts +79 -0
- package/dist/src/services/simple-storage-service/main.js +191 -0
- package/dist/src/services/simple-storage-service/types.d.ts +25 -0
- package/dist/src/services/simple-storage-service/types.js +1 -0
- package/dist/src/services/step-function/index.d.ts +2 -0
- package/dist/src/services/step-function/index.js +2 -0
- package/dist/src/services/step-function/main.d.ts +161 -0
- package/dist/src/services/step-function/main.js +380 -0
- package/dist/src/services/step-function/types.d.ts +88 -0
- package/dist/src/services/step-function/types.js +1 -0
- package/dist/src/services/systems-manager/index.d.ts +2 -0
- package/dist/src/services/systems-manager/index.js +2 -0
- package/dist/src/services/systems-manager/main.d.ts +55 -0
- package/dist/src/services/systems-manager/main.js +97 -0
- package/dist/src/services/systems-manager/types.d.ts +9 -0
- package/dist/src/services/systems-manager/types.js +1 -0
- package/dist/src/services/virtual-private-cloud/index.d.ts +2 -0
- package/dist/src/services/virtual-private-cloud/index.js +2 -0
- package/dist/src/services/virtual-private-cloud/ipv6.d.ts +7 -0
- package/dist/src/services/virtual-private-cloud/ipv6.js +38 -0
- package/dist/src/services/virtual-private-cloud/main.d.ts +43 -0
- package/dist/src/services/virtual-private-cloud/main.js +87 -0
- package/dist/src/services/virtual-private-cloud/types.d.ts +4 -0
- package/dist/src/services/virtual-private-cloud/types.js +1 -0
- package/dist/src/services/web-application-firewall/index.d.ts +2 -0
- package/dist/src/services/web-application-firewall/index.js +2 -0
- package/dist/src/services/web-application-firewall/main.d.ts +35 -0
- package/dist/src/services/web-application-firewall/main.js +61 -0
- package/dist/src/services/web-application-firewall/types.d.ts +9 -0
- package/dist/src/services/web-application-firewall/types.js +1 -0
- package/dist/src/types/index.d.ts +6 -0
- package/dist/src/types/index.js +1 -0
- package/dist/src/utils/index.d.ts +45 -0
- package/dist/src/utils/index.js +61 -0
- package/package.json +44 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Gradient Edge, https://github.com/gradientedge
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CfnOutput } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { AcmManager, ApiManager, AppConfigManager, CloudFrontManager, CloudTrailManager, CloudWatchManager, CodeBuildManager, DynamodbManager, EcrManager, EcsManager, EfsManager, EksManager, ElastiCacheManager, EventManager, EventTargetManager, EvidentlyManager, IamManager, KmsManager, LambdaManager, LogManager, Route53Manager, S3Manager, SecretsManager, SfnManager, SnsManager, SqsManager, SsmManager, VpcManager, WafManager } from '../services/index.js';
|
|
4
|
+
import { ResourceNameFormatter } from './resource-name-formatter.js';
|
|
5
|
+
import { CommonStackProps } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* @subcategory Construct
|
|
8
|
+
* @classdesc Common construct to use as a base for all higher level constructs.
|
|
9
|
+
* @example
|
|
10
|
+
* import { CommonConstruct } from '@gradientedge/cdk-utils';
|
|
11
|
+
*
|
|
12
|
+
* class CustomConstruct extends CommonConstruct {
|
|
13
|
+
* constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
|
|
14
|
+
* super(parent, id, props);
|
|
15
|
+
* this.props = props;
|
|
16
|
+
* };
|
|
17
|
+
* };
|
|
18
|
+
*/
|
|
19
|
+
export declare class CommonConstruct extends Construct {
|
|
20
|
+
props: CommonStackProps;
|
|
21
|
+
resourceNameFormatter: ResourceNameFormatter;
|
|
22
|
+
acmManager: AcmManager;
|
|
23
|
+
apiManager: ApiManager;
|
|
24
|
+
appConfigManager: AppConfigManager;
|
|
25
|
+
codeBuildManager: CodeBuildManager;
|
|
26
|
+
cloudFrontManager: CloudFrontManager;
|
|
27
|
+
cloudTrailManager: CloudTrailManager;
|
|
28
|
+
cloudWatchManager: CloudWatchManager;
|
|
29
|
+
dynamodbManager: DynamodbManager;
|
|
30
|
+
ecrManager: EcrManager;
|
|
31
|
+
ecsManager: EcsManager;
|
|
32
|
+
efsManager: EfsManager;
|
|
33
|
+
eksManager: EksManager;
|
|
34
|
+
elasticacheManager: ElastiCacheManager;
|
|
35
|
+
eventManager: EventManager;
|
|
36
|
+
eventTargetManager: EventTargetManager;
|
|
37
|
+
evidentlyManager: EvidentlyManager;
|
|
38
|
+
iamManager: IamManager;
|
|
39
|
+
kmsManager: KmsManager;
|
|
40
|
+
lambdaManager: LambdaManager;
|
|
41
|
+
logManager: LogManager;
|
|
42
|
+
route53Manager: Route53Manager;
|
|
43
|
+
s3Manager: S3Manager;
|
|
44
|
+
secretsManager: SecretsManager;
|
|
45
|
+
sfnManager: SfnManager;
|
|
46
|
+
snsManager: SnsManager;
|
|
47
|
+
sqsManager: SqsManager;
|
|
48
|
+
ssmManager: SsmManager;
|
|
49
|
+
vpcManager: VpcManager;
|
|
50
|
+
wafManager: WafManager;
|
|
51
|
+
fullyQualifiedDomainName: string;
|
|
52
|
+
constructor(parent: Construct, id: string, props: CommonStackProps);
|
|
53
|
+
/**
|
|
54
|
+
* @summary Helper method to add CloudFormation outputs from the construct
|
|
55
|
+
* @param id scoped id of the resource
|
|
56
|
+
* @param value the value of the exported output
|
|
57
|
+
* @param description optional description for the output
|
|
58
|
+
* @param overrideId Flag which indicates whether to override the default logical id of the output
|
|
59
|
+
*/
|
|
60
|
+
protected addCfnOutput(id: string, value: string, description?: string, overrideId?: boolean): CfnOutput;
|
|
61
|
+
/**
|
|
62
|
+
* @summary Determine the fully qualified domain name based on domainName & subDomain
|
|
63
|
+
*/
|
|
64
|
+
protected determineFullyQualifiedDomain(): void;
|
|
65
|
+
/**
|
|
66
|
+
* @summary Utility method to determine if the initialisation is in development (dev) stage
|
|
67
|
+
* This is determined by the stage property injected via cdk context
|
|
68
|
+
*/
|
|
69
|
+
isDevelopmentStage: () => boolean;
|
|
70
|
+
/**
|
|
71
|
+
* @summary Utility method to determine if the initialisation is in test (tst) stage
|
|
72
|
+
* This is determined by the stage property injected via cdk context
|
|
73
|
+
*/
|
|
74
|
+
isTestStage: () => boolean;
|
|
75
|
+
/**
|
|
76
|
+
* @summary Utility method to determine if the initialisation is in uat (uat) stage
|
|
77
|
+
* This is determined by the stage property injected via cdk context
|
|
78
|
+
*/
|
|
79
|
+
isUatStage: () => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* @summary Utility method to determine if the initialisation is in production (prd) stage
|
|
82
|
+
* This is determined by the stage property injected via cdk context
|
|
83
|
+
*/
|
|
84
|
+
isProductionStage: () => boolean;
|
|
85
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import { isDevStage, isPrdStage, isTestStage, isUatStage } from '@gradientedge/cdk-utils-common';
|
|
3
|
+
import { AcmManager, ApiManager, AppConfigManager, CloudFrontManager, CloudTrailManager, CloudWatchManager, CodeBuildManager, DynamodbManager, EcrManager, EcsManager, EfsManager, EksManager, ElastiCacheManager, EventManager, EventTargetManager, EvidentlyManager, IamManager, KmsManager, LambdaManager, LogManager, Route53Manager, S3Manager, SecretsManager, SfnManager, SnsManager, SqsManager, SsmManager, VpcManager, WafManager, } from '../services/index.js';
|
|
4
|
+
import { createCfnOutput } from '../utils/index.js';
|
|
5
|
+
import { ResourceNameFormatter } from './resource-name-formatter.js';
|
|
6
|
+
/**
|
|
7
|
+
* @subcategory Construct
|
|
8
|
+
* @classdesc Common construct to use as a base for all higher level constructs.
|
|
9
|
+
* @example
|
|
10
|
+
* import { CommonConstruct } from '@gradientedge/cdk-utils';
|
|
11
|
+
*
|
|
12
|
+
* class CustomConstruct extends CommonConstruct {
|
|
13
|
+
* constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
|
|
14
|
+
* super(parent, id, props);
|
|
15
|
+
* this.props = props;
|
|
16
|
+
* };
|
|
17
|
+
* };
|
|
18
|
+
*/
|
|
19
|
+
export class CommonConstruct extends Construct {
|
|
20
|
+
props;
|
|
21
|
+
resourceNameFormatter;
|
|
22
|
+
acmManager;
|
|
23
|
+
apiManager;
|
|
24
|
+
appConfigManager;
|
|
25
|
+
codeBuildManager;
|
|
26
|
+
cloudFrontManager;
|
|
27
|
+
cloudTrailManager;
|
|
28
|
+
cloudWatchManager;
|
|
29
|
+
dynamodbManager;
|
|
30
|
+
ecrManager;
|
|
31
|
+
ecsManager;
|
|
32
|
+
efsManager;
|
|
33
|
+
eksManager;
|
|
34
|
+
elasticacheManager;
|
|
35
|
+
eventManager;
|
|
36
|
+
eventTargetManager;
|
|
37
|
+
evidentlyManager;
|
|
38
|
+
iamManager;
|
|
39
|
+
kmsManager;
|
|
40
|
+
lambdaManager;
|
|
41
|
+
logManager;
|
|
42
|
+
route53Manager;
|
|
43
|
+
s3Manager;
|
|
44
|
+
secretsManager;
|
|
45
|
+
sfnManager;
|
|
46
|
+
snsManager;
|
|
47
|
+
sqsManager;
|
|
48
|
+
ssmManager;
|
|
49
|
+
vpcManager;
|
|
50
|
+
wafManager;
|
|
51
|
+
fullyQualifiedDomainName;
|
|
52
|
+
constructor(parent, id, props) {
|
|
53
|
+
super(parent, id);
|
|
54
|
+
this.props = props;
|
|
55
|
+
this.resourceNameFormatter = new ResourceNameFormatter(this, `${id}-rnf`, props);
|
|
56
|
+
this.acmManager = new AcmManager();
|
|
57
|
+
this.apiManager = new ApiManager();
|
|
58
|
+
this.appConfigManager = new AppConfigManager();
|
|
59
|
+
this.codeBuildManager = new CodeBuildManager();
|
|
60
|
+
this.cloudFrontManager = new CloudFrontManager();
|
|
61
|
+
this.cloudTrailManager = new CloudTrailManager();
|
|
62
|
+
this.cloudWatchManager = new CloudWatchManager();
|
|
63
|
+
this.dynamodbManager = new DynamodbManager();
|
|
64
|
+
this.ecrManager = new EcrManager();
|
|
65
|
+
this.ecsManager = new EcsManager();
|
|
66
|
+
this.efsManager = new EfsManager();
|
|
67
|
+
this.eksManager = new EksManager();
|
|
68
|
+
this.elasticacheManager = new ElastiCacheManager();
|
|
69
|
+
this.eventManager = new EventManager();
|
|
70
|
+
this.eventTargetManager = new EventTargetManager();
|
|
71
|
+
this.evidentlyManager = new EvidentlyManager();
|
|
72
|
+
this.iamManager = new IamManager();
|
|
73
|
+
this.kmsManager = new KmsManager();
|
|
74
|
+
this.lambdaManager = new LambdaManager();
|
|
75
|
+
this.logManager = new LogManager();
|
|
76
|
+
this.route53Manager = new Route53Manager();
|
|
77
|
+
this.s3Manager = new S3Manager();
|
|
78
|
+
this.secretsManager = new SecretsManager();
|
|
79
|
+
this.sfnManager = new SfnManager();
|
|
80
|
+
this.snsManager = new SnsManager();
|
|
81
|
+
this.sqsManager = new SqsManager();
|
|
82
|
+
this.ssmManager = new SsmManager();
|
|
83
|
+
this.vpcManager = new VpcManager();
|
|
84
|
+
this.wafManager = new WafManager();
|
|
85
|
+
this.determineFullyQualifiedDomain();
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @summary Helper method to add CloudFormation outputs from the construct
|
|
89
|
+
* @param id scoped id of the resource
|
|
90
|
+
* @param value the value of the exported output
|
|
91
|
+
* @param description optional description for the output
|
|
92
|
+
* @param overrideId Flag which indicates whether to override the default logical id of the output
|
|
93
|
+
*/
|
|
94
|
+
addCfnOutput(id, value, description, overrideId = true) {
|
|
95
|
+
return createCfnOutput(id, this, value, description, overrideId);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* @summary Determine the fully qualified domain name based on domainName & subDomain
|
|
99
|
+
*/
|
|
100
|
+
determineFullyQualifiedDomain() {
|
|
101
|
+
this.fullyQualifiedDomainName = this.props.subDomain
|
|
102
|
+
? `${this.props.subDomain}.${this.props.domainName}`
|
|
103
|
+
: this.props.domainName;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @summary Utility method to determine if the initialisation is in development (dev) stage
|
|
107
|
+
* This is determined by the stage property injected via cdk context
|
|
108
|
+
*/
|
|
109
|
+
isDevelopmentStage = () => isDevStage(this.props.stage);
|
|
110
|
+
/**
|
|
111
|
+
* @summary Utility method to determine if the initialisation is in test (tst) stage
|
|
112
|
+
* This is determined by the stage property injected via cdk context
|
|
113
|
+
*/
|
|
114
|
+
isTestStage = () => isTestStage(this.props.stage);
|
|
115
|
+
/**
|
|
116
|
+
* @summary Utility method to determine if the initialisation is in uat (uat) stage
|
|
117
|
+
* This is determined by the stage property injected via cdk context
|
|
118
|
+
*/
|
|
119
|
+
isUatStage = () => isUatStage(this.props.stage);
|
|
120
|
+
/**
|
|
121
|
+
* @summary Utility method to determine if the initialisation is in production (prd) stage
|
|
122
|
+
* This is determined by the stage property injected via cdk context
|
|
123
|
+
*/
|
|
124
|
+
isProductionStage = () => isPrdStage(this.props.stage);
|
|
125
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import { CommonStackProps, ResourceNameFormatterProps } from './types.js';
|
|
3
|
+
export declare class ResourceNameFormatter extends Construct {
|
|
4
|
+
props: CommonStackProps;
|
|
5
|
+
constructor(parent: Construct, id: string, props: CommonStackProps);
|
|
6
|
+
/**
|
|
7
|
+
* @summary Helper method to format a resource name based on the provided options
|
|
8
|
+
* @param resourceName the resource name to format
|
|
9
|
+
* @param options options to control the formatting of the resource name
|
|
10
|
+
* @returns The formatted resource name
|
|
11
|
+
*/
|
|
12
|
+
format(resourceName: string, options?: ResourceNameFormatterProps): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
export class ResourceNameFormatter extends Construct {
|
|
3
|
+
props;
|
|
4
|
+
constructor(parent, id, props) {
|
|
5
|
+
super(parent, id);
|
|
6
|
+
this.props = props;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @summary Helper method to format a resource name based on the provided options
|
|
10
|
+
* @param resourceName the resource name to format
|
|
11
|
+
* @param options options to control the formatting of the resource name
|
|
12
|
+
* @returns The formatted resource name
|
|
13
|
+
*/
|
|
14
|
+
format(resourceName, options) {
|
|
15
|
+
const elements = [];
|
|
16
|
+
if (!options?.exclude) {
|
|
17
|
+
if (options?.globalPrefix)
|
|
18
|
+
elements.push(this.props.globalPrefix);
|
|
19
|
+
elements.push(options?.prefix ?? this.props.resourcePrefix);
|
|
20
|
+
}
|
|
21
|
+
elements.push(resourceName);
|
|
22
|
+
if (!options?.exclude) {
|
|
23
|
+
elements.push(options?.suffix ?? this.props.resourceSuffix);
|
|
24
|
+
if (options?.globalSuffix)
|
|
25
|
+
elements.push(this.props.globalSuffix);
|
|
26
|
+
}
|
|
27
|
+
elements.push(this.props.stage);
|
|
28
|
+
return elements.filter(Boolean).join('-');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { Runtime } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import { CommonConstruct } from './construct.js';
|
|
4
|
+
import { CommonStackProps } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* @classdesc Common stack to use as a base for all higher level constructs.
|
|
7
|
+
* @example
|
|
8
|
+
* import { CommonStack } from '@gradientedge/cdk-utils'
|
|
9
|
+
*
|
|
10
|
+
* class CustomStack extends CommonStack {
|
|
11
|
+
* constructor(parent: App, name: string, props: StackProps) {
|
|
12
|
+
* super(parent, name, props)
|
|
13
|
+
* // provision resources
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
export declare class CommonStack extends Stack {
|
|
18
|
+
static NODEJS_RUNTIME: Runtime;
|
|
19
|
+
construct: CommonConstruct;
|
|
20
|
+
props: CommonStackProps;
|
|
21
|
+
constructor(parent: App, name: string, props: StackProps);
|
|
22
|
+
/**
|
|
23
|
+
* @summary Method to determine the core CDK construct properties injected via context cdk.json
|
|
24
|
+
* @param props The stack properties
|
|
25
|
+
* @returns The stack properties
|
|
26
|
+
*/
|
|
27
|
+
protected determineConstructProps(props: StackProps): {
|
|
28
|
+
domainName: any;
|
|
29
|
+
excludeDomainNameForBuckets: any;
|
|
30
|
+
excludeAccountNumberForBuckets: any;
|
|
31
|
+
extraContexts: any;
|
|
32
|
+
logRetention: any;
|
|
33
|
+
name: string;
|
|
34
|
+
nodejsRuntime: any;
|
|
35
|
+
region: any;
|
|
36
|
+
globalPrefix: any;
|
|
37
|
+
globalSuffix: any;
|
|
38
|
+
resourceNameOptions: any;
|
|
39
|
+
resourcePrefix: any;
|
|
40
|
+
resourceSuffix: any;
|
|
41
|
+
skipStageForARecords: any;
|
|
42
|
+
stackName: string | undefined;
|
|
43
|
+
stage: any;
|
|
44
|
+
subDomain: any;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @summary Method to determine extra cdk contexts apart from the main cdk.json
|
|
48
|
+
* - Sets the properties from the extra contexts into cdk node context
|
|
49
|
+
* - Primary use is to have layered config in separate files to enable easier maintenance and readability
|
|
50
|
+
*/
|
|
51
|
+
protected determineExtraContexts(): void;
|
|
52
|
+
/**
|
|
53
|
+
* @summary Method to determine extra cdk stage contexts apart from the main cdk.json
|
|
54
|
+
* - Sets the properties from the extra stage contexts into cdk node context
|
|
55
|
+
* - Primary use is to have layered config for each environment which is injected into the context
|
|
56
|
+
*/
|
|
57
|
+
protected determineStageContexts(): void;
|
|
58
|
+
/**
|
|
59
|
+
* @summary Determine the fully qualified domain name based on domainName & subDomain
|
|
60
|
+
*/
|
|
61
|
+
protected fullyQualifiedDomain(): any;
|
|
62
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Stack } from 'aws-cdk-lib';
|
|
2
|
+
import { Runtime } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { CommonConstruct } from './construct.js';
|
|
6
|
+
import appRoot from 'app-root-path';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import { isDevStage } from '@gradientedge/cdk-utils-common';
|
|
9
|
+
/**
|
|
10
|
+
* @classdesc Common stack to use as a base for all higher level constructs.
|
|
11
|
+
* @example
|
|
12
|
+
* import { CommonStack } from '@gradientedge/cdk-utils'
|
|
13
|
+
*
|
|
14
|
+
* class CustomStack extends CommonStack {
|
|
15
|
+
* constructor(parent: App, name: string, props: StackProps) {
|
|
16
|
+
* super(parent, name, props)
|
|
17
|
+
* // provision resources
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export class CommonStack extends Stack {
|
|
22
|
+
static NODEJS_RUNTIME = Runtime.NODEJS_24_X;
|
|
23
|
+
construct;
|
|
24
|
+
props;
|
|
25
|
+
constructor(parent, name, props) {
|
|
26
|
+
super(parent, name, props);
|
|
27
|
+
/* determine extra cdk contexts */
|
|
28
|
+
this.determineExtraContexts();
|
|
29
|
+
/* determine extra cdk stage contexts */
|
|
30
|
+
this.determineStageContexts();
|
|
31
|
+
this.props = this.determineConstructProps(props);
|
|
32
|
+
/* initialise the construct */
|
|
33
|
+
this.construct = new CommonConstruct(this, 'cdk-utils', this.props);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @summary Method to determine the core CDK construct properties injected via context cdk.json
|
|
37
|
+
* @param props The stack properties
|
|
38
|
+
* @returns The stack properties
|
|
39
|
+
*/
|
|
40
|
+
determineConstructProps(props) {
|
|
41
|
+
return {
|
|
42
|
+
domainName: this.node.tryGetContext('domainName'),
|
|
43
|
+
excludeDomainNameForBuckets: this.node.tryGetContext('excludeDomainNameForBuckets'),
|
|
44
|
+
excludeAccountNumberForBuckets: this.node.tryGetContext('excludeAccountNumberForBuckets'),
|
|
45
|
+
extraContexts: this.node.tryGetContext('extraContexts'),
|
|
46
|
+
logRetention: this.node.tryGetContext('logRetention'),
|
|
47
|
+
name: props.stackName || 'cdk-utils',
|
|
48
|
+
nodejsRuntime: this.node.tryGetContext('nodejsRuntime') ?? CommonStack.NODEJS_RUNTIME,
|
|
49
|
+
region: this.node.tryGetContext('region'),
|
|
50
|
+
globalPrefix: this.node.tryGetContext('globalPrefix'),
|
|
51
|
+
globalSuffix: this.node.tryGetContext('globalSuffix'),
|
|
52
|
+
resourceNameOptions: this.node.tryGetContext('resourceNameOptions'),
|
|
53
|
+
resourcePrefix: this.node.tryGetContext('resourcePrefix'),
|
|
54
|
+
resourceSuffix: this.node.tryGetContext('resourceSuffix'),
|
|
55
|
+
skipStageForARecords: this.node.tryGetContext('skipStageForARecords'),
|
|
56
|
+
stackName: props.stackName,
|
|
57
|
+
stage: this.node.tryGetContext('stage'),
|
|
58
|
+
subDomain: this.node.tryGetContext('subDomain'),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @summary Method to determine extra cdk contexts apart from the main cdk.json
|
|
63
|
+
* - Sets the properties from the extra contexts into cdk node context
|
|
64
|
+
* - Primary use is to have layered config in separate files to enable easier maintenance and readability
|
|
65
|
+
*/
|
|
66
|
+
determineExtraContexts() {
|
|
67
|
+
const extraContexts = this.node.tryGetContext('extraContexts');
|
|
68
|
+
const debug = this.node.tryGetContext('debug');
|
|
69
|
+
if (!extraContexts) {
|
|
70
|
+
if (debug)
|
|
71
|
+
console.debug(`No additional contexts provided. Using default context properties from cdk.json`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
_.forEach(extraContexts, (context) => {
|
|
75
|
+
const extraContextPath = path.join(appRoot.path, context);
|
|
76
|
+
/* scenario where extra context is configured in cdk.json but absent in file system */
|
|
77
|
+
if (!fs.existsSync(extraContextPath))
|
|
78
|
+
throw `Extra context properties unavailable in path:${extraContextPath}`;
|
|
79
|
+
/* read the extra properties */
|
|
80
|
+
const extraContextPropsBuffer = fs.readFileSync(extraContextPath);
|
|
81
|
+
if (debug)
|
|
82
|
+
console.debug(`Adding additional contexts provided in ${extraContextPath}`);
|
|
83
|
+
/* parse as JSON properties */
|
|
84
|
+
const extraContextProps = JSON.parse(extraContextPropsBuffer.toString('utf-8'));
|
|
85
|
+
/* set each of the property into the cdk node context */
|
|
86
|
+
_.keys(extraContextProps).forEach((propKey) => {
|
|
87
|
+
this.node.setContext(propKey, extraContextProps[propKey]);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @summary Method to determine extra cdk stage contexts apart from the main cdk.json
|
|
93
|
+
* - Sets the properties from the extra stage contexts into cdk node context
|
|
94
|
+
* - Primary use is to have layered config for each environment which is injected into the context
|
|
95
|
+
*/
|
|
96
|
+
determineStageContexts() {
|
|
97
|
+
const stage = this.node.tryGetContext('stage');
|
|
98
|
+
const stageContextPath = this.node.tryGetContext('stageContextPath') || 'cdkEnv';
|
|
99
|
+
const stageContextFilePath = path.join(appRoot.path, stageContextPath, `${stage}.json`);
|
|
100
|
+
const debug = this.node.tryGetContext('debug');
|
|
101
|
+
if (isDevStage(stage)) {
|
|
102
|
+
if (debug)
|
|
103
|
+
console.debug(`Development stage. Using default stage context properties`);
|
|
104
|
+
}
|
|
105
|
+
/* alert default context usage when extra stage config is missing */
|
|
106
|
+
if (!fs.existsSync(stageContextFilePath)) {
|
|
107
|
+
if (debug)
|
|
108
|
+
console.debug(`Stage specific context properties unavailable in path:${stageContextFilePath}`);
|
|
109
|
+
if (debug)
|
|
110
|
+
console.debug(`Using default stage context properties for ${stage} stage`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
/* read the extra properties */
|
|
114
|
+
const stageContextPropsBuffer = fs.readFileSync(stageContextFilePath);
|
|
115
|
+
if (debug)
|
|
116
|
+
console.debug(`Adding additional stage contexts provided in ${stageContextFilePath}`);
|
|
117
|
+
/* parse as JSON properties */
|
|
118
|
+
const stageContextProps = JSON.parse(stageContextPropsBuffer.toString('utf-8'));
|
|
119
|
+
/* set each of the property into the cdk node context */
|
|
120
|
+
_.keys(stageContextProps).forEach((propKey) => {
|
|
121
|
+
/* handle object, array properties */
|
|
122
|
+
if (typeof stageContextProps[propKey] === 'object' && !Array.isArray(stageContextProps[propKey])) {
|
|
123
|
+
this.node.setContext(propKey, _.merge(this.node.tryGetContext(propKey), stageContextProps[propKey]));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
/* handle all other primitive properties */
|
|
127
|
+
this.node.setContext(propKey, stageContextProps[propKey]);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @summary Determine the fully qualified domain name based on domainName & subDomain
|
|
133
|
+
*/
|
|
134
|
+
fullyQualifiedDomain() {
|
|
135
|
+
const domainName = this.node.tryGetContext('domainName');
|
|
136
|
+
const subDomain = this.node.tryGetContext('subDomain');
|
|
137
|
+
return subDomain ? `${subDomain}.${domainName}` : domainName;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { Runtime, Tracing } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import { RetentionDays } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
import { BaseProps } from '@gradientedge/cdk-utils-common';
|
|
5
|
+
/**
|
|
6
|
+
*/
|
|
7
|
+
export interface CommonStackProps extends BaseProps, StackProps {
|
|
8
|
+
region: string;
|
|
9
|
+
resourceProjectIdentifier?: string;
|
|
10
|
+
globalPrefix?: string;
|
|
11
|
+
globalSuffix?: string;
|
|
12
|
+
resourcePrefix?: string;
|
|
13
|
+
resourceSuffix?: string;
|
|
14
|
+
logRetention?: RetentionDays;
|
|
15
|
+
defaultReservedLambdaConcurrentExecutions?: number;
|
|
16
|
+
defaultTracing?: Tracing;
|
|
17
|
+
excludeDomainNameForBuckets?: boolean;
|
|
18
|
+
excludeAccountNumberForBuckets?: boolean;
|
|
19
|
+
nodejsRuntime?: Runtime;
|
|
20
|
+
resourceNameOptions?: {
|
|
21
|
+
[key: string]: ResourceNameFormatterProps;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface ResourceNameFormatterProps {
|
|
25
|
+
exclude?: boolean;
|
|
26
|
+
globalPrefix?: boolean;
|
|
27
|
+
globalSuffix?: boolean;
|
|
28
|
+
prefix?: string;
|
|
29
|
+
suffix?: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Resource } from 'aws-cdk-lib/aws-apigateway';
|
|
2
|
+
import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
import { CommonConstruct } from '../../common/index.js';
|
|
5
|
+
import { ApiToAnyTargetProps, ApiToAnyTargetRestApiResource, ApiToAnyTargetRestApiType } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* @classdesc Provides a construct to create and deploy a shallow API Gateway
|
|
8
|
+
* @example
|
|
9
|
+
* import { ApiToAnyTarget, ApiToAnyTargetProps } '@gradientedge/cdk-utils'
|
|
10
|
+
* import { Construct } from 'constructs'
|
|
11
|
+
*
|
|
12
|
+
* class CustomConstruct extends ApiToAnyTarget {
|
|
13
|
+
* constructor(parent: Construct, id: string, props: ApiToAnyTargetProps) {
|
|
14
|
+
* super(parent, id, props)
|
|
15
|
+
* this.props = props
|
|
16
|
+
* this.id = id
|
|
17
|
+
* this.initResources()
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export declare class ApiToAnyTarget extends CommonConstruct {
|
|
22
|
+
props: ApiToAnyTargetProps;
|
|
23
|
+
id: string;
|
|
24
|
+
applicationSecrets: ISecret[];
|
|
25
|
+
apiToAnyTargetRestApi: ApiToAnyTargetRestApiType;
|
|
26
|
+
apiResource: string;
|
|
27
|
+
constructor(parent: Construct, id: string, props: ApiToAnyTargetProps);
|
|
28
|
+
initResources(): void;
|
|
29
|
+
/**
|
|
30
|
+
* @summary Method to resolve secrets from SecretsManager
|
|
31
|
+
* - To be implemented in the overriding method in the implementation class
|
|
32
|
+
*/
|
|
33
|
+
protected resolveSecrets(): void;
|
|
34
|
+
/**
|
|
35
|
+
* @summary Method to resolve a hosted zone based on domain attributes
|
|
36
|
+
*/
|
|
37
|
+
protected resolveHostedZone(): void;
|
|
38
|
+
/**
|
|
39
|
+
* @summary Method to resolve a certificate based on attributes
|
|
40
|
+
*/
|
|
41
|
+
protected resolveCertificate(): void;
|
|
42
|
+
protected createApiToAnyTargetRestApi(): void;
|
|
43
|
+
protected createApiToAnyTargetResource(apiResourceProps: ApiToAnyTargetRestApiResource): Resource | undefined;
|
|
44
|
+
protected createApiDomain(): void;
|
|
45
|
+
protected createApiBasePathMapping(): void;
|
|
46
|
+
protected createApiRouteAssets(): void;
|
|
47
|
+
}
|