@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
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Fn, RemovalPolicy } from 'aws-cdk-lib';
|
|
2
|
+
import { AccessLogFormat, BasePathMapping, Cors, EndpointType, LogGroupLogDestination, MethodLoggingLevel, Resource, RestApi, } from 'aws-cdk-lib/aws-apigateway';
|
|
3
|
+
import { CommonConstruct } from '../../common/index.js';
|
|
4
|
+
import { ApiToAnyTargetRestApi } from './target.js';
|
|
5
|
+
/**
|
|
6
|
+
* @classdesc Provides a construct to create and deploy a shallow API Gateway
|
|
7
|
+
* @example
|
|
8
|
+
* import { ApiToAnyTarget, ApiToAnyTargetProps } '@gradientedge/cdk-utils'
|
|
9
|
+
* import { Construct } from 'constructs'
|
|
10
|
+
*
|
|
11
|
+
* class CustomConstruct extends ApiToAnyTarget {
|
|
12
|
+
* constructor(parent: Construct, id: string, props: ApiToAnyTargetProps) {
|
|
13
|
+
* super(parent, id, props)
|
|
14
|
+
* this.props = props
|
|
15
|
+
* this.id = id
|
|
16
|
+
* this.initResources()
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
export class ApiToAnyTarget extends CommonConstruct {
|
|
21
|
+
props;
|
|
22
|
+
id;
|
|
23
|
+
/* application related resources */
|
|
24
|
+
applicationSecrets;
|
|
25
|
+
/* rest restApi related resources */
|
|
26
|
+
apiToAnyTargetRestApi;
|
|
27
|
+
apiResource;
|
|
28
|
+
constructor(parent, id, props) {
|
|
29
|
+
super(parent, id, props);
|
|
30
|
+
this.props = props;
|
|
31
|
+
this.id = id;
|
|
32
|
+
this.apiToAnyTargetRestApi = new ApiToAnyTargetRestApi();
|
|
33
|
+
}
|
|
34
|
+
initResources() {
|
|
35
|
+
/* application related resources */
|
|
36
|
+
this.resolveSecrets();
|
|
37
|
+
/* core resources */
|
|
38
|
+
this.resolveHostedZone();
|
|
39
|
+
this.resolveCertificate();
|
|
40
|
+
/* restApi related resources */
|
|
41
|
+
this.createApiToAnyTargetRestApi();
|
|
42
|
+
this.createApiDomain();
|
|
43
|
+
this.createApiBasePathMapping();
|
|
44
|
+
this.createApiRouteAssets();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @summary Method to resolve secrets from SecretsManager
|
|
48
|
+
* - To be implemented in the overriding method in the implementation class
|
|
49
|
+
*/
|
|
50
|
+
resolveSecrets() {
|
|
51
|
+
this.applicationSecrets = [];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @summary Method to resolve a hosted zone based on domain attributes
|
|
55
|
+
*/
|
|
56
|
+
resolveHostedZone() {
|
|
57
|
+
this.apiToAnyTargetRestApi.hostedZone = this.route53Manager.withHostedZoneFromFullyQualifiedDomainName(`${this.id}-hosted-zone`, this, this.props.useExistingHostedZone);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @summary Method to resolve a certificate based on attributes
|
|
61
|
+
*/
|
|
62
|
+
resolveCertificate() {
|
|
63
|
+
if (this.props.api.useExisting)
|
|
64
|
+
return;
|
|
65
|
+
if (this.props.api.certificate.useExistingCertificate &&
|
|
66
|
+
this.props.api.certificate.certificateSsmName &&
|
|
67
|
+
this.props.api.certificate.certificateRegion) {
|
|
68
|
+
this.props.api.certificate.certificateArn = this.ssmManager.readStringParameterFromRegion(`${this.id}-certificate-param`, this, this.props.api.certificate.certificateSsmName, this.props.api.certificate.certificateRegion);
|
|
69
|
+
}
|
|
70
|
+
this.apiToAnyTargetRestApi.certificate = this.acmManager.resolveCertificate(`${this.id}-certificate`, this, this.props.api.certificate);
|
|
71
|
+
}
|
|
72
|
+
createApiToAnyTargetRestApi() {
|
|
73
|
+
if (this.props.api.useExisting && this.props.api.importedRestApiRef) {
|
|
74
|
+
this.apiToAnyTargetRestApi.api = RestApi.fromRestApiId(this, `${this.id}-rest-api`, Fn.importValue(this.props.api.importedRestApiRef));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (!this.props.api.restApi?.restApiName)
|
|
78
|
+
throw `RestApi name undefined for ${this.id}`;
|
|
79
|
+
const restApiName = this.resourceNameFormatter.format(this.props.api.restApi?.restApiName, this.props.resourceNameOptions?.apigateway);
|
|
80
|
+
const restApiAccessLogName = this.resourceNameFormatter.format(`${this.props.api.restApi?.restApiName}-access`, this.props.resourceNameOptions?.apigateway);
|
|
81
|
+
this.apiToAnyTargetRestApi.accessLogGroup = this.logManager.createLogGroup(`${this.id}-rest-api-access-log`, this, {
|
|
82
|
+
logGroupName: restApiAccessLogName,
|
|
83
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
84
|
+
});
|
|
85
|
+
this.apiToAnyTargetRestApi.api = new RestApi(this, `${this.id}-rest-api`, {
|
|
86
|
+
cloudWatchRole: this.props.api.restApi?.cloudWatchRole ?? true,
|
|
87
|
+
defaultCorsPreflightOptions: {
|
|
88
|
+
allowHeaders: Cors.DEFAULT_HEADERS,
|
|
89
|
+
allowMethods: Cors.ALL_METHODS,
|
|
90
|
+
allowOrigins: Cors.ALL_ORIGINS,
|
|
91
|
+
},
|
|
92
|
+
defaultIntegration: this.apiToAnyTargetRestApi.integration,
|
|
93
|
+
defaultMethodOptions: {
|
|
94
|
+
methodResponses: [this.apiToAnyTargetRestApi.methodResponse, this.apiToAnyTargetRestApi.methodErrorResponse],
|
|
95
|
+
},
|
|
96
|
+
deploy: this.props.api.restApi?.deploy ?? true,
|
|
97
|
+
deployOptions: {
|
|
98
|
+
accessLogDestination: new LogGroupLogDestination(this.apiToAnyTargetRestApi.accessLogGroup),
|
|
99
|
+
accessLogFormat: AccessLogFormat.jsonWithStandardFields(),
|
|
100
|
+
dataTraceEnabled: this.props.api.restApi?.deployOptions?.dataTraceEnabled,
|
|
101
|
+
description: `${this.id} - ${this.props.stage} stage`,
|
|
102
|
+
loggingLevel: MethodLoggingLevel.INFO,
|
|
103
|
+
metricsEnabled: true,
|
|
104
|
+
stageName: this.props.stage,
|
|
105
|
+
tracingEnabled: this.props.api.restApi?.deployOptions?.tracingEnabled,
|
|
106
|
+
},
|
|
107
|
+
endpointConfiguration: {
|
|
108
|
+
types: [this.isProductionStage() ? EndpointType.EDGE : EndpointType.REGIONAL],
|
|
109
|
+
},
|
|
110
|
+
...this.props.api.restApi,
|
|
111
|
+
restApiName,
|
|
112
|
+
});
|
|
113
|
+
this.addCfnOutput(`${this.id}-restApiId`, this.apiToAnyTargetRestApi.api.restApiId);
|
|
114
|
+
this.addCfnOutput(`${this.id}-restApiRootResourceId`, this.apiToAnyTargetRestApi.api.root.resourceId);
|
|
115
|
+
}
|
|
116
|
+
createApiToAnyTargetResource(apiResourceProps) {
|
|
117
|
+
if (!this.props.api.withResource)
|
|
118
|
+
return;
|
|
119
|
+
let rootResource;
|
|
120
|
+
if (this.props.api.withResource && this.props.api.importedRestApiRootResourceRef) {
|
|
121
|
+
rootResource = Resource.fromResourceAttributes(this, `${this.id}-root-resource-for-${apiResourceProps.path}`, {
|
|
122
|
+
path: '/',
|
|
123
|
+
resourceId: Fn.importValue(this.props.api.importedRestApiRootResourceRef),
|
|
124
|
+
restApi: this.apiToAnyTargetRestApi.api,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
rootResource = this.apiToAnyTargetRestApi.api.root;
|
|
129
|
+
}
|
|
130
|
+
return this.apiManager.createApiResource(`${this.id}-resource-${apiResourceProps.path}}`, this, apiResourceProps.parent ?? rootResource, apiResourceProps.path, apiResourceProps.integration, apiResourceProps.addProxy, apiResourceProps.authorizer, apiResourceProps.allowedOrigins, apiResourceProps.allowedMethods, apiResourceProps.allowedHeaders, apiResourceProps.methodRequestParameters, apiResourceProps.proxyIntegration, apiResourceProps.enableDefaultCors, apiResourceProps.mockIntegration, apiResourceProps.mockMethodResponses);
|
|
131
|
+
}
|
|
132
|
+
createApiDomain() {
|
|
133
|
+
if (this.props.api.useExisting)
|
|
134
|
+
return;
|
|
135
|
+
this.apiToAnyTargetRestApi.domain = this.apiManager.createApiDomain(`${this.id}-api-domain`, this, this.isProductionStage() || this.props.skipStageForARecords
|
|
136
|
+
? `${this.props.apiSubDomain}.${this.fullyQualifiedDomainName}`
|
|
137
|
+
: `${this.props.apiSubDomain}-${this.props.stage}.${this.fullyQualifiedDomainName}`, this.apiToAnyTargetRestApi.certificate);
|
|
138
|
+
}
|
|
139
|
+
createApiBasePathMapping() {
|
|
140
|
+
if (this.props.api.useExisting)
|
|
141
|
+
return;
|
|
142
|
+
new BasePathMapping(this, `${this.id}-base-bath-mapping`, {
|
|
143
|
+
basePath: '',
|
|
144
|
+
domainName: this.apiToAnyTargetRestApi.domain,
|
|
145
|
+
restApi: this.apiToAnyTargetRestApi.api,
|
|
146
|
+
stage: this.apiToAnyTargetRestApi.api.deploymentStage,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
createApiRouteAssets() {
|
|
150
|
+
if (this.props.api.useExisting)
|
|
151
|
+
return;
|
|
152
|
+
this.route53Manager.createApiGatewayARecord(`${this.id}-custom-domain-a-record`, this, this.props.apiSubDomain, this.apiToAnyTargetRestApi.domain, this.apiToAnyTargetRestApi.hostedZone, this.props.skipStageForARecords);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IRestApi, IAuthorizer, BasePathMapping, DomainName, Integration, Method, MethodResponse, Resource } from 'aws-cdk-lib/aws-apigateway';
|
|
2
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
import { IHostedZone } from 'aws-cdk-lib/aws-route53';
|
|
5
|
+
import { ApiToAnyTargetRestApiType } from './types.js';
|
|
6
|
+
export declare class ApiToAnyTargetRestApi implements ApiToAnyTargetRestApiType {
|
|
7
|
+
accessLogGroup: LogGroup;
|
|
8
|
+
api: IRestApi;
|
|
9
|
+
authoriser?: IAuthorizer;
|
|
10
|
+
basePathMappings: BasePathMapping[];
|
|
11
|
+
certificate: ICertificate;
|
|
12
|
+
domain: DomainName;
|
|
13
|
+
hostedZone: IHostedZone;
|
|
14
|
+
integration: Integration;
|
|
15
|
+
method: {
|
|
16
|
+
[httpMethod: string]: Method;
|
|
17
|
+
};
|
|
18
|
+
methodErrorResponse: MethodResponse;
|
|
19
|
+
methodResponse: MethodResponse;
|
|
20
|
+
resource: {
|
|
21
|
+
[path: string]: Resource;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BasePathMapping, DomainName, IAuthorizer, IResource, IRestApi, Integration, Method, MethodResponse, MockIntegration, Resource } from 'aws-cdk-lib/aws-apigateway';
|
|
2
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
import { IHostedZone } from 'aws-cdk-lib/aws-route53';
|
|
5
|
+
import { CommonStackProps } from '../../common/index.js';
|
|
6
|
+
import { AcmProps, RestApigProps } from '../../services/index.js';
|
|
7
|
+
export interface ApiToAnyTargetRestApiType {
|
|
8
|
+
accessLogGroup: LogGroup;
|
|
9
|
+
api: IRestApi;
|
|
10
|
+
authoriser?: IAuthorizer;
|
|
11
|
+
basePathMappings: BasePathMapping[];
|
|
12
|
+
certificate: ICertificate;
|
|
13
|
+
domain: DomainName;
|
|
14
|
+
hostedZone: IHostedZone;
|
|
15
|
+
integration: Integration;
|
|
16
|
+
method: {
|
|
17
|
+
[httpMethod: string]: Method;
|
|
18
|
+
};
|
|
19
|
+
methodErrorResponse: MethodResponse;
|
|
20
|
+
methodResponse: MethodResponse;
|
|
21
|
+
resource: {
|
|
22
|
+
[path: string]: Resource;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface ApiToAnyTargetRestApiResource {
|
|
26
|
+
addProxy: boolean;
|
|
27
|
+
authorizer?: IAuthorizer;
|
|
28
|
+
allowedOrigins?: string[];
|
|
29
|
+
allowedMethods?: string[];
|
|
30
|
+
allowedHeaders?: string[];
|
|
31
|
+
integration: Integration;
|
|
32
|
+
methodRequestParameters?: {
|
|
33
|
+
[param: string]: boolean;
|
|
34
|
+
};
|
|
35
|
+
path: string;
|
|
36
|
+
parent?: IResource;
|
|
37
|
+
proxyIntegration?: Integration;
|
|
38
|
+
enableDefaultCors?: boolean;
|
|
39
|
+
mockIntegration?: MockIntegration;
|
|
40
|
+
mockMethodResponses?: MethodResponse[];
|
|
41
|
+
}
|
|
42
|
+
export interface ApiToAnyTargetRestApiProps {
|
|
43
|
+
certificate: AcmProps;
|
|
44
|
+
importedRestApiRef?: string;
|
|
45
|
+
importedRestApiRootResourceRef?: string;
|
|
46
|
+
methodErrorResponse: MethodResponse;
|
|
47
|
+
methodResponse: MethodResponse;
|
|
48
|
+
restApi: RestApigProps;
|
|
49
|
+
useExisting: boolean;
|
|
50
|
+
withResource?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface ApiToAnyTargetProps extends CommonStackProps {
|
|
53
|
+
api: ApiToAnyTargetRestApiProps;
|
|
54
|
+
apiRootPaths?: string[];
|
|
55
|
+
apiSubDomain: string;
|
|
56
|
+
logLevel: string;
|
|
57
|
+
nodeEnv: string;
|
|
58
|
+
timezone: string;
|
|
59
|
+
useExistingHostedZone: boolean;
|
|
60
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DomainName, Integration, IntegrationResponse, Method, MethodResponse, Model, Resource, RestApi } from 'aws-cdk-lib/aws-apigateway';
|
|
2
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3
|
+
import { Role } from 'aws-cdk-lib/aws-iam';
|
|
4
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
5
|
+
import { IHostedZone } from 'aws-cdk-lib/aws-route53';
|
|
6
|
+
import { Topic } from 'aws-cdk-lib/aws-sns';
|
|
7
|
+
import { ApiToEventBridgeTargetRestApiType } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* @classdesc Provides a construct to contain api resources for ApiToEventBridgeTargetWithSns
|
|
10
|
+
*/
|
|
11
|
+
export declare class ApiToEventbridgeTargetRestApi implements ApiToEventBridgeTargetRestApiType {
|
|
12
|
+
accessLogGroup: LogGroup;
|
|
13
|
+
api: RestApi;
|
|
14
|
+
certificate: ICertificate;
|
|
15
|
+
domain: DomainName;
|
|
16
|
+
errorResponseModel: Model;
|
|
17
|
+
hostedZone: IHostedZone;
|
|
18
|
+
integration: Integration;
|
|
19
|
+
integrationErrorResponse: IntegrationResponse;
|
|
20
|
+
integrationRequestParameters: {
|
|
21
|
+
[p: string]: string;
|
|
22
|
+
};
|
|
23
|
+
integrationRequestTemplates: {
|
|
24
|
+
[p: string]: string;
|
|
25
|
+
};
|
|
26
|
+
integrationResponse: IntegrationResponse;
|
|
27
|
+
method: Method;
|
|
28
|
+
methodErrorResponse: MethodResponse;
|
|
29
|
+
methodResponse: MethodResponse;
|
|
30
|
+
resource: Resource;
|
|
31
|
+
responseModel: Model;
|
|
32
|
+
topic: Topic;
|
|
33
|
+
role: Role;
|
|
34
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @classdesc Provides a construct to contain api resources for ApiToEventBridgeTargetWithSns
|
|
3
|
+
*/
|
|
4
|
+
export class ApiToEventbridgeTargetRestApi {
|
|
5
|
+
accessLogGroup;
|
|
6
|
+
api;
|
|
7
|
+
certificate;
|
|
8
|
+
domain;
|
|
9
|
+
errorResponseModel;
|
|
10
|
+
hostedZone;
|
|
11
|
+
integration;
|
|
12
|
+
integrationErrorResponse;
|
|
13
|
+
integrationRequestParameters;
|
|
14
|
+
integrationRequestTemplates;
|
|
15
|
+
integrationResponse;
|
|
16
|
+
method;
|
|
17
|
+
methodErrorResponse;
|
|
18
|
+
methodResponse;
|
|
19
|
+
resource;
|
|
20
|
+
responseModel;
|
|
21
|
+
topic;
|
|
22
|
+
role;
|
|
23
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IEventBus, Rule } from 'aws-cdk-lib/aws-events';
|
|
2
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
3
|
+
import { ApiToEventBridgeTargetEventType } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* @classdesc Provides a construct to contain event resources for ApiToEventBridgeTargetWithSns
|
|
6
|
+
*/
|
|
7
|
+
export declare class ApiToEventbridgeTargetEvent implements ApiToEventBridgeTargetEventType {
|
|
8
|
+
eventBus: IEventBus;
|
|
9
|
+
logGroup: LogGroup;
|
|
10
|
+
logGroupFailure: LogGroup;
|
|
11
|
+
logGroupSuccess: LogGroup;
|
|
12
|
+
rule: Rule;
|
|
13
|
+
ruleFailure: Rule;
|
|
14
|
+
ruleSuccess: Rule;
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @classdesc Provides a construct to contain event resources for ApiToEventBridgeTargetWithSns
|
|
3
|
+
*/
|
|
4
|
+
export class ApiToEventbridgeTargetEvent {
|
|
5
|
+
eventBus;
|
|
6
|
+
logGroup;
|
|
7
|
+
logGroupFailure;
|
|
8
|
+
logGroupSuccess;
|
|
9
|
+
rule;
|
|
10
|
+
ruleFailure;
|
|
11
|
+
ruleSuccess;
|
|
12
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { CommonConstruct } from '../../common/index.js';
|
|
4
|
+
import { ApiToEventBridgeTargetEventType, ApiToEventBridgeTargetProps, ApiToEventBridgeTargetRestApiType } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* @classdesc Provides a construct to create and deploy API Gateway invocations to EventBridge
|
|
7
|
+
*
|
|
8
|
+
* <b>Architecture</b><br/> 
|
|
9
|
+
* @example
|
|
10
|
+
* import { ApiToEventBridgeTarget, ApiToEventBridgeTargetProps } '@gradientedge/cdk-utils'
|
|
11
|
+
* import { Construct } from 'constructs'
|
|
12
|
+
*
|
|
13
|
+
* class CustomConstruct extends ApiToEventBridgeTarget {
|
|
14
|
+
* constructor(parent: Construct, id: string, props: ApiToEventBridgeTargetProps) {
|
|
15
|
+
* super(parent, id, props)
|
|
16
|
+
* this.props = props
|
|
17
|
+
* this.id = id
|
|
18
|
+
* this.initResources()
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export declare class ApiToEventBridgeTarget extends CommonConstruct {
|
|
23
|
+
props: ApiToEventBridgeTargetProps;
|
|
24
|
+
id: string;
|
|
25
|
+
applicationSecrets: ISecret[];
|
|
26
|
+
apiEvent: ApiToEventBridgeTargetEventType;
|
|
27
|
+
apiToEventBridgeTargetRestApi: ApiToEventBridgeTargetRestApiType;
|
|
28
|
+
apiResource: string;
|
|
29
|
+
constructor(parent: Construct, id: string, props: ApiToEventBridgeTargetProps);
|
|
30
|
+
initResources(): void;
|
|
31
|
+
/**
|
|
32
|
+
* @summary Method to resolve secrets from SecretsManager
|
|
33
|
+
* - To be implemented in the overriding method in the implementation class
|
|
34
|
+
*/
|
|
35
|
+
protected resolveSecrets(): void;
|
|
36
|
+
/**
|
|
37
|
+
* @summary Method to resolve a hosted zone based on domain attributes
|
|
38
|
+
*/
|
|
39
|
+
protected resolveHostedZone(): void;
|
|
40
|
+
/**
|
|
41
|
+
* @summary Method to resolve a certificate based on attributes
|
|
42
|
+
*/
|
|
43
|
+
protected resolveCertificate(): void;
|
|
44
|
+
/**
|
|
45
|
+
* @summary Method to create or use an existing event bus for api payload deliveries
|
|
46
|
+
*/
|
|
47
|
+
protected createApiToEventBridgeTargetEventBus(): void;
|
|
48
|
+
/**
|
|
49
|
+
* @summary Method to create a log group for successful api payload deliveries
|
|
50
|
+
*/
|
|
51
|
+
protected createApiToEventBridgeTargetLogGroup(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Method to create EventBridge rule with lambda target for success
|
|
54
|
+
*/
|
|
55
|
+
protected createApiToEventBridgeTargetRule(): void;
|
|
56
|
+
protected createApiToEventBridgeTargetPolicy(): void;
|
|
57
|
+
/**
|
|
58
|
+
* @summary Method to create a role for api integration
|
|
59
|
+
*/
|
|
60
|
+
protected createApiToEventBridgeTargetRole(): void;
|
|
61
|
+
/**
|
|
62
|
+
* @summary Method to create api integration request parameters
|
|
63
|
+
*/
|
|
64
|
+
protected createApiToEventBridgeTargetIntegrationRequestParameters(): void;
|
|
65
|
+
/**
|
|
66
|
+
* @summary Method to create api integration request templates
|
|
67
|
+
*/
|
|
68
|
+
protected createApiToEventBridgeTargetIntegrationRequestTemplates(): void;
|
|
69
|
+
/**
|
|
70
|
+
* @summary Method to create api integration response
|
|
71
|
+
*/
|
|
72
|
+
protected createApiToEventBridgeTargetIntegrationResponse(): void;
|
|
73
|
+
/**
|
|
74
|
+
* @summary Method to create api integration error response
|
|
75
|
+
*/
|
|
76
|
+
protected createApiToEventBridgeTargetIntegrationErrorResponse(): void;
|
|
77
|
+
/**
|
|
78
|
+
* @summary Method to create api integration
|
|
79
|
+
*/
|
|
80
|
+
protected createApiToEventBridgeTargetIntegration(): void;
|
|
81
|
+
/**
|
|
82
|
+
* @summary Method to create api integration method response
|
|
83
|
+
*/
|
|
84
|
+
protected createApiToEventBridgeTargetMethodResponse(): void;
|
|
85
|
+
/**
|
|
86
|
+
* @summary Method to create api integration method error response
|
|
87
|
+
*/
|
|
88
|
+
protected createApiToEventBridgeTargetMethodErrorResponse(): void;
|
|
89
|
+
/**
|
|
90
|
+
* @summary Method to create rest restApi for Api
|
|
91
|
+
*/
|
|
92
|
+
protected createApiToEventBridgeTargetRestApi(): void;
|
|
93
|
+
/**
|
|
94
|
+
* @summary Method to create api integration response model
|
|
95
|
+
*/
|
|
96
|
+
protected createApiToEventBridgeTargetResponseModel(): void;
|
|
97
|
+
/**
|
|
98
|
+
* @summary Method to create api integration error response model
|
|
99
|
+
*/
|
|
100
|
+
protected createApiToEventBridgeTargetErrorResponseModel(): void;
|
|
101
|
+
/**
|
|
102
|
+
* @summary Method to create api integration resource
|
|
103
|
+
*/
|
|
104
|
+
protected createApiToEventBridgeTargetResource(): void;
|
|
105
|
+
/**
|
|
106
|
+
* @summary Method to create api integration resource method
|
|
107
|
+
*/
|
|
108
|
+
protected createApiToEventBridgeTargetResourceMethod(): void;
|
|
109
|
+
/**
|
|
110
|
+
* @summary Method to create custom restApi domain for Api
|
|
111
|
+
*/
|
|
112
|
+
protected createApiDomain(): void;
|
|
113
|
+
/**
|
|
114
|
+
* @summary Method to create base path mappings for Api
|
|
115
|
+
*/
|
|
116
|
+
protected createApiBasePathMapping(): void;
|
|
117
|
+
/**
|
|
118
|
+
* @summary Method to create route53 records for Api
|
|
119
|
+
*/
|
|
120
|
+
protected createApiRouteAssets(): void;
|
|
121
|
+
}
|